aboutsummaryrefslogtreecommitdiff
path: root/src/library_browser.js
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2012-07-20 16:16:16 -0700
committerAlon Zakai <alonzakai@gmail.com>2012-07-20 16:16:16 -0700
commitf2273cc4c24954dd28638a710e144913f1b91d90 (patch)
treedc860b8b5790b8a5b2900776cd58d386a51c3b6d /src/library_browser.js
parenta4d8b7c20f255fa4218a641ea50cbfd327b055b8 (diff)
better main loop blockers progress reporting
Diffstat (limited to 'src/library_browser.js')
-rw-r--r--src/library_browser.js22
1 files changed, 20 insertions, 2 deletions
diff --git a/src/library_browser.js b/src/library_browser.js
index 5461e663..b9570683 100644
--- a/src/library_browser.js
+++ b/src/library_browser.js
@@ -23,6 +23,19 @@ mergeInto(LibraryManager.library, {
}
Browser.mainLoop.shouldPause = false;
},
+ 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 + ')');
+ } else {
+ Module['setStatus']('Please wait..');
+ }
+ } else {
+ Module['setStatus']('');
+ }
+ }
+ }
},
pointerLock: false,
moduleContextCreatedCallbacks: [],
@@ -251,7 +264,7 @@ mergeInto(LibraryManager.library, {
var wrapper = function() {
if (Browser.mainLoop.queue.length > 0) {
Browser.mainLoop.queue.shift()();
- if (Browser.mainLoop.queue.length == 0 && Module['setStatus']) Module['setStatus']('');
+ Browser.mainLoop.updateStatus();
setTimeout(wrapper, 0);
return;
}
@@ -296,8 +309,13 @@ mergeInto(LibraryManager.library, {
},
emscripten_push_main_loop_blocker: function(func) {
- if (Module['setStatus']) Module['setStatus']('Please wait..');
Browser.mainLoop.queue.push(FUNCTION_TABLE[func]);
+ Browser.mainLoop.updateStatus();
+ },
+
+ emscripten_set_main_loop_blockers_num: function(num) {
+ Browser.mainLoop.blockersNum = num;
+ Browser.mainLoop.updateStatus();
},
emscripten_async_call: function(func, millis) {