From 2ba4889cd7a2227bc54f4afd81e778fef14b8a40 Mon Sep 17 00:00:00 2001 From: Thomas Adamcik Date: Sun, 7 Feb 2010 06:09:09 +0100 Subject: [PATCH] Use property for state in gstreamer --- mopidy/backends/__init__.py | 3 ++- mopidy/backends/gstreamer.py | 16 +++++++++++----- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/mopidy/backends/__init__.py b/mopidy/backends/__init__.py index 8f60c33b..d4f0270e 100644 --- a/mopidy/backends/__init__.py +++ b/mopidy/backends/__init__.py @@ -25,10 +25,11 @@ class BasePlaybackController(object): PAUSED = 'paused' PLAYING = 'playing' STOPPED = 'stopped' + + state = STOPPED def __init__(self, backend): self.backend = backend - self.state = self.STOPPED self.current_track = None self.playlist_position = None diff --git a/mopidy/backends/gstreamer.py b/mopidy/backends/gstreamer.py index aa6b3646..f613f879 100644 --- a/mopidy/backends/gstreamer.py +++ b/mopidy/backends/gstreamer.py @@ -28,9 +28,11 @@ class GStreamerCurrentPlaylistController(BaseCurrentPlaylistController): self.playlist = Playlist(tracks=tracks) class GStreamerPlaybackController(BasePlaybackController): - PAUSED = gst.STATE_PAUSED - PLAYING = gst.STATE_PLAYING - STOPPED = gst.STATE_NULL + STATE_MAPPING = { + gst.STATE_PAUSED: BasePlaybackController.PAUSED, + gst.STATE_PLAYING: BasePlaybackController.PLAYING, + gst.STATE_NULL: BasePlaybackController.STOPPED, + } def __init__(self, backend): super(GStreamerPlaybackController, self).__init__(backend) @@ -42,6 +44,11 @@ class GStreamerPlaybackController(BasePlaybackController): self.bin = bin + @property + def state(self): + gst_state = self.bin.get_state() + return self.STATE_MAPPING.get(gst_state, self.STOPPED) + def play(self, id=None, position=None): playlist = self.backend.current_playlist.playlist @@ -52,8 +59,7 @@ class GStreamerPlaybackController(BasePlaybackController): self.playlist_position = 0 self.bin.set_property("uri", self.current_track.uri) - self.bin.set_state(self.PLAYING) - self.state = self.PLAYING + self.bin.set_state(gst.STATE_PLAYING) return True