[rhythmbox] generic-player: use metadata caching
- From: Jonathan Matthew <jmatthew src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [rhythmbox] generic-player: use metadata caching
- Date: Tue, 18 Aug 2015 13:04:04 +0000 (UTC)
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]