diff options
| author | salmonik <raisersoft@proton.me> | 2026-07-06 15:49:27 +0200 |
|---|---|---|
| committer | salmonik <raisersoft@proton.me> | 2026-07-06 15:49:27 +0200 |
| commit | 547e7ac5218327216704e1fb72004a3de6992940 (patch) | |
| tree | 2913726087b10d9ad0083ef1196fb52439705035 /src/daemon.rs | |
| parent | fix -a to work properly (diff) | |
| download | rsplayer-547e7ac5218327216704e1fb72004a3de6992940.tar.gz rsplayer-547e7ac5218327216704e1fb72004a3de6992940.zip | |
add MPRIS support and non-blocking notifs
Diffstat (limited to '')
| -rw-r--r-- | src/daemon.rs | 13 |
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 | ||
| 105 | fn try_scrobble_current(scrobbler: &RwLock<Scrobbler>, state: &mut ScrobbleState) { | 105 | pub 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 | ||
| 140 | fn send_now_playing(scrobbler: &RwLock<Scrobbler>, track: &Track) { | 140 | pub 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 |
