@@ -21,7 +21,6 @@ Elm.debuggerAttach = function(module, hotSwapState /* =undefined */) {
2121};
2222
2323var EVENTS_PER_SAVE = 100;
24−var eventCounter = 0;
2524
2625function dispatchElmDebuggerInit() {
2726 if (parent.window) {
@@ -45,6 +44,8 @@ function debugModule(module, runtime) {
4544 var watchTracker = Elm.Native.Debug.make(runtime).watchTracker;
4645 var pauseTime = 0;
4746 var eventsUntilSnapshot = EVENTS_PER_SAVE;
47+ runtime.debuggerStatus = runtime.debuggerStatus || {};
48+ runtime.debuggerStatus.eventCounter = runtime.debuggerStatus.eventCounter || 0;
4849
4950 // runtime is the prototype of wrappedRuntime
5051 // so we can access all runtime properties too
@@ -111,7 +112,7 @@ function debugModule(module, runtime) {
111112 function recordEvent(id, v, timestep) {
112113 watchTracker.pushFrame();
113114 recordedEvents.push({ id:id, value:v, timestep:timestep });
114− eventCounter += 1;
115+ runtime.debuggerStatus.eventCounter += 1;
115116 }
116117
117118 function clearAsyncCallbacks() {
@@ -124,7 +125,7 @@ function debugModule(module, runtime) {
124125
125126 function clearRecordedEvents() {
126127 recordedEvents = [];
127− eventCounter = 0;
128+ runtime.debuggerStatus.eventCounter = 0;
128129 }
129130
130131 function getRecordedEventsLength() {
@@ -187,7 +188,7 @@ function debugModule(module, runtime) {
187188
188189 recordedEvents = recordedEvents.slice(0, position);
189190 tracePath.clearTracesAfter(position);
190− eventCounter = position;
191+ runtime.debuggerStatus.eventCounter = position;
191192 executeCallbacks(asyncCallbacks, false);
192193 }
193194 tracePath.startRecording();
@@ -325,14 +326,14 @@ function debuggerInit(debugModule, runtime, hotSwapState /* =undefined */) {
325326 debugModule.setPaused();
326327 debugModule.loadRecordedEvents(hotSwapState.recordedEvents);
327328 var index = getMaxSteps();
328− eventCounter = 0;
329+ runtime.debuggerStatus.eventCounter = 0;
329330 debugModule.tracePath.clearTraces();
330331
331332 // draw new trace path
332333 debugModule.tracePath.startRecording();
333334 while(currentEventIndex < index) {
334335 var nextEvent = debugModule.getRecordedEventAt(currentEventIndex);
335− eventCounter += 1;
336+ runtime.debuggerStatus.eventCounter += 1;
336337 runtime.notify(nextEvent.id, nextEvent.value, nextEvent.timestep);
337338 debugModule.snapshotOnCheckpoint();
338339 currentEventIndex += 1;
@@ -422,14 +423,14 @@ function tracePathInit(runtime, signalGraphMain) {
422423 else {
423424 tracePositions[id] = [pos];
424425 }
425− if (tracePositions[id].length < eventCounter) {
426− var padCount = eventCounter - tracePositions[id].length;
426+ if (tracePositions[id].length < runtime.debuggerStatus.eventCounter) {
427+ var padCount = runtime.debuggerStatus.eventCounter - tracePositions[id].length;
427428 var lastTracePosition = tracePositions[id][tracePositions[id].length - 1];
428429 for (var i = padCount; i--;) {
429430 tracePositions[id].push(lastTracePosition)
430431 }
431432 }
432− assert(tracePositions[id].length === eventCounter,
433+ assert(tracePositions[id].length === runtime.debuggerStatus.eventCounter,
433434 "We don't have a 1-1 mapping of trace positions to events");
434435 }
435436 }