aboutsummaryrefslogtreecommitdiff
path: root/devel/glib20/files/patch-gio_kqueue-kqueue-missing.c
diff options
context:
space:
mode:
Diffstat (limited to 'devel/glib20/files/patch-gio_kqueue-kqueue-missing.c')
-rw-r--r--devel/glib20/files/patch-gio_kqueue-kqueue-missing.c93
1 files changed, 93 insertions, 0 deletions
diff --git a/devel/glib20/files/patch-gio_kqueue-kqueue-missing.c b/devel/glib20/files/patch-gio_kqueue-kqueue-missing.c
new file mode 100644
index 000000000000..8cf553223e79
--- /dev/null
+++ b/devel/glib20/files/patch-gio_kqueue-kqueue-missing.c
@@ -0,0 +1,93 @@
+--- gio/kqueue/kqueue-missing.c.orig 2018-04-09 22:48:45.637366000 +0200
++++ gio/kqueue/kqueue-missing.c 2018-04-09 22:48:55.840341000 +0200
+@@ -23,12 +23,12 @@
+ #include <glib.h>
+
+ #include "kqueue-helper.h"
+-#include "kqueue-sub.h"
+-#include "kqueue-missing.h"
+
+
+ #define SCAN_MISSING_TIME 4 /* 1/4 Hz */
+
++void _kh_file_appeared_cb (kqueue_sub *sub);
++
+ static gboolean km_scan_missing (gpointer user_data);
+
+ static gboolean km_debug_enabled = FALSE;
+@@ -38,24 +38,9 @@ static GSList *missing_subs_list = NULL;
+ G_LOCK_DEFINE_STATIC (missing_lock);
+
+ static volatile gboolean scan_missing_running = FALSE;
+-static on_create_cb file_appeared_callback;
+
+
+ /**
+- * _km_init:
+- * @cb: a callback function. It will be called when a watched file
+- * will appear.
+- *
+- * Initialize the kqueue-missing module (optional).
+- **/
+-void
+-_km_init (on_create_cb cb)
+-{
+- file_appeared_callback = cb;
+-}
+-
+-
+-/**
+ * _km_add_missing:
+ * @sub: a #kqueue_sub
+ *
+@@ -83,7 +68,36 @@ _km_add_missing (kqueue_sub *sub)
+ }
+ }
+
++/**
++ * _kh_file_appeared_cb:
++ * @sub: a #kqueue_sub
++ *
++ * A callback function for kqueue-missing subsystem.
++ *
++ * Signals that a missing file has finally appeared in the filesystem.
++ * Emits %G_FILE_MONITOR_EVENT_CREATED.
++ **/
++void
++_kh_file_appeared_cb (kqueue_sub *sub)
++{
++ GFile *child;
+
++ g_assert (sub != NULL);
++ g_assert (sub->filename);
++
++ if (!g_file_test (sub->filename, G_FILE_TEST_EXISTS))
++ return;
++
++ child = g_file_new_for_path (sub->filename);
++
++ g_file_monitor_emit_event (G_FILE_MONITOR (sub->mon),
++ child,
++ NULL,
++ G_FILE_MONITOR_EVENT_CREATED);
++
++ g_object_unref (child);
++}
++
+ /**
+ * km_scan_missing:
+ * @user_data: unused
+@@ -114,11 +128,10 @@ km_scan_missing (gpointer user_data)
+ g_assert (sub != NULL);
+ g_assert (sub->filename != NULL);
+
+- if (_kh_start_watching (sub))
++ if (_kqsub_start_watching (sub))
+ {
+ KM_W ("file %s now exists, starting watching", sub->filename);
+- if (file_appeared_callback)
+- file_appeared_callback (sub);
++ _kh_file_appeared_cb (sub);
+ not_missing = g_slist_prepend (not_missing, head);
+ }
+ }