From 0a6825ba61e1c321b13f407f8b7da29ba420a32f Mon Sep 17 00:00:00 2001 From: Simon Persson Date: Tue, 20 Feb 2018 21:58:02 +0100 Subject: [PATCH] Add playing_to_end_of_track method to PlayerState. --- playback/src/player.rs | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/playback/src/player.rs b/playback/src/player.rs index 9546a494..7438b744 100644 --- a/playback/src/player.rs +++ b/playback/src/player.rs @@ -170,12 +170,24 @@ impl PlayerState { } } - fn signal_end_of_track(self) { + fn send_end_of_track(self) { use self::PlayerState::*; match self { Paused { end_of_track, .. } | Playing { end_of_track, .. } => { let _ = end_of_track.send(()); + }, + _ => () + } + } + + fn playing_to_end_of_track(&mut self) { + use self::PlayerState::*; + match *self { + Paused { track_id, .. } | + Playing { track_id, .. } => { + let old_state = mem::replace(self, EndOfTrack { track_id }); + old_state.send_end_of_track(); } EndOfTrack { .. } => warn!("signal_end_of_track from end of track state"), @@ -295,16 +307,7 @@ impl PlayerInternal { None => { self.stop_sink(); - - let new_state = match self.state { - PlayerState::Playing { track_id, .. } - | PlayerState::Paused { track_id, .. } => - PlayerState::EndOfTrack { track_id }, - _ => PlayerState::Stopped, - }; - - let old_state = mem::replace(&mut self.state, new_state); - old_state.signal_end_of_track(); + self.state.playing_to_end_of_track(); } } }