diff --git a/emcclib.js b/emcclib.js index 274da30..88ca4ac 100644 --- a/emcclib.js +++ b/emcclib.js @@ -188,22 +188,18 @@ mergeInto(LibraryManager.library, { * void js_activate_timer(); * * Start calling the C timer_callback() function every frame. + * The C code ensures that the activate and deactivate functions + * are called in a sensible order. */ js_activate_timer: function() { - if (!timer_active) { - timer_reference = performance.now(); - var frame = function(now) { - timer = null; - timer_callback((now - timer_reference) / 1000.0); - /* The callback may have deactivated the timer. */ - if (timer_active) { - timer_reference = now; - timer = window.requestAnimationFrame(frame); - } - } - timer_active = true; + timer_reference = performance.now(); + var frame = function(now) { timer = window.requestAnimationFrame(frame); - } + // The callback might call js_deactivate_timer() below. + timer_callback((now - timer_reference) / 1000.0); + timer_reference = now; + }; + timer = window.requestAnimationFrame(frame); }, /* @@ -212,13 +208,7 @@ mergeInto(LibraryManager.library, { * Stop calling the C timer_callback() function every frame. */ js_deactivate_timer: function() { - if (timer_active) { - timer_active = false; - if (timer !== null) { - window.cancelAnimationFrame(timer); - timer = null; - } - } + window.cancelAnimationFrame(timer); }, /* diff --git a/emccpre.js b/emccpre.js index 16833f5..666d37d 100644 --- a/emccpre.js +++ b/emccpre.js @@ -90,8 +90,7 @@ var midpoint_test_str = "ABCDEFGHIKLMNOPRSTUVWXYZ0123456789"; var midpoint_cache = []; // Variables used by js_activate_timer() and js_deactivate_timer(). -var timer = null; -var timer_active = false; +var timer; var timer_reference; // void timer_callback(double tplus);