From 6b7256a9556cc719173591be3371d4b8fdc3d140 Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Wed, 14 Nov 2012 10:51:52 +0100 Subject: [PATCH] audio: Explicitly disconnect signal handles on teardown --- mopidy/audio/actor.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/mopidy/audio/actor.py b/mopidy/audio/actor.py index a7b4e8d8..c2448e1f 100644 --- a/mopidy/audio/actor.py +++ b/mopidy/audio/actor.py @@ -40,7 +40,8 @@ class Audio(pykka.ThreadingActor): self._mixer_track = None self._software_mixing = False - self._message_processor_set_up = False + self._notify_source_signal_id = None + self._message_signal_id = None def on_start(self): try: @@ -63,7 +64,8 @@ class Audio(pykka.ThreadingActor): fakesink = gst.element_factory_make('fakesink') self._playbin.set_property('video-sink', fakesink) - self._playbin.connect('notify::source', self._on_new_source) + self._notify_source_signal_id = self._playbin.connect( + 'notify::source', self._on_new_source) def _on_new_source(self, element, pad): uri = element.get_property('uri') @@ -79,6 +81,8 @@ class Audio(pykka.ThreadingActor): source.set_property('caps', default_caps) def _teardown_playbin(self): + if self._notify_source_signal_id: + self._playbin.disconnect(self._notify_source_signal_id) self._playbin.set_state(gst.STATE_NULL) def _setup_output(self): @@ -151,12 +155,12 @@ class Audio(pykka.ThreadingActor): def _setup_message_processor(self): bus = self._playbin.get_bus() bus.add_signal_watch() - bus.connect('message', self._on_message) - self._message_processor_set_up = True + self._message_signal_id = bus.connect('message', self._on_message) def _teardown_message_processor(self): - if self._message_processor_set_up: + if self._message_signal_id: bus = self._playbin.get_bus() + bus.disconnect(self._message_signal_id) bus.remove_signal_watch() def _on_message(self, bus, message):