From b5da3c3404ab0d774a5d69b5ff4b25b95ce25c71 Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Sun, 20 Mar 2011 01:37:06 +0100 Subject: [PATCH] GStreamerOutput need a reference to the backend for notifying it on end of track --- mopidy/outputs/gstreamer.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/mopidy/outputs/gstreamer.py b/mopidy/outputs/gstreamer.py index 2a3d9adc..29ffbecc 100644 --- a/mopidy/outputs/gstreamer.py +++ b/mopidy/outputs/gstreamer.py @@ -5,8 +5,10 @@ import gst import logging from pykka.actor import ThreadingActor +from pykka.registry import ActorRegistry from mopidy import settings +from mopidy.backends.base import Backend from mopidy.outputs.base import BaseOutput logger = logging.getLogger('mopidy.outputs.gstreamer') @@ -74,8 +76,8 @@ class GStreamerOutput(ThreadingActor, BaseOutput): """Process messages from GStreamer.""" if message.type == gst.MESSAGE_EOS: logger.debug(u'GStreamer signalled end-of-stream. ' - 'Sending end_of_track to core_queue ...') - self.core_queue.put({'command': 'end_of_track'}) + 'Telling backend ...') + self._get_backend().playback.on_end_of_track() elif message.type == gst.MESSAGE_ERROR: self.set_state('NULL') error, debug = message.parse_error() @@ -83,6 +85,11 @@ class GStreamerOutput(ThreadingActor, BaseOutput): # FIXME Should we send 'stop_playback' to the backend here? Can we # differentiate on how serious the error is? + def _get_backend(self): + backend_refs = ActorRegistry.get_by_class(Backend) + assert len(backend_refs) == 1, 'Expected exactly one running backend.' + return backend_refs[0].proxy() + def play_uri(self, uri): """Play audio at URI""" self.set_state('READY')