File tree Expand file tree Collapse file tree 2 files changed +47
-2
lines changed Expand file tree Collapse file tree 2 files changed +47
-2
lines changed Original file line number Diff line number Diff line change @@ -2163,7 +2163,51 @@ impl PlayerInternal {
2163
2163
2164
2164
PlayerCommand :: SetSession ( session) => self . session = session,
2165
2165
2166
- PlayerCommand :: AddEventSender ( sender) => self . event_senders . push ( sender) ,
2166
+ PlayerCommand :: AddEventSender ( sender) => {
2167
+ // Send current player state to new event listener
2168
+ match self . state {
2169
+ PlayerState :: Loading {
2170
+ ref track_id,
2171
+ play_request_id,
2172
+ ..
2173
+ } => {
2174
+ let _ = sender. send ( PlayerEvent :: Loading {
2175
+ play_request_id,
2176
+ track_id : track_id. clone ( ) ,
2177
+ position_ms : 0 , // TODO
2178
+ } ) ;
2179
+ }
2180
+ PlayerState :: Paused {
2181
+ ref track_id,
2182
+ play_request_id,
2183
+ stream_position_ms,
2184
+ ..
2185
+ } => {
2186
+ let _ = sender. send ( PlayerEvent :: Paused {
2187
+ play_request_id,
2188
+ track_id : track_id. clone ( ) ,
2189
+ position_ms : stream_position_ms,
2190
+ } ) ;
2191
+ }
2192
+ PlayerState :: Playing { ref audio_item, .. } => {
2193
+ let audio_item = Box :: new ( audio_item. clone ( ) ) ;
2194
+ let _ = sender. send ( PlayerEvent :: TrackChanged { audio_item } ) ;
2195
+ }
2196
+ PlayerState :: EndOfTrack {
2197
+ play_request_id,
2198
+ ref track_id,
2199
+ ..
2200
+ } => {
2201
+ let _ = sender. send ( PlayerEvent :: EndOfTrack {
2202
+ play_request_id,
2203
+ track_id : track_id. clone ( ) ,
2204
+ } ) ;
2205
+ }
2206
+ _ => ( ) ,
2207
+ }
2208
+
2209
+ self . event_senders . push ( sender) ;
2210
+ }
2167
2211
2168
2212
PlayerCommand :: SetSinkEventCallback ( callback) => self . sink_event_callback = callback,
2169
2213
Original file line number Diff line number Diff line change @@ -844,7 +844,8 @@ impl MprisEventHandler {
844
844
} ;
845
845
let mpris_player_service = MprisPlayerService {
846
846
spirc : None ,
847
- // FIXME: obtain current values from Player
847
+ // Values are updated upon reception of first player state, right after MprisTask event
848
+ // handler registration
848
849
repeat : LoopStatus :: None ,
849
850
shuffle : false ,
850
851
playback_status : PlaybackStatus :: Stopped ,
You can’t perform that action at this time.
0 commit comments