player: Update the position on pause/play events.

This commit is contained in:
Paul Lietar 2016-02-24 00:36:19 +00:00
parent c3c258dfaf
commit de357e63c9

View file

@ -159,11 +159,7 @@ impl PlayerInternal {
stream.stop().unwrap(); stream.stop().unwrap();
} }
state.end_of_track = false; state.end_of_track = false;
state.status = if play { state.status = PlayStatus::kPlayStatusPause;
PlayStatus::kPlayStatusPlay
} else {
PlayStatus::kPlayStatusPause
};
state.position_ms = position; state.position_ms = position;
state.position_measured_at = util::now_ms(); state.position_measured_at = util::now_ms();
true true
@ -228,6 +224,9 @@ impl PlayerInternal {
Some(PlayerCommand::Play) => { Some(PlayerCommand::Play) => {
self.update(|state| { self.update(|state| {
state.status = PlayStatus::kPlayStatusPlay; state.status = PlayStatus::kPlayStatusPlay;
state.position_ms =
(decoder.as_mut().unwrap().time_tell().unwrap() * 1000f64) as u32;
state.position_measured_at = util::now_ms();
true true
}); });
@ -237,6 +236,9 @@ impl PlayerInternal {
self.update(|state| { self.update(|state| {
state.status = PlayStatus::kPlayStatusPause; state.status = PlayStatus::kPlayStatusPause;
state.update_time = util::now_ms(); state.update_time = util::now_ms();
state.position_ms =
(decoder.as_mut().unwrap().time_tell().unwrap() * 1000f64) as u32;
state.position_measured_at = util::now_ms();
true true
}); });
@ -253,6 +255,8 @@ impl PlayerInternal {
if state.status == PlayStatus::kPlayStatusPlay { if state.status == PlayStatus::kPlayStatusPlay {
state.status = PlayStatus::kPlayStatusPause; state.status = PlayStatus::kPlayStatusPause;
} }
state.position_ms = 0;
state.position_measured_at = util::now_ms();
true true
}); });
@ -286,20 +290,6 @@ impl PlayerInternal {
decoder = None; decoder = None;
} }
} }
self.update(|state| {
let now = util::now_ms();
if now - state.position_measured_at > 5000 {
state.position_ms =
(decoder.as_mut().unwrap().time_tell().unwrap() * 1000f64) as u32;
state.position_measured_at = now;
true
} else {
false
}
});
} }
} }