| var workerResponded = false, workerCallbackId = -1; |
|
|
| (() => { |
| var messageBuffer = null, buffer = 0; |
|
|
| function flushMessages() { |
| if (!messageBuffer) return; |
| if (runtimeInitialized) { |
| var temp = messageBuffer; |
| messageBuffer = null; |
| temp.forEach((message) => onmessage(message)); |
| } |
| } |
|
|
| function messageResender() { |
| flushMessages(); |
| if (messageBuffer) { |
| setTimeout(messageResender, 100); |
| } |
| } |
|
|
| onmessage = (msg) => { |
| |
| if (!runtimeInitialized) { |
| if (!messageBuffer) { |
| messageBuffer = []; |
| setTimeout(messageResender, 100); |
| } |
| messageBuffer.push(msg); |
| return; |
| } |
| flushMessages(); |
|
|
| var func = Module['_' + msg.data['funcName']]; |
| if (!func) abort('invalid worker function to call: ' + msg.data['funcName']); |
| var data = msg.data['data']; |
| if (data) { |
| if (!data.byteLength) data = new Uint8Array(data); |
| buffer = _realloc(buffer, data.length); |
| HEAPU8.set(data, buffer); |
| } |
|
|
| workerResponded = false; |
| workerCallbackId = msg.data['callbackId']; |
| if (data) { |
| func(buffer, data.length); |
| } else { |
| func(0, 0); |
| } |
| } |
| })(); |
|
|