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):