aboutsummaryrefslogtreecommitdiff
path: root/src/postamble.js
diff options
context:
space:
mode:
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
+