[gnome-music/wip/mschraal/player-factor-out-gstreamer: 19/42] add duration property add seek to gstplayer
- From: Marinus Schraal <mschraal src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-music/wip/mschraal/player-factor-out-gstreamer: 19/42] add duration property add seek to gstplayer
- Date: Fri, 9 Feb 2018 20:54:24 +0000 (UTC)
commit fc88fe92466e725a7abafb0fe6dc133157970bd9
Author: Marinus Schraal <mschraal gnome org>
Date: Fri Feb 9 12:41:16 2018 +0100
add duration property
add seek to gstplayer
gnomemusic/gstplayer.py | 16 +++++++++++++++-
gnomemusic/player.py | 24 ++++++++++++------------
2 files changed, 27 insertions(+), 13 deletions(-)
---
diff --git a/gnomemusic/gstplayer.py b/gnomemusic/gstplayer.py
index 0d46430..d32a906 100644
--- a/gnomemusic/gstplayer.py
+++ b/gnomemusic/gstplayer.py
@@ -231,11 +231,25 @@ class GstPlayer(GObject.GObject):
@GObject.Property
@log
def position(self):
- """Position in seconds"""
+ """Position in seconds (float)"""
position = self._player.query_position(Gst.Format.TIME)[1] / 10**9
print("position ", position)
return position
+ @GObject.Property
+ @log
+ def duration(self):
+ """Total duration in seconds (float)"""
+ duration = self._player.query_duration(Gst.Format.TIME)[1] / 10**9
+ print("duration ", duration)
+ return duration
+
+ @log
+ def seek(self, seconds):
+ """Seek to"""
+ self._player.seek_simple(
+ Gst.Format.TIME, Gst.SeekFlags.FLUSH | Gst.SeekFlags.KEY_UNIT,
+ seconds * 10**9)
@log
def _start_plugin_installation(
self, missing_plugin_messages, confirm_search):
diff --git a/gnomemusic/player.py b/gnomemusic/player.py
index 45d3300..f1a34b1 100644
--- a/gnomemusic/player.py
+++ b/gnomemusic/player.py
@@ -684,11 +684,9 @@ class Player(GObject.GObject):
padding = self.progressScale.get_style_context().get_padding(
Gtk.StateFlags.NORMAL)
width -= padding.left + padding.right
- # FIXME
- success, duration = self._player._player.query_duration(Gst.Format.TIME)
- timeout_period = 1000
- if success:
- timeout_period = min(1000 * (duration / 10**9) // width, 1000)
+
+ duration = self._player.duration
+ timeout_period = min(1000 * duration // width, 1000)
if self.timeout:
GLib.source_remove(self.timeout)
@@ -785,25 +783,27 @@ class Player(GObject.GObject):
@log
def on_progress_scale_change_value(self, scroll):
seconds = scroll.get_value() / 60
- if seconds != self.duration:
- # FIXME
- self._player._player.seek_simple(Gst.Format.TIME, Gst.SeekFlags.FLUSH | Gst.SeekFlags.KEY_UNIT,
seconds * 1000000000)
+ if True: # seconds != self.duration:
+ self._player.seek(seconds)
try:
+ # FIXME mpris
self.emit('seeked', seconds * 1000000)
except TypeError:
# See https://bugzilla.gnome.org/show_bug.cgi?id=733095
pass
else:
- duration = self._player._player.query_duration(Gst.Format.TIME)
+ print("WEIRD SCROLL VALUE?", seconds)
+ duration = self._player.duration
if duration:
# Rewind a second back before the track end
- # FIXME
- self._player._player.seek_simple(Gst.Format.TIME, Gst.SeekFlags.FLUSH |
Gst.SeekFlags.KEY_UNIT, duration[1] - 1000000000)
+ self._player.seek(duration - 1)
try:
- self.emit('seeked', (duration[1] - 1000000000) / 1000)
+ # FIXME mpris
+ self.emit('seeked', (duration - 1) / 1000)
except TypeError:
# See https://bugzilla.gnome.org/show_bug.cgi?id=733095
pass
+
return True
# MPRIS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]