[rygel/wip/track-changes: 30/34] media-export: Add tracking to new files
- From: Jens Georg <jensgeorg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [rygel/wip/track-changes: 30/34] media-export: Add tracking to new files
- Date: Tue, 11 Dec 2012 20:10:28 +0000 (UTC)
commit f4738dc5a73d362f75de811b5f7f4b8487c89c28
Author: Jens Georg <jensg openismus com>
Date: Tue Dec 11 17:27:59 2012 +0100
media-export: Add tracking to new files
.../rygel-media-export-harvesting-task.vala | 35 +++++++++++++-------
1 files changed, 23 insertions(+), 12 deletions(-)
---
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 3185dd8..0413222 100644
--- a/src/plugins/media-export/rygel-media-export-harvesting-task.vala
+++ b/src/plugins/media-export/rygel-media-export-harvesting-task.vala
@@ -21,13 +21,23 @@
using GLib;
using Gee;
+internal class FileQueueEntry {
+ public File file;
+ public bool known;
+
+ public FileQueueEntry (File file, bool known) {
+ this.file = file;
+ this.known = known;
+ }
+}
+
public class Rygel.MediaExport.HarvestingTask : Rygel.StateMachine,
GLib.Object {
public File origin;
private MetadataExtractor extractor;
private MediaCache cache;
private GLib.Queue<MediaContainer> containers;
- private Gee.Queue<File> files;
+ private Gee.Queue<FileQueueEntry> files;
private RecursiveFileMonitor monitor;
private string flag;
private MediaContainer parent;
@@ -63,7 +73,7 @@ public class Rygel.MediaExport.HarvestingTask : Rygel.StateMachine,
this.extractor.extraction_done.connect (on_extracted_cb);
this.extractor.error.connect (on_extractor_error_cb);
- this.files = new LinkedList<File> ();
+ this.files = new LinkedList<FileQueueEntry> ();
this.containers = new GLib.Queue<MediaContainer> ();
this.monitor = monitor;
this.flag = flag;
@@ -143,12 +153,12 @@ public class Rygel.MediaExport.HarvestingTask : Rygel.StateMachine,
if (mtime > timestamp ||
info.get_size () != size) {
- this.files.offer (file);
+ this.files.offer (new FileQueueEntry (file, true));
return true;
}
} else {
- this.files.offer (file);
+ this.files.offer (new FileQueueEntry (file, false));
return true;
}
@@ -264,8 +274,8 @@ public class Rygel.MediaExport.HarvestingTask : Rygel.StateMachine,
if (this.files.size > 0) {
debug ("Scheduling file %s for meta-data extractionâ",
- this.files.peek ().get_uri ());
- this.extractor.extract (this.files.peek ());
+ this.files.peek ().file.get_uri ());
+ this.extractor.extract (this.files.peek ().file);
} else if (this.containers.get_length () > 0) {
this.enumerate_directory.begin ();
} else {
@@ -292,7 +302,7 @@ public class Rygel.MediaExport.HarvestingTask : Rygel.StateMachine,
}
var entry = this.files.peek ();
- if (entry == null || file != entry) {
+ if (entry == null || file != entry.file) {
// this event may be triggered by another instance
// just ignore it
return;
@@ -312,10 +322,11 @@ 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
+ if (entry.known) {
+ (item as UpdatableObject).commit.begin ();
+ } else {
+ var container = item.parent as TrackableContainer;
+ container.add_child_tracked.begin (item);
}
}
@@ -325,7 +336,7 @@ public class Rygel.MediaExport.HarvestingTask : Rygel.StateMachine,
private void on_extractor_error_cb (File file, Error error) {
var entry = this.files.peek ();
- if (entry == null || file != entry) {
+ if (entry == null || file != entry.file) {
// this event may be triggered by another instance
// just ignore it
return;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]