File tree Expand file tree Collapse file tree 3 files changed +25
-14
lines changed Expand file tree Collapse file tree 3 files changed +25
-14
lines changed Original file line number Diff line number Diff line change @@ -142,8 +142,8 @@ pub enum PlayerEvent {
142
142
} ,
143
143
// Fired when the player is stopped (e.g. by issuing a "stop" command to the player).
144
144
Stopped {
145
- play_request_id : u64 ,
146
- track_id : SpotifyUri ,
145
+ play_request_id : Option < u64 > ,
146
+ track_id : Option < SpotifyUri > ,
147
147
} ,
148
148
// The player is delayed by loading a track.
149
149
Loading {
@@ -267,7 +267,8 @@ impl PlayerEvent {
267
267
play_request_id, ..
268
268
}
269
269
| Stopped {
270
- play_request_id, ..
270
+ play_request_id : Some ( play_request_id) ,
271
+ ..
271
272
}
272
273
| PositionCorrection {
273
274
play_request_id, ..
@@ -1541,8 +1542,8 @@ impl PlayerInternal {
1541
1542
1542
1543
self . ensure_sink_stopped ( false ) ;
1543
1544
self . send_event ( PlayerEvent :: Stopped {
1544
- track_id,
1545
- play_request_id,
1545
+ track_id : Some ( track_id ) ,
1546
+ play_request_id : Some ( play_request_id ) ,
1546
1547
} ) ;
1547
1548
self . state = PlayerState :: Stopped ;
1548
1549
}
@@ -2203,7 +2204,12 @@ impl PlayerInternal {
2203
2204
track_id : track_id. clone ( ) ,
2204
2205
} ) ;
2205
2206
}
2206
- _ => ( ) ,
2207
+ PlayerState :: Invalid | PlayerState :: Stopped => {
2208
+ let _ = sender. send ( PlayerEvent :: Stopped {
2209
+ play_request_id : None ,
2210
+ track_id : None ,
2211
+ } ) ;
2212
+ }
2207
2213
}
2208
2214
2209
2215
self . event_senders . push ( sender) ;
Original file line number Diff line number Diff line change @@ -1301,9 +1301,9 @@ impl MprisTask {
1301
1301
let mut iface = iface_ref. get_mut ( ) . await ;
1302
1302
let meta = & mut iface. metadata ;
1303
1303
1304
- if meta. mpris . track_id . as_ref ( ) != Some ( & track_id) {
1304
+ if meta. mpris . track_id . as_ref ( ) != track_id. as_ref ( ) {
1305
1305
* meta = Metadata :: default ( ) ;
1306
- meta. mpris . track_id = Some ( track_id) ;
1306
+ meta. mpris . track_id = track_id;
1307
1307
warn ! ( "Missed TrackChanged event, metadata missing" ) ;
1308
1308
iface. metadata_changed ( iface_ref. signal_context ( ) ) . await ?;
1309
1309
}
Original file line number Diff line number Diff line change @@ -109,13 +109,18 @@ impl EventHandler {
109
109
}
110
110
}
111
111
}
112
- PlayerEvent :: Stopped { track_id, .. } => match track_id. to_id ( ) {
113
- Err ( e) => warn ! ( "PlayerEvent::Stopped: Invalid track id: {e}" ) ,
114
- Ok ( id) => {
115
- env_vars. insert ( "PLAYER_EVENT" , "stopped" . to_string ( ) ) ;
116
- env_vars. insert ( "TRACK_ID" , id) ;
112
+ PlayerEvent :: Stopped { track_id, .. } => {
113
+ env_vars. insert ( "PLAYER_EVENT" , "stopped" . to_string ( ) ) ;
114
+ match track_id. map ( |track_id| track_id. to_id ( ) ) {
115
+ Some ( Err ( e) ) => {
116
+ warn ! ( "PlayerEvent::Stopped: Invalid track id: {e}" )
117
+ }
118
+ Some ( Ok ( id) ) => {
119
+ env_vars. insert ( "TRACK_ID" , id) ;
120
+ }
121
+ None => { }
117
122
}
118
- } ,
123
+ }
119
124
PlayerEvent :: Playing {
120
125
track_id,
121
126
position_ms,
You can’t perform that action at this time.
0 commit comments