@@ -30,4 +30,22 @@ ElmRuntime.filterDeadInputs = function(inputs) {
3030 return temp;
3131};
3232
33+// define the draw function
34+var vendors = ['ms', 'moz', 'webkit', 'o'];
35+for (var i = 0; i < vendors.length && !window.requestAnimationFrame; ++i) {
36+ window.requestAnimationFrame = window[vendors[i]+'RequestAnimationFrame'];
37+ window.cancelAnimationFrame = window[vendors[i]+'CancelAnimationFrame']
38+ || window[vendors[i]+'CancelRequestAnimationFrame'];
39+}
40+
41+if (window.requestAnimationFrame && window.cancelAnimationFrame) {
42+ var previous = 0;
43+ ElmRuntime.draw = function(callback) {
44+ window.cancelAnimationFrame(previous);
45+ previous = window.requestAnimationFrame(callback);
46+ };
47+} else {
48+ ElmRuntime.draw = function(callback) { callback(); };
49+}
50+
3351}());