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()