[gnome-music/wip/jfelder/gstplayer-disable-about-to-finish-http-files: 3/3] gstplayer: Disable gapless for non local files



commit 75b856f5e07635e48cfa24b82ffde64491a32b23
Author: Jean Felder <jfelder src gnome org>
Date:   Fri May 29 21:46:14 2020 +0200

    gstplayer: Disable gapless for non local files

 gnomemusic/gstplayer.py | 15 ++++++++++++++-
 gnomemusic/player.py    |  7 +++++--
 2 files changed, 19 insertions(+), 3 deletions(-)
---
diff --git a/gnomemusic/gstplayer.py b/gnomemusic/gstplayer.py
index 8b8b61af..09e04991 100644
--- a/gnomemusic/gstplayer.py
+++ b/gnomemusic/gstplayer.py
@@ -93,6 +93,7 @@ class GstPlayer(GObject.GObject):
         self._player.connect("about-to-finish", self._on_about_to_finish)
 
         self.props.state = Playback.STOPPED
+        self._gapless_enabled = False
 
     def _setup_replaygain(self):
         """Set up replaygain"""
@@ -125,7 +126,8 @@ class GstPlayer(GObject.GObject):
             self._player.set_property("audio-filter", None)
 
     def _on_about_to_finish(self, klass):
-        self.emit("about-to-finish")
+        if self._gapless_enabled:
+            self.emit("about-to-finish")
 
     def _on_async_done(self, bus, message):
         success, duration = self._player.query_duration(
@@ -254,6 +256,7 @@ class GstPlayer(GObject.GObject):
 
         :param string url: url to load
         """
+        self._gapless_enabled = (url_.startswith("file"))
         self._player.set_property('uri', url_)
 
     @GObject.Property
@@ -291,6 +294,16 @@ class GstPlayer(GObject.GObject):
         """
         self._duration = duration
 
+    @GObject.Property(
+        type=bool, default=False, flags=GObject.ParamFlags.READABLE)
+    def gapless_enabled(self):
+        """Gapless state
+
+        :return: True if gapless is enabled.
+        :rtype: bool
+        """
+        return self._gapless_enabled
+
     def seek(self, seconds):
         """Seek to position
 
diff --git a/gnomemusic/player.py b/gnomemusic/player.py
index 7104fcac..83648bed 100644
--- a/gnomemusic/player.py
+++ b/gnomemusic/player.py
@@ -418,9 +418,12 @@ class Player(GObject.GObject):
             self._gapless_set = True
 
     def _on_eos(self, klass):
-        self._playlist.next()
+        has_next = self._playlist.next()
 
-        if self._gapless_set:
+        if (has_next
+                and not self._gst_player.gapless_enabled):
+            self.play(self._playlist.props.current_song)
+        elif self._gapless_set:
             # After 'eos' in the gapless case, the pipeline needs to be
             # hard reset.
             self.stop()


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]