only stop playback if the last item was deleted AND playing

fixes #159
This commit is contained in:
Henrik Friedrichsen
2020-03-22 09:06:08 +01:00
parent 7ca405068d
commit c6b85f7d9b

View File

@@ -130,10 +130,9 @@ impl Queue {
q.remove(index); q.remove(index);
} }
// if the queue is empty or we are at the end of the queue, stop // if the queue is empty stop playback
// playback
let len = self.queue.read().unwrap().len(); let len = self.queue.read().unwrap().len();
if len == 0 || index == len { if len == 0 {
self.stop(); self.stop();
return; return;
} }
@@ -144,7 +143,15 @@ impl Queue {
let current = *self.current_track.read().unwrap(); let current = *self.current_track.read().unwrap();
if let Some(current_track) = current { if let Some(current_track) = current {
match current_track.cmp(&index) { match current_track.cmp(&index) {
Ordering::Equal => self.play(index, false, false), Ordering::Equal => {
// stop playback if we have the deleted the last item and it
// was playing
if current_track == len {
self.stop();
} else {
self.play(index, false, false);
}
}
Ordering::Greater => { Ordering::Greater => {
let mut current = self.current_track.write().unwrap(); let mut current = self.current_track.write().unwrap();
current.replace(current_track - 1); current.replace(current_track - 1);