diff --git a/mopidy/backends/__init__.py b/mopidy/backends/__init__.py index 8c963aec..6f39c8ec 100644 --- a/mopidy/backends/__init__.py +++ b/mopidy/backends/__init__.py @@ -14,6 +14,9 @@ class BaseBackend(object): stored_playlists = None uri_handlers = [] + def destroy(self): + self.playback.destroy() + class BaseCurrentPlaylistController(object): def __init__(self, backend): self.backend = backend @@ -164,3 +167,6 @@ class BasePlaybackController(object): @property def volume(self): return self._volume + + def destroy(self): + pass diff --git a/mopidy/backends/gstreamer.py b/mopidy/backends/gstreamer.py index 089de4ec..7f807389 100644 --- a/mopidy/backends/gstreamer.py +++ b/mopidy/backends/gstreamer.py @@ -93,3 +93,7 @@ class GStreamerPlaybackController(BasePlaybackController): @volume.setter def volume(self, value): return self.bin.set_property('volume', float(value) / 100) + + def destroy(self): + self.bin.set_state(gst.STATE_NULL) + del self.bin diff --git a/tests/backends/basetests.py b/tests/backends/basetests.py index a9d88861..b8395d03 100644 --- a/tests/backends/basetests.py +++ b/tests/backends/basetests.py @@ -196,6 +196,9 @@ class BasePlaybackControllerTest(object): self.backend = self.backend_class() self.playback = self.backend.playback + def tearDown(self): + self.backend.destroy() + def test_initial_state_is_stopped(self): self.assertEqual(self.playback.state, self.playback.STOPPED)