From 5bb3fd099df1fcf687dd82a4d7acdda859883ebb Mon Sep 17 00:00:00 2001 From: Daniel Barber Date: Fri, 19 Apr 2019 20:17:45 -0500 Subject: [PATCH] We need to run the timer on the main thread This adds it to the main RunLoop. --- Persephone/Models/TrackTimer.swift | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/Persephone/Models/TrackTimer.swift b/Persephone/Models/TrackTimer.swift index 69d6b49..230f243 100644 --- a/Persephone/Models/TrackTimer.swift +++ b/Persephone/Models/TrackTimer.swift @@ -17,22 +17,23 @@ class TrackTimer: NSObject { print("Starting timer") guard let elapsedTimeMs = elapsedTimeMs else { return } print(elapsedTimeMs) - + timer?.invalidate() startTime = CACurrentMediaTime() startElapsed = Double(elapsedTimeMs) / 1000 - timer = Timer.scheduledTimer( - withTimeInterval: 0.25, - repeats: true - ) { _ in - let currentTime = CACurrentMediaTime() + DispatchQueue.main.sync { + self.timer = Timer.scheduledTimer( + withTimeInterval: 0.25, + repeats: true + ) { _ in + print("Timer fired") + let currentTime = CACurrentMediaTime() - let timeDiff = currentTime - self.startTime - let newElapsedTimeMs = UInt((self.startElapsed + timeDiff) * 1000) + let timeDiff = currentTime - self.startTime + let newElapsedTimeMs = UInt((self.startElapsed + timeDiff) * 1000) - DispatchQueue.main.async { AppDelegate.store.dispatch( UpdateElapsedTimeAction(elapsedTimeMs: newElapsedTimeMs) )