diff options
-rw-r--r-- | src/library_browser.js | 16 | ||||
-rw-r--r-- | system/include/emscripten/emscripten.h | 6 |
2 files changed, 16 insertions, 6 deletions
diff --git a/src/library_browser.js b/src/library_browser.js index b9570683..2b8ffc1d 100644 --- a/src/library_browser.js +++ b/src/library_browser.js @@ -25,9 +25,11 @@ mergeInto(LibraryManager.library, { }, updateStatus: function() { if (Module['setStatus']) { - if (Browser.mainLoop.queue.length > 0) { - if (Browser.mainLoop.blockersNum && Browser.mainLoop.blockersNum >= Browser.mainLoop.queue.length) { - Module['setStatus']('Please wait.. (' + Browser.mainLoop.queue.length + '/' + Browser.mainLoop.blockersNum + ')'); + var remaining = Browser.mainLoop.remainingBlockers; + var expected = Browser.mainLoop.expectedBlockers; + if (remaining) { + if (remaining < expected) { + Module['setStatus']('Please wait.. (' + remaining + '/' + expected + ')'); } else { Module['setStatus']('Please wait..'); } @@ -263,7 +265,10 @@ mergeInto(LibraryManager.library, { var jsFunc = FUNCTION_TABLE[func]; var wrapper = function() { if (Browser.mainLoop.queue.length > 0) { + var start = Date.now(); Browser.mainLoop.queue.shift()(); + console.log('main loop blocker took ' + (Date.now() - start) + ' ms'); + if (Browser.mainLoop.remainingBlockers) Browser.mainLoop.remainingBlockers--; Browser.mainLoop.updateStatus(); setTimeout(wrapper, 0); return; @@ -313,8 +318,9 @@ mergeInto(LibraryManager.library, { Browser.mainLoop.updateStatus(); }, - emscripten_set_main_loop_blockers_num: function(num) { - Browser.mainLoop.blockersNum = num; + emscripten_set_main_loop_expected_blockers: function(num) { + Browser.mainLoop.expectedBlockers = num; + Browser.mainLoop.remainingBlockers = num; Browser.mainLoop.updateStatus(); }, diff --git a/system/include/emscripten/emscripten.h b/system/include/emscripten/emscripten.h index 2e26bc6d..900fce2e 100644 --- a/system/include/emscripten/emscripten.h +++ b/system/include/emscripten/emscripten.h @@ -66,7 +66,11 @@ inline void emscripten_push_main_loop_blocker(void (*func)()) { * to 10, then push 10 blockers, as they complete the user will * see x/10 and so forth. */ -extern void emscripten_set_main_loop_blockers_num(void (*func)()); +#if EMSCRIPTEN +extern void emscripten_set_main_loop_expected_blockers(int num); +#else +inline void emscripten_set_main_loop_expected_blockers(int num) {} +#endif /* * Call a C function asynchronously, that is, after returning |