on master help sign in
closer to the right fix. The timer can have an invalid state though
commit22e6655ed1fab8c7bcd2d15ca7769ca6f1488f4c authorMichael James <michael@michaelbjames.com> dateThu 31 Jul 2014, 12:32 (12 years ago) parent52e6c55
3 files changed+14−14
libraries/Native/Signal/Time.js+5−4 runtime/Debugger.js+5−6 runtime/Init.js+4−4
libraries/Native/Signal/Time.js+5−4
@@ -14,12 +14,13 @@ Elm.Native.Time.make = function(elm) {
1414 var msPerFrame = 1000 / desiredFPS;
1515 var prev = elm.timer.now(), curr = prev, diff = 0, wasOn = true;
1616 var ticker = NS.input(diff);
17− function tick(zero) { return function(previousTime /* =undefined */) {
17+ function tick(zero) {
18+ return function() {
1819 curr = elm.timer.now();
19− if (previousTime) {
20− prev = previousTime;
21− }
2220 diff = zero ? 0 : curr - prev;
21+ if (prev > curr) {
22+ diff = 0;
23+ }
2324 prev = curr;
2425 elm.notify(ticker.id, diff);
2526 };
runtime/Debugger.js+5−6
@@ -180,14 +180,13 @@ function debugModule(module, runtime) {
180180 snapshots = snapshots.slice(0, lastSnapshotPosition + 1);
181181
182182 var lastEventTime = recordedEvents[position-1].timestep;
183− runtime.timer.setDelay(Date.now() - lastEventTime);
183+ var scrubTime = runtime.timer.now() - lastEventTime;
184+ runtime.timer.addDelay(scrubTime);
184185
185186 recordedEvents = recordedEvents.slice(0, position);
186187 tracePath.clearTracesAfter(position);
187188 eventCounter = position;
188− executeCallbacks(asyncCallbacks, false, lastEventTime);
189− } else {
190− runtime.timer.setDelay(0);
189+ executeCallbacks(asyncCallbacks, false);
191190 }
192191 tracePath.startRecording();
193192 }
@@ -491,12 +490,12 @@ function tracePathInit(runtime, signalGraphMain) {
491490 }
492491}
493492
494−function executeCallbacks(callbacks, reexecute, previousTime /* =undefined */) {
493+function executeCallbacks(callbacks, reexecute) {
495494 callbacks.forEach(function(timer) {
496495 if (reexecute || !timer.executed) {
497496 var func = timer.func;
498497 timer.executed = true;
499− func(previousTime);
498+ func();
500499 }
501500 });
502501}
runtime/Init.js+4−4
@@ -44,13 +44,13 @@ function init(display, container, module, ports, moduleToReplace) {
4444 return Date.now() - inducedDelay;
4545 };
4646
47− var setDelay = function(d) {
48− inducedDelay = d;
47+ var addDelay = function(d) {
48+ inducedDelay += d;
4949 return inducedDelay;
50− }
50+ };
5151
5252 return { now : now
53− , setDelay : setDelay
53+ , addDelay : addDelay
5454 }
5555 }();
5656