[rhythmbox] generic-player: use metadata caching



commit 2b73bc65f410a12975379d09dc98bbfda71b17f4
Author: Jonathan Matthew <jonathan d14n org>
Date:   Tue Aug 18 22:41:57 2015 +1000

    generic-player: use metadata caching
    
    The cache key prefix used here is the device serial number.

 plugins/generic-player/rb-generic-player-plugin.c |   21 +++++++++++++++++++--
 plugins/generic-player/rb-generic-player-source.c |    2 ++
 2 files changed, 21 insertions(+), 2 deletions(-)
---
diff --git a/plugins/generic-player/rb-generic-player-plugin.c 
b/plugins/generic-player/rb-generic-player-plugin.c
index d479609..4ea1447 100644
--- a/plugins/generic-player/rb-generic-player-plugin.c
+++ b/plugins/generic-player/rb-generic-player-plugin.c
@@ -105,7 +105,10 @@ create_source_cb (RBRemovableMediaManager *rmm, GMount *mount, MPIDDevice *devic
        GMenu *toolbar;
        GVolume *volume;
        GSettings *settings;
+       GFile *root;
        const char *name_prefix;
+       char *device_serial;
+       char *uri_prefix;
        char *name;
        char *path;
 
@@ -128,27 +131,40 @@ create_source_cb (RBRemovableMediaManager *rmm, GMount *mount, MPIDDevice *devic
        g_object_get (plugin, "object", &shell, NULL);
        g_object_get (shell, "db", &db, NULL);
 
+       g_object_get (device_info, "serial", &device_serial, NULL);
+
+       root = g_mount_get_root (mount);
+       uri_prefix = g_file_get_uri (root);
+       g_object_unref (root);
+
        name = g_strdup_printf ("%s: %s", name_prefix, path);
-       entry_type = g_object_new (RHYTHMDB_TYPE_ENTRY_TYPE,
+       entry_type = g_object_new (RB_TYPE_MEDIA_PLAYER_ENTRY_TYPE,
                                   "db", db,
                                   "name", name,
                                   "save-to-disk", FALSE,
                                   "category", RHYTHMDB_ENTRY_NORMAL,
+                                  "cache-name", "generic-player",
+                                  "key-prefix", device_serial,
+                                  "uri-prefix", uri_prefix,
                                   NULL);
        rhythmdb_register_entry_type (db, entry_type);
        g_free (name);
 
        name = g_strdup_printf ("%s (ignore): %s", name_prefix, path);
-       ignore_type = g_object_new (RHYTHMDB_TYPE_ENTRY_TYPE,
+       ignore_type = g_object_new (RB_TYPE_MEDIA_PLAYER_ENTRY_TYPE,
                                    "db", db,
                                    "name", name,
                                    "save-to-disk", FALSE,
                                    "category", RHYTHMDB_ENTRY_VIRTUAL,
+                                   "cache-name", "generic-player",
+                                   "key-prefix", device_serial,
+                                   "uri-prefix", uri_prefix,
                                    NULL);
        rhythmdb_register_entry_type (db, ignore_type);
        g_free (name);
 
        name = g_strdup_printf ("%s (errors): %s", name_prefix, path);
+       /* errors aren't cached, so this isn't a media player entry type */
        error_type = g_object_new (RHYTHMDB_TYPE_ENTRY_TYPE,
                                   "db", db,
                                   "name", name,
@@ -158,6 +174,7 @@ create_source_cb (RBRemovableMediaManager *rmm, GMount *mount, MPIDDevice *devic
        rhythmdb_register_entry_type (db, error_type);
        g_free (name);
 
+       g_free (uri_prefix);
        g_object_unref (db);
 
        builder = rb_builder_load_plugin_file (G_OBJECT (plugin), "generic-player-toolbar.ui", NULL);
diff --git a/plugins/generic-player/rb-generic-player-source.c 
b/plugins/generic-player/rb-generic-player-source.c
index dc2d7e1..ade8938 100644
--- a/plugins/generic-player/rb-generic-player-source.c
+++ b/plugins/generic-player/rb-generic-player-source.c
@@ -535,6 +535,8 @@ import_complete_cb (RhythmDBImportJob *job, int total, RBGenericPlayerSource *so
                g_object_get (source, "encoding-settings", &settings, NULL);
                rb_transfer_target_transfer (RB_TRANSFER_TARGET (source), settings, NULL, FALSE);
                g_object_unref (settings);
+
+               rb_media_player_source_purge_metadata_cache (RB_MEDIA_PLAYER_SOURCE (source));
        }
 
        g_object_unref (priv->import_job);


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