From a26db5cf96661459aa48469c58714cee68af448c Mon Sep 17 00:00:00 2001 From: joren Date: Tue, 31 Mar 2026 23:50:54 +0200 Subject: [PATCH] Preserve playback position on quality switch When SetMaxAudioQuality triggers a stream restart, resume from the current player position instead of restarting at the beginning to avoid audible jumps and keep UX consistent. --- src/qconnect.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/qconnect.rs b/src/qconnect.rs index ec76735..208dd2a 100644 --- a/src/qconnect.rs +++ b/src/qconnect.rs @@ -1332,9 +1332,10 @@ async fn run_connection( // If currently playing, restart at new quality if current_playing_state == 2 && current_track_id != 0 { + let restart_pos = player.status().position_ms; info!("Restarting track {} at new quality format_id={}", current_track_id, format_id); current_buffer_state = 1; // BUFFERING - current_position_ms = 0; + current_position_ms = restart_pos; send_state!(ws_tx, msg_id); let track_id_str = current_track_id.to_string(); @@ -1384,7 +1385,7 @@ async fn run_connection( track_id: current_track_id, queue_item_id: current_queue_item_id, duration_ms, - start_position_ms: 0, + start_position_ms: restart_pos, }); let (fallback_sr, fallback_bits, fallback_ch) = quality_fallback_audio_params(*quality);