From 4e0b51ffbddaab2c2737d8fdd8b68d22fffd6bba Mon Sep 17 00:00:00 2001 From: Johannes Knutsen Date: Mon, 16 Aug 2010 18:50:29 +0200 Subject: [PATCH 1/3] remove consume on next() since it should be performed only at end of track --- mopidy/backends/base/playback.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/mopidy/backends/base/playback.py b/mopidy/backends/base/playback.py index 973743e5..4dd0271b 100644 --- a/mopidy/backends/base/playback.py +++ b/mopidy/backends/base/playback.py @@ -322,18 +322,12 @@ class BasePlaybackController(object): if self.state == self.STOPPED: return - original_cp_track = self.current_cp_track if self.cp_track_at_next: self.play(self.cp_track_at_next) else: self.stop() self.current_cp_track = None - # FIXME This should only be applied when reaching end of track, and not - # when pressing "next" - if self.consume: - self.backend.current_playlist.remove(cpid=original_cp_track[0]) - if self.random and self.current_cp_track in self._shuffled: self._shuffled.remove(self.current_cp_track) From 5524b1a0114c5d3c31530dded75b131b7f1c63c0 Mon Sep 17 00:00:00 2001 From: Johannes Knutsen Date: Mon, 16 Aug 2010 21:00:31 +0200 Subject: [PATCH 2/3] test next() keeps skipped cp track, but end_of_track removes track --- tests/backends/base.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tests/backends/base.py b/tests/backends/base.py index 05379c57..31892de2 100644 --- a/tests/backends/base.py +++ b/tests/backends/base.py @@ -832,6 +832,13 @@ class BasePlaybackControllerTest(object): self.playback.consume = True self.playback.play() self.playback.next() + self.assert_(self.tracks[0] in self.backend.current_playlist.tracks) + + @populate_playlist + def test_end_of_track_with_consume(self): + self.playback.consume = True + self.playback.play() + self.playback.end_of_track_callback() self.assert_(self.tracks[0] not in self.backend.current_playlist.tracks) @populate_playlist @@ -847,7 +854,7 @@ class BasePlaybackControllerTest(object): self.playback.consume = True self.playback.play() for i in range(len(self.backend.current_playlist.tracks)): - self.playback.next() + self.playback.end_of_track_callback() self.assertEqual(len(self.backend.current_playlist.tracks), 0) @populate_playlist From 0e875da0e8bde1243195b3592501bc09fe6fd596 Mon Sep 17 00:00:00 2001 From: Johannes Knutsen Date: Mon, 16 Aug 2010 21:01:16 +0200 Subject: [PATCH 3/3] make consume also remove the last track in cp when finished playing --- mopidy/backends/base/playback.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mopidy/backends/base/playback.py b/mopidy/backends/base/playback.py index 4dd0271b..bb0ab3dc 100644 --- a/mopidy/backends/base/playback.py +++ b/mopidy/backends/base/playback.py @@ -291,15 +291,15 @@ class BasePlaybackController(object): if self.cp_track_at_eot: self.play(self.cp_track_at_eot) - if self.consume: - self.backend.current_playlist.remove(cpid=original_cp_track[0]) - if self.random and self.current_cp_track in self._shuffled: self._shuffled.remove(self.current_cp_track) else: self.stop() self.current_cp_track = None + if self.consume: + self.backend.current_playlist.remove(cpid=original_cp_track[0]) + def on_current_playlist_change(self): """ Tell the playback controller that the current playlist has changed.