diff options
Diffstat (limited to 'src/library_browser.js')
-rw-r--r-- | src/library_browser.js | 36 |
1 files changed, 18 insertions, 18 deletions
diff --git a/src/library_browser.js b/src/library_browser.js index 57ca5a24..8e86371e 100644 --- a/src/library_browser.js +++ b/src/library_browser.js @@ -41,6 +41,21 @@ mergeInto(LibraryManager.library, { Module['setStatus'](''); } } + }, + runIter: function(func) { + if (ABORT) return; + if (Module['preMainLoop']) Module['preMainLoop'](); + try { + func(); + } catch (e) { + if (e instanceof ExitStatus) { + return; + } else { + if (e && typeof e === 'object' && e.stack) Module.printErr('exception thrown: ' + [e, e.stack]); + throw e; + } + } + if (Module['postMainLoop']) Module['postMainLoop'](); } }, isFullScreen: false, @@ -405,7 +420,7 @@ mergeInto(LibraryManager.library, { window['webkitRequestAnimationFrame'] || window['msRequestAnimationFrame'] || window['oRequestAnimationFrame'] || - window['setTimeout']; + function(func) { setTimeout(func, 1000/60) }; } window.requestAnimationFrame(func); } @@ -954,28 +969,13 @@ mergeInto(LibraryManager.library, { Browser.mainLoop.method = ''; // just warn once per call to set main loop } - if (Module['preMainLoop']) { - Module['preMainLoop'](); - } - - try { + Browser.mainLoop.runIter(function() { if (typeof arg !== 'undefined') { Runtime.dynCall('vi', func, [arg]); } else { Runtime.dynCall('v', func); } - } catch (e) { - if (e instanceof ExitStatus) { - return; - } else { - if (e && typeof e === 'object' && e.stack) Module.printErr('exception thrown: ' + [e, e.stack]); - throw e; - } - } - - if (Module['postMainLoop']) { - Module['postMainLoop'](); - } + }); if (Browser.mainLoop.shouldPause) { // catch pauses from the main loop itself |