From 4d3c0713283166e934e902d9340a167e25682b2d Mon Sep 17 00:00:00 2001 From: Henrik Friedrichsen Date: Sat, 13 Jun 2020 20:36:05 +0200 Subject: [PATCH] report stopped playback when player task or session has died --- src/spotify.rs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/spotify.rs b/src/spotify.rs index 3bad3b8..6ae3d54 100644 --- a/src/spotify.rs +++ b/src/spotify.rs @@ -143,10 +143,6 @@ impl futures::Future for Worker { loop { let mut progress = false; - if self.session.is_invalid() { - return Poll::Ready(Result::Err(())); - } - if let Poll::Ready(Some(cmd)) = self.commands.as_mut().poll_next(cx) { progress = true; debug!("message received!"); @@ -195,7 +191,8 @@ impl futures::Future for Worker { self.events.send(Event::Player(PlayerEvent::FinishedTrack)); } Poll::Ready(Err(Canceled)) => { - debug!("player task is over!"); + error!("player task was cancelled!"); + self.events.send(Event::Player(PlayerEvent::Stopped)); self.play_task = Box::pin(futures::future::pending()); } Poll::Pending => (), @@ -219,6 +216,11 @@ impl futures::Future for Worker { _ => (), } + if self.session.is_invalid() { + self.events.send(Event::Player(PlayerEvent::Stopped)); + return Poll::Ready(Result::Err(())); + } + if !progress { return Poll::Pending; }