diff --git a/docs/changes.rst b/docs/changes.rst index db03498c..f234fac0 100644 --- a/docs/changes.rst +++ b/docs/changes.rst @@ -8,6 +8,10 @@ This change log is used to track all major changes to Mopidy. v0.6.0 (in development) ======================= +**Important changes** + +- Pykka 0.12.3 or greater is required. + **Changes** - Replace :attr:`mopidy.backends.base.Backend.uri_handlers` with diff --git a/docs/installation/index.rst b/docs/installation/index.rst index 5101cc84..198ac9e8 100644 --- a/docs/installation/index.rst +++ b/docs/installation/index.rst @@ -25,7 +25,7 @@ Otherwise, make sure you got the required dependencies installed. - Python >= 2.6, < 3 -- `Pykka `_ >= 0.12 +- `Pykka `_ >= 0.12.3 - GStreamer >= 0.10, with Python bindings. See :doc:`gstreamer`. diff --git a/mopidy/backends/base/playback.py b/mopidy/backends/base/playback.py index 5155418f..f6a780ba 100644 --- a/mopidy/backends/base/playback.py +++ b/mopidy/backends/base/playback.py @@ -487,32 +487,58 @@ class PlaybackController(object): self.current_cp_track = None def _trigger_paused_playing_event(self): + logger.debug(u'Triggering paused playing event') if self.current_track is None: return - for listener_ref in ActorRegistry.get_by_class(BackendListener): - listener_ref.proxy().paused_playing( - track=self.current_track, time_position=self.time_position) + ActorRegistry.broadcast({ + 'command': 'pykka_call', + 'attr_path': ('paused_playing',), + 'args': [], + 'kwargs': { + 'track': self.current_track, + 'time_position': self.time_position, + }, + }, target_class=BackendListener) def _trigger_resumed_playing_event(self): + logger.debug(u'Triggering resumed playing event') if self.current_track is None: return - for listener_ref in ActorRegistry.get_by_class(BackendListener): - listener_ref.proxy().resumed_playing( - track=self.current_track, time_position=self.time_position) + ActorRegistry.broadcast({ + 'command': 'pykka_call', + 'attr_path': ('resumed_playing',), + 'args': [], + 'kwargs': { + 'track': self.current_track, + 'time_position': self.time_position, + }, + }, target_class=BackendListener) def _trigger_started_playing_event(self): + logger.debug(u'Triggering started playing event') if self.current_track is None: return - for listener_ref in ActorRegistry.get_by_class(BackendListener): - listener_ref.proxy().started_playing(track=self.current_track) + ActorRegistry.broadcast({ + 'command': 'pykka_call', + 'attr_path': ('started_playing',), + 'args': [], + 'kwargs': {'track': self.current_track}, + }, target_class=BackendListener) def _trigger_stopped_playing_event(self): # TODO Test that this is called on next/prev/end-of-track + logger.debug(u'Triggering stopped playing event') if self.current_track is None: return - for listener_ref in ActorRegistry.get_by_class(BackendListener): - listener_ref.proxy().stopped_playing( - track=self.current_track, time_position=self.time_position) + ActorRegistry.broadcast({ + 'command': 'pykka_call', + 'attr_path': ('stopped_playing',), + 'args': [], + 'kwargs': { + 'track': self.current_track, + 'time_position': self.time_position, + }, + }, target_class=BackendListener) class BasePlaybackProvider(object): diff --git a/mopidy/frontends/mpris.py b/mopidy/frontends/mpris.py index 8291a226..bbc7230f 100644 --- a/mopidy/frontends/mpris.py +++ b/mopidy/frontends/mpris.py @@ -108,6 +108,7 @@ class MprisFrontend(ThreadingActor, BackendListener): logger.debug(u'Startup notification was not sent (%s)', e) def paused_playing(self, track, time_position): + logger.debug(u'Received paused playing event') if self.mpris_object is None: return self.mpris_object.PropertiesChanged(PLAYER_IFACE, { @@ -116,6 +117,7 @@ class MprisFrontend(ThreadingActor, BackendListener): }, []) def resumed_playing(self, track, time_position): + logger.debug(u'Received resumed playing event') if self.mpris_object is None: return self.mpris_object.PropertiesChanged(PLAYER_IFACE, { @@ -124,6 +126,7 @@ class MprisFrontend(ThreadingActor, BackendListener): }, []) def started_playing(self, track): + logger.debug(u'Received started playing event') if self.mpris_object is None: return self.mpris_object.PropertiesChanged(PLAYER_IFACE, { @@ -133,6 +136,7 @@ class MprisFrontend(ThreadingActor, BackendListener): }, []) def stopped_playing(self, track, time_position): + logger.debug(u'Received stopped playing event') if self.mpris_object is None: return self.mpris_object.PropertiesChanged(PLAYER_IFACE, { diff --git a/requirements/core.txt b/requirements/core.txt index aaae84f8..8f9da622 100644 --- a/requirements/core.txt +++ b/requirements/core.txt @@ -1 +1 @@ -Pykka >= 0.12 +Pykka >= 0.12.3