[gnome-music/wip/mschraal/tracker-changed-signal: 3/6] grltrackerwrapper: Changed can be added to Music
- From: Marinus Schraal <mschraal src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-music/wip/mschraal/tracker-changed-signal: 3/6] grltrackerwrapper: Changed can be added to Music
- Date: Tue, 16 Jul 2019 21:10:18 +0000 (UTC)
commit 0e8da69717fdb24b545ffbe6a9703a86a496c971
Author: Marinus Schraal <mschraal gnome org>
Date: Tue Jul 16 14:25:09 2019 +0200
grltrackerwrapper: Changed can be added to Music
The indexed paths by Tracker do not necessarily match the indexed paths
by Music. If this is the case a CHANGED signal of Tracker may mean a
ADDED signal to us.
Lump together CHANGED and ADDED handling. If a Grl.Media id does not
exist in the _hash, treat it as an addition. Otherwise treat it as
changed.
gnomemusic/grilowrappers/grltrackerwrapper.py | 48 ++++++++-------------------
1 file changed, 14 insertions(+), 34 deletions(-)
---
diff --git a/gnomemusic/grilowrappers/grltrackerwrapper.py b/gnomemusic/grilowrappers/grltrackerwrapper.py
index 7242a32a..f439b67a 100644
--- a/gnomemusic/grilowrappers/grltrackerwrapper.py
+++ b/gnomemusic/grilowrappers/grltrackerwrapper.py
@@ -134,14 +134,15 @@ class GrlTrackerWrapper(GObject.GObject):
def _on_content_changed(self, source, medias, change_type, loc_unknown):
for media in medias:
- if change_type == Grl.SourceChangeType.ADDED:
- print("ADDED", media.get_id())
- self._add_media(media)
+ # The Tracker indexed paths may differ from Music's paths.
+ # In that case Tracker will report it as 'changed', while
+ # it means 'added' to Music.
+ if (change_type == Grl.SourceChangeType.CHANGED
+ or change_type == Grl.SourceChangeType.ADDED):
+ print("ADDED/CHANGED", media.get_id())
+ self._changed_media(media)
self._check_album_change(media)
self._check_artist_change(media)
- elif change_type == Grl.SourceChangeType.CHANGED:
- print("CHANGED", media.get_id())
- self._changed_media(media)
elif change_type == Grl.SourceChangeType.REMOVED:
print("REMOVED", media.get_id())
self._remove_media(media)
@@ -300,33 +301,6 @@ class GrlTrackerWrapper(GObject.GObject):
return query
- def _add_media(self, media):
-
- def _add_media(source, op_id, media, user_data, error):
- if error:
- print("ERROR", error)
- return
-
- if not media:
- return
-
- # FIXME: Figure out why we get double additions.
- if media.get_id() in self._hash.keys():
- print("ALREADY ADDED")
- return
-
- song = CoreSong(media, self._coreselection, self._grilo)
- self._model.append(song)
- self._hash[media.get_id()] = song
-
- print("UPDATE ID", media.get_id(), media.get_title())
-
- options = self._fast_options.copy()
-
- self._source.query(
- self._song_media_query(media.get_id()), self.METADATA_KEYS,
- options, _add_media)
-
def _changed_media(self, media):
def _update_changed_media(source, op_id, media, user_data, error):
@@ -337,7 +311,13 @@ class GrlTrackerWrapper(GObject.GObject):
if not media:
return
- self._hash[media.get_id()].update(media)
+ if media.get_id() not in self._hash:
+ print("Media not in hash", media.get_id())
+ song = CoreSong(media, self._coreselection, self._grilo)
+ self._model.append(song)
+ self._hash[media.get_id()] = song
+ else:
+ self._hash[media.get_id()].update(media)
options = self._fast_options.copy()
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]