@@ -1306,12 +1306,19 @@ impl MprisTask {
13061306 PlayerEvent :: Loading { .. } => { }
13071307 PlayerEvent :: Preloading { .. } => { }
13081308 PlayerEvent :: TimeToPreloadNextTrack { .. } => { }
1309- PlayerEvent :: EndOfTrack { track_id, .. } => match track_id. to_id ( ) {
1310- Err ( e) => warn ! ( "PlayerEvent::EndOfTrack: Invalid track id: {e}" ) ,
1311- Ok ( _id) => {
1312- // TODO: ?
1309+ PlayerEvent :: EndOfTrack { track_id, .. } => {
1310+ // TODO: Update position
1311+ let iface_ref = self . mpris_player_iface ( ) . await ;
1312+ let mut iface = iface_ref. get_mut ( ) . await ;
1313+ let meta = & mut iface. metadata ;
1314+
1315+ if meta. mpris . track_id . as_ref ( ) != Some ( & track_id) {
1316+ * meta = Metadata :: default ( ) ;
1317+ meta. mpris . track_id = Some ( track_id) ;
1318+ warn ! ( "Missed TrackChanged event, metadata missing" ) ;
1319+ iface. metadata_changed ( iface_ref. signal_context ( ) ) . await ?;
13131320 }
1314- } ,
1321+ }
13151322 PlayerEvent :: Unavailable { .. } => { }
13161323 PlayerEvent :: VolumeChanged { volume, .. } => {
13171324 let iface_ref = self . mpris_player_iface ( ) . await ;
@@ -1326,7 +1333,7 @@ impl MprisTask {
13261333 // position_ms,
13271334 ..
13281335 } => {
1329- // TODO: Update position + track_id
1336+ // TODO: Update position
13301337 let iface_ref = self . mpris_player_iface ( ) . await ;
13311338 let mut iface = iface_ref. get_mut ( ) . await ;
13321339 let meta = & mut iface. metadata ;
0 commit comments