aboutsummaryrefslogtreecommitdiff
path: root/emcclib.js
diff options
context:
space:
mode:
Diffstat (limited to 'emcclib.js')
-rw-r--r--emcclib.js30
1 files changed, 10 insertions, 20 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);
},
/*