[gnome-music/wip/mschraal/artrework: 4/4] player: Fix MPRIS2 coverart update



commit 9b27868ebe860d2da1989eba1640093dc82235d4
Author: Marinus Schraal <mschraal gnome org>
Date:   Mon Jan 29 09:59:43 2018 +0100

    player: Fix MPRIS2 coverart update
    
    Pass a signal between Art, CoverArt, Player and MediaPlayer2Service that
    coverart is ready.

 gnomemusic/albumartcache.py | 13 +++++++++++++
 gnomemusic/player.py        |  4 ++--
 2 files changed, 15 insertions(+), 2 deletions(-)
---
diff --git a/gnomemusic/albumartcache.py b/gnomemusic/albumartcache.py
index b890834..ad3a4dc 100644
--- a/gnomemusic/albumartcache.py
+++ b/gnomemusic/albumartcache.py
@@ -277,6 +277,7 @@ class Art(GObject.GObject):
 
         surface = _make_icon_frame(pixbuf, self._size, self._scale)
         self._surface = surface
+        self._set_grilo_thumbnail_path()
 
         self.emit('finished')
 
@@ -347,6 +348,18 @@ class Art(GObject.GObject):
 
         return False
 
+    def _set_grilo_thumbnail_path(self):
+        # TODO: This sets the thumbnail path for the Grilo Media object
+        # to be used by MPRIS. However, calling this by default for
+        # every cache hit is unnecessary.
+        album = utils.get_album_title(self._media)
+        artist = utils.get_artist_name(self._media)
+
+        success, thumb_file = MediaArt.get_file(artist, album, "album")
+        if success:
+            self._media.set_thumbnail(
+                GLib.filename_to_uri(thumb_file.get_path(), None))
+
     @GObject.Property
     @log
     def surface(self):
diff --git a/gnomemusic/player.py b/gnomemusic/player.py
index 40becc9..ebc8b15 100644
--- a/gnomemusic/player.py
+++ b/gnomemusic/player.py
@@ -633,8 +633,7 @@ class Player(GObject.GObject):
         return False
 
     @log
-    def _on_cache_lookup(self, surface, data=None):
-        # FIXME: Need this for mpris
+    def _on_cover_stack_updated(self, klass):
         self.emit('thumbnail-updated')
 
     @log
@@ -778,6 +777,7 @@ class Player(GObject.GObject):
 
         stack = self._ui.get_object('cover')
         self._cover_stack = CoverStack(stack, Art.Size.XSMALL)
+        self._cover_stack.connect('updated', self._on_cover_stack_updated)
 
         self.duration = self._ui.get_object('duration')
         self.repeatBtnImage = self._ui.get_object('playlistRepeat')


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