From bacb40af5833428a895adfcf3efd55e83b7abc10 Mon Sep 17 00:00:00 2001 From: joren Date: Tue, 31 Mar 2026 22:29:32 +0200 Subject: [PATCH] Restart same-track playback when looped state resumes --- src/qconnect.rs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/qconnect.rs b/src/qconnect.rs index d9dd01b..7e40861 100644 --- a/src/qconnect.rs +++ b/src/qconnect.rs @@ -1090,7 +1090,23 @@ async fn run_connection( if !loaded_new_track { match ps { 2 => { - if current_playing_state == 3 { + let status = player.status(); + let should_restart_same_track = current_track.is_some() + && (track_ended || status.state == PlayerState::Stopped); + + if should_restart_same_track { + let restart_pos = requested_pos.unwrap_or(0); + info!( + "[STATE] Restarting current track from {}ms (ended={} player_state={:?})", + restart_pos, + track_ended, + status.state + ); + player.send(PlayerCommand::Seek(restart_pos)); + current_playing_state = 2; + current_position_ms = restart_pos; + track_ended = false; + } else if current_playing_state == 3 { info!("[STATE] Resuming playback"); player.send(PlayerCommand::Resume); current_playing_state = 2;