Properly handle EOS in player
This commit is contained in:
parent
194334e360
commit
788ac6ba6d
|
|
@ -48,7 +48,7 @@ impl Default for Player {
|
||||||
player.toggle_play();
|
player.toggle_play();
|
||||||
}
|
}
|
||||||
Ok(PlayerEngineCommand::Eos) => {
|
Ok(PlayerEngineCommand::Eos) => {
|
||||||
player.stop();
|
player.handle_eos();
|
||||||
}
|
}
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
// FIXME: debug!(e);
|
// FIXME: debug!(e);
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,7 @@ pub enum PlayerMessage {
|
||||||
Stopped,
|
Stopped,
|
||||||
Paused,
|
Paused,
|
||||||
Playing,
|
Playing,
|
||||||
|
EndOfStream,
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO:
|
// 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 {
|
pub fn is_paused(&self) -> bool {
|
||||||
self.sink
|
self.sink
|
||||||
.as_ref()
|
.as_ref()
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue