summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Kukkonen <jussi.kukkonen@intel.com>2013-02-20 19:00:40 +0200
committerMark Ryan <mark.d.ryan@intel.com>2013-03-06 15:47:44 +0100
commit5eef9017d96dc5065dd753bab92bc46869bd45aa (patch)
treee33d00309d4e8ed746b0bc5fde07ee789843b9a4
parent126bd470a4161279081f741edad223709531f1c4 (diff)
downloaddleyna-control-5eef9017d96dc5065dd753bab92bc46869bd45aa.tar.gz
[Player] Fix seeking
Do seeks so that the UI doesn't block. Enable seeking while playing. Fixes #3 Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
-rw-r--r--src/msd/msd_player.py14
1 files changed, 6 insertions, 8 deletions
diff --git a/src/msd/msd_player.py b/src/msd/msd_player.py
index e2cba6e..b8c39ab 100644
--- a/src/msd/msd_player.py
+++ b/src/msd/msd_player.py
@@ -147,7 +147,9 @@ class GStreamerWindow(PlayWindowBase):
pos = self.player.query_position(gst.FORMAT_TIME, None)[0]
if pos != -1:
pos = pos / 1000000000.0
+ self.__adjustment.handler_block_by_func(self.__adjusted)
self.__adjustment.set_value(pos)
+ self.__adjustment.handler_unblock_by_func(self.__adjusted)
except Exception:
pass
return True
@@ -160,13 +162,12 @@ class GStreamerWindow(PlayWindowBase):
PlayWindowBase.quit(self, button)
def __seek (self, position):
- self.player.seek_simple(gst.FORMAT_TIME, gst.SEEK_FLAG_FLUSH,
- position)
+ self.player.seek(1.0, gst.FORMAT_TIME, gst.SEEK_FLAG_FLUSH,
+ gst.SEEK_TYPE_SET, position,
+ gst.SEEK_TYPE_NONE, -1.0)
def __adjusted(self, adjustment):
- (ret, state, pending) = self.player.get_state()
- if state != gst.STATE_PLAYING:
- self.__seek(adjustment.get_value() * 1000000000)
+ self.__seek(adjustment.get_value() * 1000000000.0)
def __format_time(self, scale, value):
pos = int(self.__adjustment.get_value())
@@ -188,7 +189,6 @@ class GStreamerWindow(PlayWindowBase):
self.__duration,
.5, .5, 0)
self.__scale.set_adjustment(self.__adjustment)
- self.__scale.set_sensitive(False)
self.__adjustment.connect("value-changed",
self.__adjusted)
self.__scale.connect("format-value", self.__format_time)
@@ -199,7 +199,6 @@ class GStreamerWindow(PlayWindowBase):
if self.__state == gst.STATE_PLAYING:
self.__play_pause_image.set_from_stock(gtk.STOCK_MEDIA_PAUSE,
gtk.ICON_SIZE_BUTTON)
- self.__scale.set_sensitive(False)
if self.__update_pos_id == 0:
self.__update_pos_id = glib.timeout_add(500,
self.__update_pos,
@@ -207,7 +206,6 @@ class GStreamerWindow(PlayWindowBase):
else:
self.__play_pause_image.set_from_stock(gtk.STOCK_MEDIA_PLAY,
gtk.ICON_SIZE_BUTTON)
- self.__scale.set_sensitive(True)
if self.__update_pos_id != 0:
glib.source_remove(self.__update_pos_id)
self.__update_pos_id = 0