Stop playing if last track is removed
CI checks / stable / fmt (push) Successful in 3s
Details
CI checks / stable / fmt (push) Successful in 3s
Details
This commit is contained in:
parent
97ebb44ca5
commit
f8a77ee6ed
|
|
@ -46,6 +46,10 @@ impl QueueManager {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn is_last_track(&self) -> bool {
|
||||
self.current_position() == self.tracks.len() - 1
|
||||
}
|
||||
|
||||
pub fn shuffle_on(&mut self) {
|
||||
self.shuffle = true;
|
||||
self.shuffle_before(self.current_offset);
|
||||
|
|
|
|||
|
|
@ -192,6 +192,7 @@ impl Playback {
|
|||
|
||||
PlaybackMessage::Remove { positions, span } => {
|
||||
let _e = span.enter();
|
||||
let is_last;
|
||||
debug!("removing");
|
||||
let track = {
|
||||
let Ok(mut queue) = self.queue.lock() else {
|
||||
|
|
@ -199,6 +200,7 @@ impl Playback {
|
|||
continue;
|
||||
};
|
||||
debug!("got queue lock");
|
||||
is_last = queue.is_last_track();
|
||||
let track = queue.remove_tracks(&positions);
|
||||
let queue_update_tx = self.update_tx.clone();
|
||||
let update = StreamUpdate::Queue(queue.clone().into());
|
||||
|
|
@ -216,9 +218,15 @@ impl Playback {
|
|||
*state
|
||||
};
|
||||
if state == PlayState::Playing {
|
||||
if is_last {
|
||||
if let Err(err) = self.player.stop().in_current_span().await {
|
||||
error!("{:?}", err)
|
||||
}
|
||||
} else {
|
||||
self.play(track).in_current_span().await;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
PlaybackMessage::Insert {
|
||||
position,
|
||||
|
|
|
|||
Loading…
Reference in New Issue