From c6b85f7d9be5d2e70c1e8e4f7d52529c644b3449 Mon Sep 17 00:00:00 2001 From: Henrik Friedrichsen Date: Sun, 22 Mar 2020 09:06:08 +0100 Subject: [PATCH] only stop playback if the last item was deleted AND playing fixes #159 --- src/queue.rs | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/queue.rs b/src/queue.rs index 68340f6..38b3ad2 100644 --- a/src/queue.rs +++ b/src/queue.rs @@ -130,10 +130,9 @@ impl Queue { q.remove(index); } - // if the queue is empty or we are at the end of the queue, stop - // playback + // if the queue is empty stop playback let len = self.queue.read().unwrap().len(); - if len == 0 || index == len { + if len == 0 { self.stop(); return; } @@ -144,7 +143,15 @@ impl Queue { let current = *self.current_track.read().unwrap(); if let Some(current_track) = current { 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 => { let mut current = self.current_track.write().unwrap(); current.replace(current_track - 1);