summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app-admin/gamin/files/gamin-timer-on-demand.patch')
-rw-r--r--app-admin/gamin/files/gamin-timer-on-demand.patch73
1 files changed, 73 insertions, 0 deletions
diff --git a/app-admin/gamin/files/gamin-timer-on-demand.patch b/app-admin/gamin/files/gamin-timer-on-demand.patch
new file mode 100644
index 0000000..3375bd5
--- /dev/null
+++ b/app-admin/gamin/files/gamin-timer-on-demand.patch
@@ -0,0 +1,73 @@
+--- gamin-0.1.7/server/gam_eq.c.timer-on-demand 2005-08-05 11:57:48.000000000 +0200
++++ gamin-0.1.7/server/gam_eq.c 2006-09-05 10:57:06.000000000 +0200
+@@ -119,9 +119,10 @@
+ gam_eq_event_free (event);
+ }
+
+-void
++gboolean
+ gam_eq_flush (gam_eq_t *eq, GamConnDataPtr conn)
+ {
++ gboolean done_work = FALSE;
+ if (!eq)
+ return;
+
+@@ -130,8 +131,10 @@
+ #endif
+ while (!g_queue_is_empty (eq->event_queue))
+ {
++ done_work = TRUE;
+ gam_eq_event_t *event = g_queue_pop_head (eq->event_queue);
+ g_assert (event);
+ gam_eq_flush_callback (eq, event, conn);
+ }
++ return done_work;
+ }
+--- gamin-0.1.7/server/gam_connection.c.timer-on-demand 2005-09-22 10:10:55.000000000 +0200
++++ gamin-0.1.7/server/gam_connection.c 2006-09-05 10:57:06.000000000 +0200
+@@ -159,12 +159,15 @@
+ static gboolean
+ gam_connection_eq_flush (gpointer data)
+ {
++ gboolean work;
+ GamConnDataPtr conn = (GamConnDataPtr)data;
+ if (!conn)
+ return FALSE;
+
+- gam_eq_flush (conn->eq, conn);
+- return TRUE;
++ work = gam_eq_flush (conn->eq, conn);
++ if (!work)
++ conn->eq_source = 0;
++ return work;
+ }
+
+ /**
+@@ -193,7 +196,7 @@
+ ret->loop = loop;
+ ret->source = source;
+ ret->eq = gam_eq_new ();
+- ret->eq_source = g_timeout_add (100 /* ms */, gam_connection_eq_flush, ret);
++ ret->eq_source = g_timeout_add (100 /* 100 milisecond */, gam_connection_eq_flush, ret);
+ gamConnList = g_list_prepend(gamConnList, ret);
+
+ GAM_DEBUG(DEBUG_INFO, "Created connection %d\n", ret->fd);
+@@ -620,6 +623,8 @@
+ g_assert (conn->eq);
+
+ gam_eq_queue (conn->eq, reqno, event, path, len);
++ if (!conn->eq_source)
++ conn->eq_source = g_timeout_add (100 /* 100 milisecond */, gam_connection_eq_flush, conn);
+ }
+
+
+--- gamin-0.1.7/server/gam_eq.h.timer-on-demand 2006-09-05 11:00:12.000000000 +0200
++++ gamin-0.1.7/server/gam_eq.h 2006-09-05 11:00:46.000000000 +0200
+@@ -9,6 +9,6 @@
+ void gam_eq_free (gam_eq_t *eq);
+ void gam_eq_queue (gam_eq_t *eq, int reqno, int event, const char *path, int len);
+ guint gam_eq_size (gam_eq_t *eq);
+-void gam_eq_flush (gam_eq_t *eq, GamConnDataPtr conn);
++gboolean gam_eq_flush (gam_eq_t *eq, GamConnDataPtr conn);
+
+ #endif