aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--emcclib.js30
-rw-r--r--emccpre.js3
2 files changed, 11 insertions, 22 deletions
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);