diff options
author | Jens Georg <mail@jensge.org> | 2014-06-15 09:34:06 +0200 |
---|---|---|
committer | Jens Georg <mail@jensge.org> | 2014-06-15 09:37:02 +0200 |
commit | c70a2a3a6a7dbf7c3aa8093a27bba754032e7fbd (patch) | |
tree | 20e8cd6cc81215e6d390f5ec80613a124b7b2518 /src | |
parent | cb5f163255af3d29fc4c28a2971fa002d0fe8343 (diff) | |
download | rygel-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.vala | 29 |
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); + } } } |