mirror of
https://github.com/Dangoware/dmp-core.git
synced 2025-04-19 13:22:54 -05:00
Added more error handling
This commit is contained in:
parent
d12d65c518
commit
38d4fe9bc8
1 changed files with 15 additions and 14 deletions
|
@ -140,9 +140,9 @@ impl Player {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn enqueue_next(&mut self, next_track: &URI) {
|
pub fn enqueue_next(&mut self, next_track: &URI) {
|
||||||
self.ready();
|
self.ready().unwrap();
|
||||||
self.set_source(next_track);
|
self.set_source(next_track);
|
||||||
self.play();
|
self.play().unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Set the playback URI
|
/// Set the playback URI
|
||||||
|
@ -156,7 +156,7 @@ impl Player {
|
||||||
*self.start.write().unwrap() = Some(Duration::from_std(*start).unwrap());
|
*self.start.write().unwrap() = Some(Duration::from_std(*start).unwrap());
|
||||||
*self.end.write().unwrap() = Some(Duration::from_std(*end).unwrap());
|
*self.end.write().unwrap() = Some(Duration::from_std(*end).unwrap());
|
||||||
|
|
||||||
self.pause();
|
self.pause().unwrap();
|
||||||
|
|
||||||
// Wait for it to be ready, and then move to the proper position
|
// Wait for it to be ready, and then move to the proper position
|
||||||
while self.playbin.read().unwrap().query_duration::<ClockTime>().is_none() {
|
while self.playbin.read().unwrap().query_duration::<ClockTime>().is_none() {
|
||||||
|
@ -168,7 +168,7 @@ impl Player {
|
||||||
_ => {
|
_ => {
|
||||||
self.playbin.write().unwrap().set_property("uri", source.as_uri());
|
self.playbin.write().unwrap().set_property("uri", source.as_uri());
|
||||||
|
|
||||||
self.pause();
|
self.pause().unwrap();
|
||||||
|
|
||||||
while self.playbin.read().unwrap().query_duration::<ClockTime>().is_none() {
|
while self.playbin.read().unwrap().query_duration::<ClockTime>().is_none() {
|
||||||
std::thread::sleep(std::time::Duration::from_millis(1));
|
std::thread::sleep(std::time::Duration::from_millis(1));
|
||||||
|
@ -201,33 +201,34 @@ impl Player {
|
||||||
self.volume
|
self.volume
|
||||||
}
|
}
|
||||||
|
|
||||||
fn set_state(&mut self, state: gst::State) {
|
fn set_state(&mut self, state: gst::State) -> Result<(), gst::StateChangeError> {
|
||||||
self.playbin
|
self.playbin
|
||||||
.write()
|
.write()
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.set_state(state)
|
.set_state(state)?;
|
||||||
.expect("Unable to set the pipeline state");
|
|
||||||
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn ready(&mut self) {
|
pub fn ready(&mut self) -> Result<(), gst::StateChangeError> {
|
||||||
self.set_state(gst::State::Ready)
|
self.set_state(gst::State::Ready)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// If the player is paused or stopped, starts playback
|
/// If the player is paused or stopped, starts playback
|
||||||
pub fn play(&mut self) {
|
pub fn play(&mut self) -> Result<(), gst::StateChangeError> {
|
||||||
self.set_state(gst::State::Playing);
|
self.set_state(gst::State::Playing)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Pause, if playing
|
/// Pause, if playing
|
||||||
pub fn pause(&mut self) {
|
pub fn pause(&mut self) -> Result<(), gst::StateChangeError> {
|
||||||
self.paused = true;
|
self.paused = true;
|
||||||
self.set_state(gst::State::Paused);
|
self.set_state(gst::State::Paused)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Resume from being paused
|
/// Resume from being paused
|
||||||
pub fn resume(&mut self) {
|
pub fn resume(&mut self) -> Result<(), gst::StateChangeError> {
|
||||||
self.paused = false;
|
self.paused = false;
|
||||||
self.set_state(gst::State::Playing);
|
self.set_state(gst::State::Playing)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Check if playback is paused
|
/// Check if playback is paused
|
||||||
|
|
Loading…
Reference in a new issue