From 28e5ed8b2e29124d303ac5010a68509fbc8e827d Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Fri, 14 Sep 2012 23:23:58 +0200 Subject: [PATCH] Send old and new state to playback_state_changed listeners --- mopidy/core/playback.py | 7 ++++--- mopidy/frontends/mpd/__init__.py | 2 +- mopidy/listeners.py | 7 ++++++- tests/listeners_test.py | 4 +++- 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/mopidy/core/playback.py b/mopidy/core/playback.py index 31a1acc5..73866f16 100644 --- a/mopidy/core/playback.py +++ b/mopidy/core/playback.py @@ -290,7 +290,7 @@ class PlaybackController(object): (old_state, self._state) = (self.state, new_state) logger.debug(u'Changing state: %s -> %s', old_state, new_state) - self._trigger_playback_state_changed() + self._trigger_playback_state_changed(old_state, new_state) # FIXME play_time stuff assumes backend does not have a better way of # handeling this stuff :/ @@ -544,9 +544,10 @@ class PlaybackController(object): track=self.current_track, time_position=self.time_position) - def _trigger_playback_state_changed(self): + def _trigger_playback_state_changed(self, old_state, new_state): logger.debug(u'Triggering playback state change event') - BackendListener.send('playback_state_changed') + BackendListener.send('playback_state_changed', + old_state=old_state, new_state=new_state) def _trigger_options_changed(self): logger.debug(u'Triggering options changed event') diff --git a/mopidy/frontends/mpd/__init__.py b/mopidy/frontends/mpd/__init__.py index e8b2aabe..3d739c51 100644 --- a/mopidy/frontends/mpd/__init__.py +++ b/mopidy/frontends/mpd/__init__.py @@ -51,7 +51,7 @@ class MpdFrontend(actor.ThreadingActor, listeners.BackendListener): 'kwargs': {}, }, target_class=MpdSession) - def playback_state_changed(self): + def playback_state_changed(self, old_state, new_state): self.send_idle('player') def playlist_changed(self): diff --git a/mopidy/listeners.py b/mopidy/listeners.py index ee360bf3..8958ac2c 100644 --- a/mopidy/listeners.py +++ b/mopidy/listeners.py @@ -74,11 +74,16 @@ class BackendListener(object): """ pass - def playback_state_changed(self): + def playback_state_changed(self, old_state, new_state): """ Called whenever playback state is changed. *MAY* be implemented by actor. + + :param old_state: the state before the change + :type old_state: string from :class:`mopidy.core.PlaybackState` field + :param new_state: the state after the change + :type new_state: string from :class:`mopidy.core.PlaybackState` field """ pass diff --git a/tests/listeners_test.py b/tests/listeners_test.py index 486dcf9c..7a1c6fb9 100644 --- a/tests/listeners_test.py +++ b/tests/listeners_test.py @@ -1,3 +1,4 @@ +from mopidy.core import PlaybackState from mopidy.listeners import BackendListener from mopidy.models import Track @@ -21,7 +22,8 @@ class BackendListenerTest(unittest.TestCase): self.listener.track_playback_ended(Track(), 0) def test_listener_has_default_impl_for_playback_state_changed(self): - self.listener.playback_state_changed() + self.listener.playback_state_changed( + PlaybackState.STOPPED, PlaybackState.PLAYING) def test_listener_has_default_impl_for_playlist_changed(self): self.listener.playlist_changed()