summaryrefslogtreecommitdiff
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
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
-rw-r--r--data/rygel.conf1
-rw-r--r--doc/man/rygel.conf.xml8
-rw-r--r--src/plugins/media-export/rygel-media-export-harvester.vala29
3 files changed, 34 insertions, 4 deletions
diff --git a/data/rygel.conf b/data/rygel.conf
index 84dbeb80..22933264 100644
--- a/data/rygel.conf
+++ b/data/rygel.conf
@@ -111,6 +111,7 @@ title=@REALNAME@'s media
uris=@MUSIC@;@VIDEOS@;@PICTURES@
extract-metadata=true
monitor-changes=true
+monitor-grace-timeout=5
virtual-folders=true
[Playbin]
diff --git a/doc/man/rygel.conf.xml b/doc/man/rygel.conf.xml
index 150159cc..5cab37fc 100644
--- a/doc/man/rygel.conf.xml
+++ b/doc/man/rygel.conf.xml
@@ -372,6 +372,14 @@ man(1), man(7), http://www.tldp.org/HOWTO/Man-Page/
</varlistentry>
<varlistentry>
<term>
+ <option>monitor-grace-timeout</option>
+ </term>
+ <listitem>
+ <para>Time in seconds to wait after a new file has been detected before trying to extract meta-data from it. Useful if you&apos;re downloading to a directory watched by &dhpackage;. Default is 5 seconds.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
<option>virtual-folders</option>
</term>
<listitem>
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);
+ }
}
}