From e57a71729a8bf937232e36ee70ac96ccb99cf124 Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Sat, 8 Sep 2012 23:01:08 +0200 Subject: [PATCH] Don't fail on GStreamer EOS if no backend is running This removes the printed AssertionError when running ScannerTest.test_data_is_set() --- mopidy/gstreamer.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/mopidy/gstreamer.py b/mopidy/gstreamer.py index 5adfd754..d9157a02 100644 --- a/mopidy/gstreamer.py +++ b/mopidy/gstreamer.py @@ -133,9 +133,7 @@ class GStreamer(ThreadingActor): def _on_message(self, bus, message): if message.type == gst.MESSAGE_EOS: - logger.debug(u'GStreamer signalled end-of-stream. ' - 'Telling backend ...') - self._get_backend().playback.on_end_of_track() + self._notify_backend_of_eos() elif message.type == gst.MESSAGE_ERROR: error, debug = message.parse_error() logger.error(u'%s %s', error, debug) @@ -144,10 +142,14 @@ class GStreamer(ThreadingActor): error, debug = message.parse_warning() logger.warning(u'%s %s', error, debug) - def _get_backend(self): + def _notify_backend_of_eos(self): backend_refs = ActorRegistry.get_by_class(Backend) - assert len(backend_refs) == 1, 'Expected exactly one running backend.' - return backend_refs[0].proxy() + assert len(backend_refs) <= 1, 'Expected at most one running backend.' + if backend_refs: + logger.debug(u'Notifying backend of end-of-stream.') + backend_refs[0].proxy().playback.on_end_of_track() + else: + logger.debug(u'No backend to notify of end-of-stream found.') def set_uri(self, uri): """