diff options
Diffstat (limited to 'app-admin/gamin/files/gamin-no-timers.patch')
-rw-r--r-- | app-admin/gamin/files/gamin-no-timers.patch | 284 |
1 files changed, 0 insertions, 284 deletions
diff --git a/app-admin/gamin/files/gamin-no-timers.patch b/app-admin/gamin/files/gamin-no-timers.patch deleted file mode 100644 index b2e2135..0000000 --- a/app-admin/gamin/files/gamin-no-timers.patch +++ /dev/null @@ -1,284 +0,0 @@ -Index: lib/gam_error.c -=================================================================== -RCS file: /cvs/gnome/gamin/lib/gam_error.c,v -retrieving revision 1.11 -diff -u -p -r1.11 gam_error.c ---- lib/gam_error.c 19 Apr 2006 08:28:14 -0000 1.11 -+++ lib/gam_error.c 5 Sep 2006 14:02:43 -0000 -@@ -18,6 +18,7 @@ - typedef void (*signal_handler) (int); - - extern void gam_show_debug(void); -+extern void gam_got_signal (void); - - int gam_debug_active = 0; - static int initialized = 0; -@@ -60,11 +61,13 @@ gam_error_handle_signal(void) - } - } - -+ - static void - gam_error_signal(int no) - { - got_signal = !got_signal; - gam_debug_active = -1; /* force going into gam_debug() */ -+ gam_got_signal (); - } - - /** -Index: libgamin/gam_api.c -=================================================================== -RCS file: /cvs/gnome/gamin/libgamin/gam_api.c,v -retrieving revision 1.40 -diff -u -p -r1.40 gam_api.c ---- libgamin/gam_api.c 16 Aug 2006 15:42:44 -0000 1.40 -+++ libgamin/gam_api.c 5 Sep 2006 14:02:43 -0000 -@@ -87,6 +87,13 @@ void - gam_show_debug(void) { - } - -+void gam_got_signal(void); -+ -+void -+gam_got_signal(void) { -+} -+ -+ - /************************************************************************ - * * - * Path for the socket connection * -Index: server/gam_connection.c -=================================================================== -RCS file: /cvs/gnome/gamin/server/gam_connection.c,v -retrieving revision 1.29 -diff -u -p -r1.29 gam_connection.c ---- server/gam_connection.c 22 Sep 2005 08:09:03 -0000 1.29 -+++ server/gam_connection.c 5 Sep 2006 14:02:43 -0000 -@@ -42,6 +42,9 @@ struct GamConnData { - guint eq_source; /* the event queue GSource id */ - }; - -+static void gam_cancel_server_timeout (void); -+ -+ - static const char * - gam_reqtype_to_string (GAMReqType type) - { -@@ -126,6 +129,9 @@ gam_connection_close(GamConnDataPtr conn - g_free(conn->pidname); - g_free(conn); - -+ if (gamConnList == NULL && gam_server_use_timeout ()) -+ gam_schedule_server_timeout (); -+ - return (0); - } - -@@ -196,6 +202,8 @@ gam_connection_new(GMainLoop *loop, GIOC - ret->eq_source = g_timeout_add (100 /* ms */, gam_connection_eq_flush, ret); - gamConnList = g_list_prepend(gamConnList, ret); - -+ gam_cancel_server_timeout (); -+ - GAM_DEBUG(DEBUG_INFO, "Created connection %d\n", ret->fd); - - return (ret); -@@ -683,7 +691,9 @@ gam_send_ack(GamConnDataPtr conn, int re - * * - ************************************************************************/ - --#define MAX_IDLE_TIMEOUT 30 -+#define MAX_IDLE_TIMEOUT_MSEC (30*1000) /* 30 seconds */ -+ -+static guint server_timeout_id = 0; - - /** - * gam_connections_check: -@@ -692,27 +702,33 @@ gam_send_ack(GamConnDataPtr conn, int re - * shuts the server down if there have been no outstanding connections - * for a while. - */ --gboolean -+static gboolean - gam_connections_check(void) - { -- static time_t timeout; -- -- if (g_list_first(gamConnList) != NULL) { -- if (timeout != 0) { -- GAM_DEBUG(DEBUG_INFO, "New active connection\n"); -- } -- timeout = 0; -- return (TRUE); -- } -- if (timeout == 0) { -- GAM_DEBUG(DEBUG_INFO, "No more active connections\n"); -- timeout = time(NULL); -- } else if (time(NULL) - timeout > MAX_IDLE_TIMEOUT) { -+ server_timeout_id = 0; -+ -+ if (gamConnList == NULL) { - GAM_DEBUG(DEBUG_INFO, "Exiting on timeout\n"); - gam_shutdown(); - exit(0); - } -- return (TRUE); -+ return (FALSE); -+} -+ -+static void -+gam_cancel_server_timeout (void) -+{ -+ if (server_timeout_id) -+ g_source_remove (server_timeout_id); -+ server_timeout_id = 0; -+} -+ -+void -+gam_schedule_server_timeout (void) -+{ -+ gam_cancel_server_timeout (); -+ server_timeout_id = -+ g_timeout_add(MAX_IDLE_TIMEOUT_MSEC, (GSourceFunc) gam_connections_check, NULL); - } - - /** -Index: server/gam_connection.h -=================================================================== -RCS file: /cvs/gnome/gamin/server/gam_connection.h,v -retrieving revision 1.6 -diff -u -p -r1.6 gam_connection.h ---- server/gam_connection.h 4 Aug 2005 16:45:25 -0000 1.6 -+++ server/gam_connection.h 5 Sep 2006 14:02:43 -0000 -@@ -25,7 +25,7 @@ typedef enum { - - int gam_connections_init (void); - int gam_connections_close (void); --gboolean gam_connections_check (void); -+void gam_schedule_server_timeout (void); - - GamConnDataPtr gam_connection_new (GMainLoop *loop, - GIOChannel *source); -Index: server/gam_server.c -=================================================================== -RCS file: /cvs/gnome/gamin/server/gam_server.c,v -retrieving revision 1.42 -diff -u -p -r1.42 gam_server.c ---- server/gam_server.c 8 Sep 2005 10:12:03 -0000 1.42 -+++ server/gam_server.c 5 Sep 2006 14:02:44 -0000 -@@ -279,6 +279,17 @@ static GHashTable *listeners = NULL; - static GIOChannel *socket = NULL; - - /** -+ * gam_server_use_timeout: -+ * -+ * Returns TRUE if idle server should exit after a timeout. -+ */ -+gboolean -+gam_server_use_timeout (void) -+{ -+ return !no_timeout; -+} -+ -+/** - * gam_server_emit_one_event: - * @path: the file/directory path - * @event: the event type -@@ -507,6 +519,58 @@ gam_poll_file (GamNode *node) - return 0; - } - -+#ifdef GAM_DEBUG_ENABLED -+ -+static GIOChannel *pipe_read_ioc = NULL; -+static GIOChannel *pipe_write_ioc = NULL; -+ -+static gboolean -+gam_error_signal_pipe_handler(gpointer user_data) -+{ -+ char buf[5000]; -+ -+ if (pipe_read_ioc) -+ g_io_channel_read_chars(pipe_read_ioc, buf, sizeof(buf), NULL, NULL); -+ -+ gam_error_check(); -+} -+ -+static void -+gam_setup_error_handler (void) -+{ -+ int signal_pipe[2]; -+ GSource *source; -+ -+ if (pipe(signal_pipe) != -1) { -+ pipe_read_ioc = g_io_channel_unix_new(signal_pipe[0]); -+ pipe_write_ioc = g_io_channel_unix_new(signal_pipe[1]); -+ -+ g_io_channel_set_flags(pipe_read_ioc, G_IO_FLAG_NONBLOCK, NULL); -+ g_io_channel_set_flags(pipe_write_ioc, G_IO_FLAG_NONBLOCK, NULL); -+ -+ source = g_io_create_watch(pipe_read_ioc, G_IO_IN | G_IO_HUP | G_IO_ERR); -+ g_source_set_callback(source, gam_error_signal_pipe_handler, NULL, NULL); -+ -+ g_source_attach(source, NULL); -+ g_source_unref(source); -+ } -+} -+#endif -+ -+void -+gam_got_signal() -+{ -+#ifdef GAM_DEBUG_ENABLED -+ /* Wake up main loop */ -+ if (pipe_write_ioc) { -+ g_io_channel_write_chars(pipe_write_ioc, "a", 1, NULL, NULL); -+ g_io_channel_flush(pipe_write_ioc, NULL); -+ } -+#endif -+} -+ -+ -+ - /** - * gam_server_init: - * @loop: the main event loop of the daemon -@@ -533,11 +597,11 @@ gam_server_init(GMainLoop * loop, const - * Register the timeout checking function - */ - if (no_timeout == 0) -- g_timeout_add(1000, (GSourceFunc) gam_connections_check, NULL); -+ gam_schedule_server_timeout (); - #ifdef GAM_DEBUG_ENABLED -- g_timeout_add(1000, (GSourceFunc) gam_error_check, NULL); -+ gam_setup_error_handler (); - #endif -- -+ - return TRUE; - } - -Index: server/gam_server.h -=================================================================== -RCS file: /cvs/gnome/gamin/server/gam_server.h,v -retrieving revision 1.11 -diff -u -p -r1.11 gam_server.h ---- server/gam_server.h 16 Aug 2005 20:44:17 -0000 1.11 -+++ server/gam_server.h 5 Sep 2006 14:02:44 -0000 -@@ -33,6 +33,7 @@ typedef enum pollHandlerMode { - } pollHandlerMode; - - gboolean gam_init_subscriptions (void); -+gboolean gam_server_use_timeout (void); - gboolean gam_add_subscription (GamSubscription *sub); - gboolean gam_remove_subscription (GamSubscription *sub); - int gam_server_num_listeners (void); -@@ -48,6 +49,7 @@ void gam_server_emit_event - int force); - void gam_shutdown (void); - void gam_show_debug (void); -+void gam_got_signal (void); - - void gam_server_install_kernel_hooks (GamKernelHandler name, - gboolean (*add)(GamSubscription *sub), |