From e00b590ae9757edbb565a8e788a54defd76a6bed Mon Sep 17 00:00:00 2001 From: Thomas Adamcik Date: Tue, 30 Oct 2012 22:30:13 +0100 Subject: [PATCH] Detangle EOT and EOS. This commit tries to detangle EOS from EOT which we have incorrectly intermingled. EOS events should only be happening at the end of the playlist when we are about to stop. EOT handling has been removed / broken in this change, and will need to be re-added with proper tests. --- mopidy/core/actor.py | 2 +- mopidy/core/playback.py | 7 +++++-- tests/backends/base/playback.py | 6 ++++++ 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/mopidy/core/actor.py b/mopidy/core/actor.py index cd4ba180..072a989b 100644 --- a/mopidy/core/actor.py +++ b/mopidy/core/actor.py @@ -56,7 +56,7 @@ class Core(pykka.ThreadingActor, AudioListener, BackendListener): """List of URI schemes we can handle""" def reached_end_of_stream(self): - self.playback.on_end_of_track() + self.playback.on_end_of_stream() def state_changed(self, old_state, new_state): # XXX: This is a temporary fix for issue #232 while we wait for a more diff --git a/mopidy/core/playback.py b/mopidy/core/playback.py index 4941ef0f..73227f68 100644 --- a/mopidy/core/playback.py +++ b/mopidy/core/playback.py @@ -312,6 +312,11 @@ class PlaybackController(object): elif old_state == PlaybackState.PAUSED: self.pause() + def on_end_of_stream(self): + self._trigger_track_playback_ended() + self.state = PlaybackState.STOPPED + self.current_cp_track = None + def on_end_of_track(self): """ Tell the playback controller that end of track is reached. @@ -326,8 +331,6 @@ class PlaybackController(object): if self.tl_track_at_eot: self._trigger_track_playback_ended() self.play(self.tl_track_at_eot) - else: - self.stop(clear_current_track=True) if self.consume: self.core.tracklist.remove(tlid=original_tl_track.tlid) diff --git a/tests/backends/base/playback.py b/tests/backends/base/playback.py index 09dffbab..ea6cbbf4 100644 --- a/tests/backends/base/playback.py +++ b/tests/backends/base/playback.py @@ -110,6 +110,7 @@ class PlaybackControllerTest(object): def test_current_track_after_completed_playlist(self): self.playback.play(self.tracklist.tl_tracks[-1]) self.playback.on_end_of_track() + self.playback.on_end_of_stream() self.assertEqual(self.playback.state, PlaybackState.STOPPED) self.assertEqual(self.playback.current_track, None) @@ -338,6 +339,8 @@ class PlaybackControllerTest(object): self.playback.on_end_of_track() + self.playback.on_end_of_stream() + self.assertEqual(self.playback.state, PlaybackState.STOPPED) @populate_tracklist @@ -346,6 +349,7 @@ class PlaybackControllerTest(object): for _ in self.tracks: self.playback.on_end_of_track() + self.playback.on_end_of_stream() self.assertEqual(self.playback.current_track, None) self.assertEqual(self.playback.state, PlaybackState.STOPPED) @@ -510,6 +514,7 @@ class PlaybackControllerTest(object): def test_tracklist_position_at_end_of_playlist(self): self.playback.play(self.tracklist.tl_tracks[-1]) self.playback.on_end_of_track() + self.playback.on_end_of_stream() self.assertEqual(self.playback.tracklist_position, None) def test_on_tracklist_change_gets_called(self): @@ -815,6 +820,7 @@ class PlaybackControllerTest(object): def test_end_of_playlist_stops(self): self.playback.play(self.tracklist.tl_tracks[-1]) self.playback.on_end_of_track() + self.playback.on_end_of_stream() self.assertEqual(self.playback.state, PlaybackState.STOPPED) def test_repeat_off_by_default(self):