aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2014-05-02 11:05:04 -0700
committerAlon Zakai <alonzakai@gmail.com>2014-05-02 11:05:04 -0700
commitf25f2fa17a59182b34e5f68f725ef14b7c7f38a6 (patch)
tree3a2b2a7d0136802fdcc01b5b4bc70fa72a8c8f37
parent0c96ee7315fda2dba5f2fde084cd31fa227dfb72 (diff)
document and assert on only one browser main loop at a time
-rw-r--r--src/library_browser.js2
-rw-r--r--system/include/emscripten/emscripten.h6
2 files changed, 7 insertions, 1 deletions
diff --git a/src/library_browser.js b/src/library_browser.js
index 5cc7e122..44e8c473 100644
--- a/src/library_browser.js
+++ b/src/library_browser.js
@@ -889,6 +889,8 @@ mergeInto(LibraryManager.library, {
emscripten_set_main_loop: function(func, fps, simulateInfiniteLoop, arg) {
Module['noExitRuntime'] = true;
+ assert(!Browser.mainLoop.scheduler, 'there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one, if you want to');
+
Browser.mainLoop.runner = function Browser_mainLoop_runner() {
if (ABORT) return;
if (Browser.mainLoop.queue.length > 0) {
diff --git a/system/include/emscripten/emscripten.h b/system/include/emscripten/emscripten.h
index 73836018..362a1337 100644
--- a/system/include/emscripten/emscripten.h
+++ b/system/include/emscripten/emscripten.h
@@ -121,7 +121,11 @@ extern void emscripten_async_load_script(const char *script, void (*onload)(void
*
* If you want your main loop function to receive a void*
* argument, use emscripten_set_main_loop_arg.
-
+ *
+ * There can be only *one* main loop function at a time. You
+ * can cancel the current one and set another, if you want to
+ * change it.
+ *
* @simulate_infinite_loop If true, this function will throw an
* exception in order to stop execution of the caller. This
* will lead to the main loop being entered instead of code