From 788ac6ba6dc8e1779c95f9862600e64acc423db8 Mon Sep 17 00:00:00 2001 From: chmanie Date: Thu, 8 Jun 2023 11:46:01 +0200 Subject: [PATCH] Properly handle EOS in player --- audio-player/src/lib.rs | 2 +- audio-player/src/player_engine.rs | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/audio-player/src/lib.rs b/audio-player/src/lib.rs index c5ae977..52e66d5 100644 --- a/audio-player/src/lib.rs +++ b/audio-player/src/lib.rs @@ -48,7 +48,7 @@ impl Default for Player { player.toggle_play(); } Ok(PlayerEngineCommand::Eos) => { - player.stop(); + player.handle_eos(); } Err(e) => { // FIXME: debug!(e); diff --git a/audio-player/src/player_engine.rs b/audio-player/src/player_engine.rs index 42a95f6..9abee90 100644 --- a/audio-player/src/player_engine.rs +++ b/audio-player/src/player_engine.rs @@ -33,6 +33,7 @@ pub enum PlayerMessage { Stopped, Paused, Playing, + EndOfStream, } // TODO: @@ -121,6 +122,15 @@ impl PlayerEngine { } } + pub fn handle_eos(&mut self) { + if let Some(sink) = &self.sink { + sink.stop(); + self.sink.take(); + self.stream.take(); + self.tx_player.send(PlayerMessage::EndOfStream); + } + } + pub fn is_paused(&self) -> bool { self.sink .as_ref()