@@ -103,7 +103,7 @@ class TimerController: ObservableObject {
103103
104104
105105 private var timer : Timer ?
106- private var timerStartTime : Date ?
106+ private var timerStartTime : UInt64 ?
107107 var secondsElapsed = 0.0
108108
109109
@@ -203,18 +203,22 @@ class TimerController: ObservableObject {
203203
204204 secondsElapsed = 0
205205 secondsStr = formatSolveTime ( secs: 0 )
206- timerStartTime = Date ( )
206+ timerStartTime = clock_gettime_nsec_np ( CLOCK_MONOTONIC_RAW )
207207
208208 if sm. timeDpWhenRunning == - 1 {
209209 self . secondsStr = " ... "
210210 } else {
211211 timer = Timer . scheduledTimer ( withTimeInterval: 1 / 60 , repeats: true ) { [ self ] timer in
212- self . secondsElapsed = - timerStartTime! . timeIntervalSinceNow
212+ self . secondsElapsed = getElapsedTime ( )
213213 self . secondsStr = formatSolveTime ( secs: self . secondsElapsed, dp: sm. timeDpWhenRunning)
214214 }
215215 }
216216 }
217217
218+ private func getElapsedTime( ) -> Double {
219+ return Double ( clock_gettime_nsec_np ( CLOCK_MONOTONIC_RAW) - timerStartTime!) / 1e9
220+ }
221+
218222
219223 func stop( _ time: Double ? ) {
220224 #if DEBUG
@@ -227,7 +231,7 @@ class TimerController: ObservableObject {
227231 self . secondsElapsed = time
228232 } else {
229233 prevDownStoppedTimer = true
230- self . secondsElapsed = - timerStartTime! . timeIntervalSinceNow
234+ self . secondsElapsed = getElapsedTime ( )
231235 }
232236
233237 self . secondsStr = formatSolveTime ( secs: self . secondsElapsed)
@@ -329,7 +333,7 @@ class TimerController: ObservableObject {
329333 // multiphase
330334 func lap( ) {
331335 currentMPCount += 1
332- phaseTimes. append ( - timerStartTime! . timeIntervalSinceNow )
336+ phaseTimes. append ( getElapsedTime ( ) )
333337 feedbackStyle? . impactOccurred ( intensity: 0.5 )
334338 }
335339}
0 commit comments