aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/library_browser.js4
-rw-r--r--tests/emscripten_api_browser.cpp8
2 files changed, 12 insertions, 0 deletions
diff --git a/src/library_browser.js b/src/library_browser.js
index 299e8a72..66aeeaf8 100644
--- a/src/library_browser.js
+++ b/src/library_browser.js
@@ -4,6 +4,8 @@
mergeInto(LibraryManager.library, {
emscripten_set_main_loop: function(func, fps) {
+ Module['noExitRuntime'] = true;
+
fps = fps || 60; // TODO: use requestAnimationFrame
_emscripten_set_main_loop.cancel = false;
var jsFunc = FUNCTION_TABLE[func];
@@ -20,6 +22,8 @@ mergeInto(LibraryManager.library, {
},
emscripten_async_call: function(func, millis) {
+ Module['noExitRuntime'] = true;
+
// TODO: cache these to avoid generating garbage
setTimeout(function() {
FUNCTION_TABLE[func]();
diff --git a/tests/emscripten_api_browser.cpp b/tests/emscripten_api_browser.cpp
index 37ffbdd6..4d425120 100644
--- a/tests/emscripten_api_browser.cpp
+++ b/tests/emscripten_api_browser.cpp
@@ -1,5 +1,6 @@
#include<stdio.h>
#include<math.h>
+#include<stdlib.h>
#include<SDL.h>
#include<emscripten.h>
#include<assert.h>
@@ -26,11 +27,18 @@ void second() {
}
+void never() {
+ int result = 0;
+ REPORT_RESULT();
+}
+
int main() {
SDL_Init(0);
last = SDL_GetTicks();
printf("frist! %d\n", last);
+ atexit(never); // should never be called - it is wrong to exit the runtime orderly if we have async calls!
+
emscripten_async_call(second, 500);
return 1;