From 1e5a5fb7d0843c79d32fdc0029728dbd2f25f5bf Mon Sep 17 00:00:00 2001 From: Thomas Adamcik Date: Tue, 19 Jul 2011 02:43:48 +0200 Subject: [PATCH] Add playback state changed event --- mopidy/backends/base/playback.py | 8 +++++++- mopidy/listeners.py | 8 ++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/mopidy/backends/base/playback.py b/mopidy/backends/base/playback.py index 7b697781..1b5e1c9f 100644 --- a/mopidy/backends/base/playback.py +++ b/mopidy/backends/base/playback.py @@ -276,6 +276,9 @@ class PlaybackController(object): def state(self, new_state): (old_state, self._state) = (self.state, new_state) logger.debug(u'Changing state: %s -> %s', old_state, new_state) + + self._trigger_playback_state_changed() + # FIXME play_time stuff assumes backend does not have a better way of # handeling this stuff :/ if (old_state in (self.PLAYING, self.STOPPED) @@ -387,7 +390,6 @@ class PlaybackController(object): self.resume() if cp_track is not None: - self.state = self.STOPPED self.current_cp_track = cp_track self.state = self.PLAYING if not self.provider.play(cp_track.track): @@ -475,6 +477,10 @@ class PlaybackController(object): track=self.current_track, time_position=self.time_position) + def _trigger_playback_state_changed(self): + logger.debug(u'Triggering playback state change event') + BackendListener.send('playback_state_changed') + class BasePlaybackProvider(object): """ diff --git a/mopidy/listeners.py b/mopidy/listeners.py index bcce0c40..f6973eaf 100644 --- a/mopidy/listeners.py +++ b/mopidy/listeners.py @@ -44,3 +44,11 @@ class BackendListener(object): :type time_position: int """ pass + + def playback_state_changed(self): + """ + Called whenever playback state is changed. + + *MAY* be implemented by actor. + """ + pass