diff --git a/mopidy/core/actor.py b/mopidy/core/actor.py index 231fe523..a4f184bf 100644 --- a/mopidy/core/actor.py +++ b/mopidy/core/actor.py @@ -5,14 +5,16 @@ import itertools import pykka from mopidy.audio import AudioListener, PlaybackState +from mopidy.backends.listener import BackendListener from .library import LibraryController +from .listener import CoreListener from .playback import PlaybackController from .playlists import PlaylistsController from .tracklist import TracklistController -class Core(pykka.ThreadingActor, AudioListener): +class Core(pykka.ThreadingActor, AudioListener, BackendListener): #: The library controller. An instance of # :class:`mopidy.core.LibraryController`. library = None @@ -67,6 +69,10 @@ class Core(pykka.ThreadingActor, AudioListener): self.playback.state = new_state self.playback._trigger_track_playback_paused() + def playlists_loaded(self): + # Forward event from backend to frontends + CoreListener.send('playlists_loaded') + class Backends(list): def __init__(self, backends): diff --git a/tests/core/events_test.py b/tests/core/events_test.py index 212f3b5d..8f969b0d 100644 --- a/tests/core/events_test.py +++ b/tests/core/events_test.py @@ -20,6 +20,11 @@ class BackendEventsTest(unittest.TestCase): def tearDown(self): pykka.ActorRegistry.stop_all() + def test_backends_playlists_loaded_forwards_event_to_frontends(self, send): + send.reset_mock() + self.core.playlists_loaded().get() + self.assertEqual(send.call_args[0][0], 'playlists_loaded') + def test_pause_sends_track_playback_paused_event(self, send): self.core.tracklist.add(Track(uri='dummy:a')) self.core.playback.play().get()