diff options
author | Jens Georg <jensg@openismus.com> | 2012-10-24 10:45:25 +0200 |
---|---|---|
committer | Jens Georg <jensg@openismus.com> | 2012-10-24 10:45:25 +0200 |
commit | aaabe94ffedc17727f56e3b87d1bb295c28ba076 (patch) | |
tree | 2f2d03d7bbe68f355d6545e1879a1e2d45e0967e | |
parent | cc9f1e881282d14291c0b63f4c1deea39ec24099 (diff) | |
download | rygel-RYGEL_0_17_0_w43.tar.gz |
wip: Add tracking to media-exportRYGEL_0_17_0_w43
5 files changed, 26 insertions, 26 deletions
diff --git a/src/plugins/media-export/Makefile.am b/src/plugins/media-export/Makefile.am index 3294d1fe..eccfd739 100644 --- a/src/plugins/media-export/Makefile.am +++ b/src/plugins/media-export/Makefile.am @@ -15,6 +15,7 @@ librygel_media_export_la_SOURCES = \ rygel-media-export-database-cursor.vala \ rygel-media-export-sqlite-wrapper.vala \ rygel-media-export-db-container.vala \ + rygel-media-export-trackable-db-container.vala \ rygel-media-export-sql-factory.vala \ rygel-media-export-media-cache.vala \ rygel-media-export-sql-operator.vala \ diff --git a/src/plugins/media-export/rygel-media-export-harvesting-task.vala b/src/plugins/media-export/rygel-media-export-harvesting-task.vala index a0fdb67b..dbd34b40 100644 --- a/src/plugins/media-export/rygel-media-export-harvesting-task.vala +++ b/src/plugins/media-export/rygel-media-export-harvesting-task.vala @@ -309,11 +309,7 @@ public class Rygel.MediaExport.HarvestingTask : Rygel.StateMachine, if (item != null) { item.parent_ref = this.containers.peek_head (); - try { - this.cache.save_item (item); - } catch (Error error) { - // Ignore it for now - } + (item as UpdatableObject).commit.begin (); } this.files.poll (); diff --git a/src/plugins/media-export/rygel-media-export-plugin.vala b/src/plugins/media-export/rygel-media-export-plugin.vala index 42df8b35..d56ec423 100644 --- a/src/plugins/media-export/rygel-media-export-plugin.vala +++ b/src/plugins/media-export/rygel-media-export-plugin.vala @@ -108,6 +108,7 @@ public class Rygel.MediaExport.Plugin : Rygel.MediaServerPlugin { base (RootContainer.get_instance (), NAME, null, - PluginCapabilities.UPLOAD); + PluginCapabilities.UPLOAD | + PluginCapabilities.TRACK_CHANGES); } } diff --git a/src/plugins/media-export/rygel-media-export-root-container.vala b/src/plugins/media-export/rygel-media-export-root-container.vala index e39e2c1f..b6d79bca 100644 --- a/src/plugins/media-export/rygel-media-export-root-container.vala +++ b/src/plugins/media-export/rygel-media-export-root-container.vala @@ -40,7 +40,7 @@ const Rygel.MediaExport.FolderDefinition[] virtual_folders_music = { /** * Represents the root container. */ -public class Rygel.MediaExport.RootContainer : Rygel.MediaExport.DBContainer { +public class Rygel.MediaExport.RootContainer : TrackableDBContainer { private DBusService service; private Harvester harvester; private Cancellable cancellable; @@ -366,14 +366,13 @@ public class Rygel.MediaExport.RootContainer : Rygel.MediaExport.DBContainer { this.media_db.save_container (this); } catch (Error error) { } // do nothing - try { - this.filesystem_container = new DBContainer - (media_db, - FILESYSTEM_FOLDER_ID, - _(FILESYSTEM_FOLDER_NAME)); - this.filesystem_container.parent = this; - this.media_db.save_container (this.filesystem_container); - } catch (Error error) { } + this.filesystem_container = new TrackableDBContainer + (media_db, + FILESYSTEM_FOLDER_ID, + _(FILESYSTEM_FOLDER_NAME)); + this.filesystem_container.parent = this; + //this.media_db.save_container (this.filesystem_container); + this.add_child_tracked.begin (this.filesystem_container); ArrayList<string> ids; try { @@ -395,21 +394,20 @@ public class Rygel.MediaExport.RootContainer : Rygel.MediaExport.DBContainer { foreach (var id in ids) { debug ("ID %s no longer in config; deleting...", id); - try { - this.media_db.remove_by_id (id); - } catch (DatabaseError error) { - warning (_("Failed to remove entry: %s"), error.message); - } + var container = new NullContainer (); + container.parent = this; + container.id = id; + this.remove_child_tracked.begin (container); } - this.updated (); + //this.updated (); } private void on_initial_harvesting_done () { this.harvester.disconnect (this.harvester_signal_id); this.media_db.debug_statistics (); this.add_default_virtual_folders (); - this.updated (); + //this.updated (); this.filesystem_container.container_updated.connect( () => { this.add_default_virtual_folders (); @@ -478,7 +476,7 @@ public class Rygel.MediaExport.RootContainer : Rygel.MediaExport.DBContainer { if (this.media_db.get_child_count (container.id) == 0) { this.media_db.remove_by_id (container.id); } else { - container.updated (); + this.updated (container, ObjectEventType.ADDED); } } } diff --git a/src/plugins/media-export/rygel-media-export-writable-db-container.vala b/src/plugins/media-export/rygel-media-export-writable-db-container.vala index f3c3073a..f37c1703 100644 --- a/src/plugins/media-export/rygel-media-export-writable-db-container.vala +++ b/src/plugins/media-export/rygel-media-export-writable-db-container.vala @@ -21,7 +21,7 @@ */ using Gee; -internal class Rygel.MediaExport.WritableDbContainer : DBContainer, +internal class Rygel.MediaExport.WritableDbContainer : TrackableDBContainer, Rygel.WritableContainer { public ArrayList<string> create_classes { get; set; } @@ -45,11 +45,15 @@ internal class Rygel.MediaExport.WritableDbContainer : DBContainer, item.modified = int64.MAX; } item.id = MediaCache.get_id (file); - this.media_db.save_item (item); + this.add_child_tracked.begin (item); } public async void remove_item (string id, Cancellable? cancellable) throws Error { - this.media_db.remove_by_id (id); + var container = new NullContainer (); + container.parent = this; + container.id = id; + + this.remove_child_tracked.begin (container); } } |