summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorWilliam Jon McCann <jmccann@redhat.com>2008-08-15 17:13:36 +0000
committerWilliam Jon McCann <mccann@src.gnome.org>2008-08-15 17:13:36 +0000
commitf5d6584fa8d60ab78ec2307ab7a8787fb6895a91 (patch)
tree2dfcff0a8bd05eaf6072e2eecec02fba9cf6f1e1 /common
parent146a464aa0208523e174e65dcbfaa362375bc921 (diff)
downloadgdm-f5d6584fa8d60ab78ec2307ab7a8787fb6895a91.tar.gz
Use a callback for the fatal handler instead of supplying the main_loop.
2008-08-15 William Jon McCann <jmccann@redhat.com> * common/gdm-signal-handler.c (signal_io_watch), (gdm_signal_handler_set_fatal_func): * common/gdm-signal-handler.h: * daemon/factory-slave-main.c (main): * daemon/gdm-session-direct.c (stop_worker): * daemon/gdm-session-worker-job.c (session_worker_job_child_watch): * daemon/main.c (main): * daemon/product-slave-main.c (main): * daemon/session-worker-main.c (main): * daemon/simple-slave-main.c (main): * daemon/xdmcp-chooser-slave-main.c (main): Use a callback for the fatal handler instead of supplying the main_loop. svn path=/trunk/; revision=6382
Diffstat (limited to 'common')
-rw-r--r--common/gdm-signal-handler.c27
-rw-r--r--common/gdm-signal-handler.h5
2 files changed, 18 insertions, 14 deletions
diff --git a/common/gdm-signal-handler.c b/common/gdm-signal-handler.c
index c46df6f2..b9362b3c 100644
--- a/common/gdm-signal-handler.c
+++ b/common/gdm-signal-handler.c
@@ -50,11 +50,12 @@ typedef struct {
struct GdmSignalHandlerPrivate
{
- GMainLoop *main_loop;
- GHashTable *lookup;
- GHashTable *id_lookup;
- GHashTable *action_lookup;
- guint next_id;
+ GHashTable *lookup;
+ GHashTable *id_lookup;
+ GHashTable *action_lookup;
+ guint next_id;
+ GDestroyNotify fatal_func;
+ gpointer fatal_data;
};
static void gdm_signal_handler_class_init (GdmSignalHandlerClass *klass);
@@ -140,10 +141,11 @@ signal_io_watch (GIOChannel *ioc,
block_signals_pop ();
if (is_fatal) {
- g_debug ("GdmSignalHandler: Caught termination signal - exiting main loop");
- if (handler->priv->main_loop != NULL) {
- g_main_loop_quit (handler->priv->main_loop);
+ if (handler->priv->fatal_func != NULL) {
+ g_debug ("GdmSignalHandler: Caught termination signal - calling fatal func");
+ handler->priv->fatal_func (handler->priv->fatal_data);
} else {
+ g_debug ("GdmSignalHandler: Caught termination signal - exiting");
exit (1);
}
@@ -456,13 +458,14 @@ signal_list_free (GSList *list)
}
void
-gdm_signal_handler_set_main_loop (GdmSignalHandler *handler,
- GMainLoop *main_loop)
+gdm_signal_handler_set_fatal_func (GdmSignalHandler *handler,
+ GDestroyNotify func,
+ gpointer user_data)
{
g_return_if_fail (GDM_IS_SIGNAL_HANDLER (handler));
- /* FIXME: take a ref */
- handler->priv->main_loop = main_loop;
+ handler->priv->fatal_func = func;
+ handler->priv->fatal_data = user_data;
}
static void
diff --git a/common/gdm-signal-handler.h b/common/gdm-signal-handler.h
index 84ccbc6d..20f1860c 100644
--- a/common/gdm-signal-handler.h
+++ b/common/gdm-signal-handler.h
@@ -53,8 +53,9 @@ typedef struct
GType gdm_signal_handler_get_type (void);
GdmSignalHandler * gdm_signal_handler_new (void);
-void gdm_signal_handler_set_main_loop (GdmSignalHandler *handler,
- GMainLoop *main_loop);
+void gdm_signal_handler_set_fatal_func (GdmSignalHandler *handler,
+ GDestroyNotify func,
+ gpointer user_data);
void gdm_signal_handler_add_fatal (GdmSignalHandler *handler);
guint gdm_signal_handler_add (GdmSignalHandler *handler,