From 863b4017714130f042f993e7c9d0f3f8adee22bf Mon Sep 17 00:00:00 2001 From: salmonik Date: Mon, 2 Nov 2026 13:12:48 +0100 Subject: state: persist the queue and pick up where playback stopped The queue, its shuffle order and whether playback was running are written to ~/.local/state/rsplayer/state.json whenever they change, and on shutdown, then restored at daemon start. Tracks that disappeared from disk are dropped instead of failing on play. `rsp resume`/`rsp toggle` now start the restored track when nothing is loaded into the engine yet, which is the state right after a restart with a queue that was paused. --- src/mpris.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/mpris.rs') diff --git a/src/mpris.rs b/src/mpris.rs index f156f7f..3fc706d 100644 --- a/src/mpris.rs +++ b/src/mpris.rs @@ -378,13 +378,13 @@ impl MprisPlayer { #[zbus(name = "Shuffle")] fn set_shuffle(&self, value: bool) { if let Ok(mut q) = self.queue.lock() { - let current = q.shuffle_mode().clone(); + let current = *q.shuffle_mode(); let mode = if !value { ShuffleMode::None } else if current == ShuffleMode::None { ShuffleMode::All } else { - current.clone() + current }; if mode != current { @@ -550,7 +550,7 @@ pub fn start_mpris_server( let volume = poll_audio.get_volume() as f64 / 100.0; let shuffle = poll_queue .lock() - .map(|q| q.shuffle_mode().clone()) + .map(|q| *q.shuffle_mode()) .unwrap_or(ShuffleMode::None); let loop_status_value = poll_loop_status .lock() -- cgit v1.2.3