rb_sync_state_make_track_uuid() should understand which fields are available on target
Submitted by Brian J. Murrell
Link to original bug (#740985)
Description
In an IRC conversation about why RB re-sends existing (i.e. already on the device) tracks to an Android device "moch" said:
mtp kind of sucks, it loses a lot of the metadata that rb uses to match up tracks in the sync process, so it ends up copying them over again
and then points out where the matching is computed:
https://git.gnome.org/browse/rhythmbox/tree/sources/sync/rb-sync-state.c#n102
which points to rb_sync_state_make_track_uuid (RhythmDBEntry *entry)
which uses the following to create a hashable string:
g_string_printf (str, "%s%s%s%s%lu%lu",
rhythmdb_entry_get_string (entry, RHYTHMDB_PROP_TITLE),
rhythmdb_entry_get_string (entry, RHYTHMDB_PROP_ARTIST),
rhythmdb_entry_get_string (entry, RHYTHMDB_PROP_GENRE),
rhythmdb_entry_get_string (entry, RHYTHMDB_PROP_ALBUM),
rhythmdb_entry_get_ulong (entry, RHYTHMDB_PROP_TRACK_NUMBER),
rhythmdb_entry_get_ulong (entry, RHYTHMDB_PROP_DISC_NUMBER));
So clearly one or more of these fields (likely GENRE and/or DISC_NUMBER) is not available with MTP. Could this function not be made sensitive to which fields are actually available on a remote device instead of assuming that all devices support all of those?
Version: 3.0.x