@@ -32,7 +32,13 @@ ElmRuntime.filterDeadInputs = function(inputs) {
32 return temp;
32 return temp;
35−// define the draw function
35+// define function for drawing efficiently
37+// draw : RequestID -> (() -> ()) -> RequestID
39+// Takes a "RequestID" allowing you to cancel old requests if possible.
40+// Returns a "RequestID" so you can refer to past requests.
36var vendors = ['ms', 'moz', 'webkit', 'o'];
42var vendors = ['ms', 'moz', 'webkit', 'o'];
37var win = typeof window !== 'undefined' ? window : {};
43var win = typeof window !== 'undefined' ? window : {};
38for (var i = 0; i < vendors.length && !win.requestAnimationFrame; ++i) {
44for (var i = 0; i < vendors.length && !win.requestAnimationFrame; ++i) {
@@ -42,13 +48,15 @@ for (var i = 0; i < vendors.length && !win.requestAnimationFrame; ++i) {
44if (win.requestAnimationFrame && win.cancelAnimationFrame) {
50if (win.requestAnimationFrame && win.cancelAnimationFrame) {
46− ElmRuntime.draw = function(callback) {
51+ ElmRuntime.draw = function(previousRequestID, callback) {
47− win.cancelAnimationFrame(previous);
52+ win.cancelAnimationFrame(previousRequestID);
48− previous = win.requestAnimationFrame(callback);
53+ return win.requestAnimationFrame(callback);
51− ElmRuntime.draw = function(callback) { callback(); };
56+ ElmRuntime.draw = function(previousRequestID, callback) {
58+ return previousRequestID;