From fc7cc972e6171896ef4e648f50951902a5b478fb Mon Sep 17 00:00:00 2001 From: Solstice Date: Tue, 9 Jun 2026 01:14:04 -0700 Subject: fix: resolve final deadlock and startup sync gap --- src-tauri/src/lib.rs | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) (limited to 'src-tauri/src') diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index aff41cc..2b359eb 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -111,17 +111,25 @@ fn skip_phase( ) -> Result<(), String> { use tauri::Emitter; let mut ts = timer.0.lock().unwrap(); - let app_data = data.data.lock().unwrap(); - let s = &app_data.settings; + let (work_duration_secs, short_break_secs, long_break_secs, sessions_before_long_break) = { + let app_data = data.data.lock().unwrap(); + let settings = &app_data.settings; + ( + settings.work_duration_secs, + settings.short_break_secs, + settings.long_break_secs, + settings.sessions_before_long_break, + ) + }; match ts.phase { TimerPhase::Work => { ts.session_count += 1; let (next_phase, next_secs) = - if ts.session_count % s.sessions_before_long_break == 0 { - (TimerPhase::LongBreak, s.long_break_secs) + if ts.session_count % sessions_before_long_break == 0 { + (TimerPhase::LongBreak, long_break_secs) } else { - (TimerPhase::ShortBreak, s.short_break_secs) + (TimerPhase::ShortBreak, short_break_secs) }; ts.phase = next_phase; ts.total_secs = next_secs; @@ -129,8 +137,8 @@ fn skip_phase( } TimerPhase::ShortBreak | TimerPhase::LongBreak => { ts.phase = TimerPhase::Work; - ts.total_secs = s.work_duration_secs; - ts.remaining_secs = s.work_duration_secs; + ts.total_secs = work_duration_secs; + ts.remaining_secs = work_duration_secs; } } -- cgit v1.3-2-g0d8e