aboutsummaryrefslogtreecommitdiff
path: root/src/postamble.js
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2012-10-22 15:30:03 -0700
committerAlon Zakai <alonzakai@gmail.com>2012-10-22 15:30:03 -0700
commite48db465e2a2f13b2e9c4797d3334fc6d2b29b6d (patch)
tree79937100322df639de1bc78b3f1d3dd25871650c /src/postamble.js
parent11a4926fc6c2bfe43fef3c66ad30e4b2df612616 (diff)
initial work on worker api
Diffstat (limited to 'src/postamble.js')
-rw-r--r--src/postamble.js26
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
+