From bb73f8ae5ff920178bd90f5b62a4369d21f57c8d Mon Sep 17 00:00:00 2001 From: Thomas Adamcik Date: Sat, 14 Aug 2010 18:53:31 +0200 Subject: [PATCH] Update set_state to block for async state changes --- mopidy/outputs/gstreamer.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mopidy/outputs/gstreamer.py b/mopidy/outputs/gstreamer.py index da42a15b..13563a80 100644 --- a/mopidy/outputs/gstreamer.py +++ b/mopidy/outputs/gstreamer.py @@ -170,6 +170,10 @@ class GStreamerProcess(BaseProcess): """ result = self.gst_pipeline.set_state( getattr(gst, 'STATE_' + state_name)) + # Block until state change has occured, required for at least the local + # backends seek functionality. (Optional solution is to block in set + # position to ensure that change occours) + self.gst_pipeline.get_state() if result == gst.STATE_CHANGE_FAILURE: logger.warning('Setting GStreamer state to %s: failed', state_name) return False @@ -190,7 +194,6 @@ class GStreamerProcess(BaseProcess): self.gst_volume.set_property('volume', gst_volume) def set_position(self, position): - logger.info('Seeking to %s' % position) self.gst_pipeline.seek_simple(gst.Format(gst.FORMAT_TIME), gst.SEEK_FLAG_FLUSH, position * gst.MSECOND) self.set_state('PLAYING')