diff options
author | Alon Zakai <alonzakai@gmail.com> | 2012-10-22 15:30:03 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2012-10-22 15:30:03 -0700 |
commit | e48db465e2a2f13b2e9c4797d3334fc6d2b29b6d (patch) | |
tree | 79937100322df639de1bc78b3f1d3dd25871650c /src/postamble.js | |
parent | 11a4926fc6c2bfe43fef3c66ad30e4b2df612616 (diff) |
initial work on worker api
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 + |