aboutsummaryrefslogtreecommitdiffstats
path: root/src/daemon.rs
diff options
context:
space:
mode:
authorsalmonik <raisersoft@proton.me>2026-07-06 15:49:27 +0200
committersalmonik <raisersoft@proton.me>2026-07-06 15:49:27 +0200
commit547e7ac5218327216704e1fb72004a3de6992940 (patch)
tree2913726087b10d9ad0083ef1196fb52439705035 /src/daemon.rs
parentfix -a to work properly (diff)
downloadrsplayer-547e7ac5218327216704e1fb72004a3de6992940.tar.gz
rsplayer-547e7ac5218327216704e1fb72004a3de6992940.zip
add MPRIS support and non-blocking notifs
Diffstat (limited to '')
-rw-r--r--src/daemon.rs13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/daemon.rs b/src/daemon.rs
index 61d021b..1c918a8 100644
--- a/src/daemon.rs
+++ b/src/daemon.rs
@@ -102,7 +102,7 @@ impl ScrobbleState {
102 } 102 }
103} 103}
104 104
105fn try_scrobble_current(scrobbler: &RwLock<Scrobbler>, state: &mut ScrobbleState) { 105pub fn try_scrobble_current(scrobbler: &RwLock<Scrobbler>, state: &mut ScrobbleState) {
106 if let Some(ref track) = state.track 106 if let Some(ref track) = state.track
107 && track.is_stream 107 && track.is_stream
108 { 108 {
@@ -137,7 +137,7 @@ fn try_scrobble_current(scrobbler: &RwLock<Scrobbler>, state: &mut ScrobbleState
137 state.clear(); 137 state.clear();
138} 138}
139 139
140fn send_now_playing(scrobbler: &RwLock<Scrobbler>, track: &Track) { 140pub fn send_now_playing(scrobbler: &RwLock<Scrobbler>, track: &Track) {
141 if track.is_stream { 141 if track.is_stream {
142 crate::debug_eprintln(format_args!( 142 crate::debug_eprintln(format_args!(
143 "scrobble: skipping now_playing for stream track" 143 "scrobble: skipping now_playing for stream track"
@@ -246,6 +246,15 @@ pub fn start_daemon() -> Result<(), Box<dyn std::error::Error>> {
246 // Save full config 246 // Save full config
247 config.save()?; 247 config.save()?;
248 248
249 // Start MPRIS D-Bus server for external control (playerctl, etc.)
250 crate::mpris::start_mpris_server(
251 Arc::clone(&audio_engine),
252 Arc::clone(&queue),
253 Arc::clone(&scrobbler),
254 Arc::clone(&scrobble_state),
255 Arc::clone(&shutdown_flag),
256 );
257
249 // Accept connections until shutdown 258 // Accept connections until shutdown
250 listener.set_nonblocking(true)?; 259 listener.set_nonblocking(true)?;
251 // Helper: poll until a specific track actually starts playing or timeout 260 // Helper: poll until a specific track actually starts playing or timeout