aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2014-06-24 15:26:48 -0700
committerAlon Zakai <alonzakai@gmail.com>2014-06-24 15:26:48 -0700
commit295dc2b204b2e01c20b5627a65cdcd658a68fcca (patch)
treec7d9b702b3dac92075ccce8ce59d8b7a17c5c289
parentfa60c84391d9ef714ca49ec563783b663e22e0fe (diff)
implement requestAnimationFrame for workers
-rw-r--r--src/proxyWorker.js18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/proxyWorker.js b/src/proxyWorker.js
index fdec236b..2919fb10 100644
--- a/src/proxyWorker.js
+++ b/src/proxyWorker.js
@@ -66,6 +66,24 @@ window.scrollX = window.scrollY = 0; // TODO: proxy these
window.WebGLRenderingContext = WebGLWorker;
+window.requestAnimationFrame = (function() {
+ // similar to Browser.requestAnimationFrame
+ var nextRAF = 0;
+ return function(func) {
+ // try to keep 60fps between calls to here
+ var now = Date.now();
+ if (nextRAF === 0) {
+ nextRAF = now + 1000/60;
+ } else {
+ while (now + 2 >= nextRAF) { // fudge a little, to avoid timer jitter causing us to do lots of delay:0
+ nextRAF += 1000/60;
+ }
+ }
+ var delay = Math.max(nextRAF - now, 0);
+ setTimeout(func, delay);
+ };
+})();
+
var webGLWorker = new WebGLWorker();
var document = new EventListener();