From 779050a5b6caf7b46a7493c5e6d52a60d3b78431 Mon Sep 17 00:00:00 2001 From: Jens Georg Date: Sat, 27 Jun 2009 03:24:13 +0200 Subject: [PATCH] media-export: harvest newly added files --- .../rygel-media-export-root-container.vala | 28 ++++++++++++++++------ 1 file changed, 21 insertions(+), 7 deletions(-) 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 f902f00..a5ca567 100644 --- a/src/plugins/media-export/rygel-media-export-root-container.vala +++ b/src/plugins/media-export/rygel-media-export-root-container.vala @@ -66,9 +66,10 @@ public class Rygel.MediaExportRootContainer : Rygel.MediaDBContainer { base (db, "0", "MediaExportRoot"); this.extractor = new MetadataExtractor (); + this.harvester = new ArrayList (); - this.monitor = new MediaExportRecursiveFileMonitor (null); + this.monitor = new MediaExportRecursiveFileMonitor (null); this.monitor.changed.connect (this.on_file_changed); var uris = get_uris (); @@ -81,22 +82,35 @@ public class Rygel.MediaExportRootContainer : Rygel.MediaDBContainer { if (!this.media_db.exists (id)) { debug ("Found new directory %s", file.get_uri ()); - var harvest = new MediaExportHarvester (this, - this.media_db, - this.extractor, - this.monitor); - this.harvester.add (harvest); - harvest.harvest (file); + this.harvest (file); } } } } + private void harvest (File file, MediaContainer parent = this) { + var harvest = new MediaExportHarvester (parent, + this.media_db, + this.extractor, + this.monitor); + this.harvester.add (harvest); + harvest.harvest (file); + } + private void on_file_changed (File file, File? other, FileMonitorEvent event) { switch (event) { case FileMonitorEvent.CREATED: + var parent = file.get_parent (); + var id = Checksum.compute_for_string (ChecksumType.MD5, + parent.get_uri ()); + var parent_container = this.media_db.get_object (id); + if (parent_container != null) { + this.harvest (file, (MediaContainer)parent_container); + } else { + // This should not happen + } break; case FileMonitorEvent.CHANGES_DONE_HINT: break; -- 2.7.4