aboutsummaryrefslogtreecommitdiff
path: root/src/library_browser.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/library_browser.js')
-rw-r--r--src/library_browser.js16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/library_browser.js b/src/library_browser.js
index 075bd8bf..4c26037e 100644
--- a/src/library_browser.js
+++ b/src/library_browser.js
@@ -12,6 +12,7 @@ mergeInto(LibraryManager.library, {
scheduler: null,
shouldPause: false,
paused: false,
+ queue: [],
pause: function() {
Browser.mainLoop.shouldPause = true;
},
@@ -220,6 +221,11 @@ mergeInto(LibraryManager.library, {
var jsFunc = FUNCTION_TABLE[func];
var wrapper = function() {
+ if (Browser.mainLoop.queue.length > 0) {
+ Browser.mainLoop.queue.shift()();
+ Browser.mainLoop.scheduler();
+ return;
+ }
if (Browser.mainLoop.shouldPause) {
// catch pauses from non-main loop sources
Browser.mainLoop.paused = true;
@@ -247,19 +253,23 @@ mergeInto(LibraryManager.library, {
Browser.mainLoop.scheduler();
},
- emscripten_cancel_main_loop: function(func) {
+ emscripten_cancel_main_loop: function() {
Browser.mainLoop.scheduler = null;
Browser.mainLoop.shouldPause = true;
},
- emscripten_pause_main_loop: function(func) {
+ emscripten_pause_main_loop: function() {
Browser.mainLoop.pause();
},
- emscripten_resume_main_loop: function(func) {
+ emscripten_resume_main_loop: function() {
Browser.mainLoop.resume();
},
+ emscripten_push_main_loop_blocker: function(func) {
+ Browser.mainLoop.queue.push(FUNCTION_TABLE[func]);
+ },
+
emscripten_async_call: function(func, millis) {
Module['noExitRuntime'] = true;