diff options
Diffstat (limited to 'app-admin/gamin/files/gamin-timer-on-demand.patch')
-rw-r--r-- | app-admin/gamin/files/gamin-timer-on-demand.patch | 73 |
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 |