aboutsummaryrefslogtreecommitdiffstats
path: root/src/mpris.rs
diff options
context:
space:
mode:
authorsalmonik <salmonik@tuta.io>2026-11-02 13:12:48 +0100
committersalmonik <salmonik@tuta.io>2026-11-02 13:12:48 +0100
commit863b4017714130f042f993e7c9d0f3f8adee22bf (patch)
treee5ae8094f6be4f0c0a5332a9ca4bb95c8bf87b18 /src/mpris.rs
parentqueue: use let chains and tidy imports (diff)
downloadrsplayer-863b4017714130f042f993e7c9d0f3f8adee22bf.tar.gz
rsplayer-863b4017714130f042f993e7c9d0f3f8adee22bf.zip
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.
Diffstat (limited to '')
-rw-r--r--src/mpris.rs6
1 files changed, 3 insertions, 3 deletions
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 {
378 #[zbus(name = "Shuffle")] 378 #[zbus(name = "Shuffle")]
379 fn set_shuffle(&self, value: bool) { 379 fn set_shuffle(&self, value: bool) {
380 if let Ok(mut q) = self.queue.lock() { 380 if let Ok(mut q) = self.queue.lock() {
381 let current = q.shuffle_mode().clone(); 381 let current = *q.shuffle_mode();
382 let mode = if !value { 382 let mode = if !value {
383 ShuffleMode::None 383 ShuffleMode::None
384 } else if current == ShuffleMode::None { 384 } else if current == ShuffleMode::None {
385 ShuffleMode::All 385 ShuffleMode::All
386 } else { 386 } else {
387 current.clone() 387 current
388 }; 388 };
389 389
390 if mode != current { 390 if mode != current {
@@ -550,7 +550,7 @@ pub fn start_mpris_server(
550 let volume = poll_audio.get_volume() as f64 / 100.0; 550 let volume = poll_audio.get_volume() as f64 / 100.0;
551 let shuffle = poll_queue 551 let shuffle = poll_queue
552 .lock() 552 .lock()
553 .map(|q| q.shuffle_mode().clone()) 553 .map(|q| *q.shuffle_mode())
554 .unwrap_or(ShuffleMode::None); 554 .unwrap_or(ShuffleMode::None);
555 let loop_status_value = poll_loop_status 555 let loop_status_value = poll_loop_status
556 .lock() 556 .lock()