diff --git a/src/gui/mod.rs b/src/gui/mod.rs index 9b09cbf..6b403c8 100644 --- a/src/gui/mod.rs +++ b/src/gui/mod.rs @@ -58,7 +58,7 @@ impl SoundpadGui { pub fn play_toggle(&mut self) { let (new_state, request) = { - let guard = self.audio_player_state_shared.lock().unwrap(); + let guard = self.audio_player_state_shared.lock().unwrap_or_else(|e| e.into_inner()); match guard.state { PlayerState::Playing => (Some(PlayerState::Paused), Some(Request::pause(None))), PlayerState::Paused => (Some(PlayerState::Playing), Some(Request::resume(None))), @@ -71,7 +71,7 @@ impl SoundpadGui { } if let Some(state) = new_state { - let mut guard = self.audio_player_state_shared.lock().unwrap(); + let mut guard = self.audio_player_state_shared.lock().unwrap_or_else(|e| e.into_inner()); guard.new_state = Some(state.clone()); guard.state = state; } diff --git a/src/gui/update.rs b/src/gui/update.rs index 052de94..c21ce46 100644 --- a/src/gui/update.rs +++ b/src/gui/update.rs @@ -77,7 +77,7 @@ impl App for SoundpadGui { // Sync audio player state { - let guard = self.audio_player_state_shared.lock().unwrap(); + let guard = self.audio_player_state_shared.lock().unwrap_or_else(|e| e.into_inner()); self.audio_player_state = guard.clone(); }