[gnome-music/wip/mschraal/player-factor-out-gstreamer: 19/42] add duration property add seek to gstplayer



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]