diff options
Diffstat (limited to 'src/postamble.js')
-rw-r--r-- | src/postamble.js | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/postamble.js b/src/postamble.js index d164f049..86c990e8 100644 --- a/src/postamble.js +++ b/src/postamble.js @@ -113,3 +113,29 @@ if (shouldRunNow) { // {{POST_RUN_ADDITIONS}} +#if BUILD_AS_WORKER + +var buffer = 0, bufferSize = 0; +var inWorkerCall = false, workerResponded = false, workerCallbackId = -1; + +onmessage = function(msg) { + var func = Module['_' + msg.data.funcName]; + if (!func) throw 'invalid worker function to call: ' + msg.data.funcName; + var data = msg.data.data; + if (!data.byteLength) data = new Uint8Array(data); + if (!buffer || bufferSize < data.length) { + if (buffer) _free(buffer); + bufferSize = data.length; + buffer = _malloc(data.length); + } + HEAPU8.set(data, buffer); + + inWorkerCall = true; + workerResponded = false; + workerCallbackId = msg.data.callbackId; + func(buffer, data.length); + inWorkerCall = false; +} + +#endif + |