summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJens Georg <mail@jensge.org>2014-06-15 09:34:06 +0200
committerJens Georg <mail@jensge.org>2014-06-15 09:37:02 +0200
commitc70a2a3a6a7dbf7c3aa8093a27bba754032e7fbd (patch)
tree20e8cd6cc81215e6d390f5ec80613a124b7b2518 /src
parentcb5f163255af3d29fc4c28a2971fa002d0fe8343 (diff)
downloadrygel-c70a2a3a6a7dbf7c3aa8093a27bba754032e7fbd.tar.gz
media-export: Make grace period configurable
While it helps not to run discover on half-downloaded files, it slows down the server sync use-case and breaks several DLNA requirements. It can turned off now using monitor-grace-timeout=0 Signed-off-by: Jens Georg <mail@jensge.org> https://bugzilla.gnome.org/show_bug.cgi?id=694455
Diffstat (limited to 'src')
-rw-r--r--src/plugins/media-export/rygel-media-export-harvester.vala29
1 files changed, 25 insertions, 4 deletions
diff --git a/src/plugins/media-export/rygel-media-export-harvester.vala b/src/plugins/media-export/rygel-media-export-harvester.vala
index d85489cc..0b8b1dbb 100644
--- a/src/plugins/media-export/rygel-media-export-harvester.vala
+++ b/src/plugins/media-export/rygel-media-export-harvester.vala
@@ -144,8 +144,15 @@ internal class Rygel.MediaExport.Harvester : GLib.Object {
File? other,
FileMonitorEvent event) {
try {
+ var info = file.query_info (FileAttribute.STANDARD_TYPE,
+ FileQueryInfoFlags.NONE,
+ this.cancellable);
switch (event) {
case FileMonitorEvent.CREATED:
+ if (info.get_file_type () == FileType.DIRECTORY) {
+ this.on_changes_done (file);
+ }
+ break;
case FileMonitorEvent.CHANGES_DONE_HINT:
this.on_changes_done (file);
break;
@@ -223,9 +230,19 @@ internal class Rygel.MediaExport.Harvester : GLib.Object {
return;
}
+ var period = FILE_CHANGE_DEFAULT_GRACE_PERIOD;
+ try {
+ var config = MetaConfig.get_default ();
+ period = config.get_int ("MediaExport",
+ "monitor-grace-timeout",
+ 0,
+ 500);
+ } catch (Error error) { }
+
+
if (this.extraction_grace_timers.has_key (file)) {
Source.remove (this.extraction_grace_timers[file]);
- } else {
+ } else if (period > 0) {
debug ("Starting grace timer for harvesting %s…",
file.get_uri ());
}
@@ -236,8 +253,12 @@ internal class Rygel.MediaExport.Harvester : GLib.Object {
return false;
};
- var timeout = Timeout.add_seconds (FILE_CHANGE_DEFAULT_GRACE_PERIOD,
- (owned) callback);
- this.extraction_grace_timers[file] = timeout;
+ if (period > 0) {
+ var timeout = Timeout.add_seconds (FILE_CHANGE_DEFAULT_GRACE_PERIOD,
+ (owned) callback);
+ this.extraction_grace_timers[file] = timeout;
+ } else {
+ Idle.add ((owned) callback);
+ }
}
}