diff options
author | Colin Walters <walters@verbum.org> | 2012-12-03 13:53:44 -0500 |
---|---|---|
committer | Ray Strode <rstrode@redhat.com> | 2013-01-22 11:56:26 -0500 |
commit | 4952f6e5b023428e5f11f763531533c7b262f324 (patch) | |
tree | 00b6aaa89047436a07c336df9535eb5dc4b8304d /daemon/gdm-server.c | |
parent | 59d705966a50fe796b5ba7414697aa503476a7ec (diff) | |
download | gdm-4952f6e5b023428e5f11f763531533c7b262f324.tar.gz |
Port to g_unix_signal_add(), drop GdmSignalHandler
The level of copy/paste going on here before is rather astonishing.
For example, in some cases, I dropped spurious handling of SIGHUP,
when the code didn't have any settings to reread.
Anyways, the code is now clearer, and we get to drop all the bits of
gdm-signal-handler.[ch] for the integrated GLib handling.
https://bugzilla.gnome.org/show_bug.cgi?id=676181
Diffstat (limited to 'daemon/gdm-server.c')
-rw-r--r-- | daemon/gdm-server.c | 51 |
1 files changed, 10 insertions, 41 deletions
diff --git a/daemon/gdm-server.c b/daemon/gdm-server.c index 83bbce9d..01fc5d48 100644 --- a/daemon/gdm-server.c +++ b/daemon/gdm-server.c @@ -54,7 +54,6 @@ #include <X11/Xlib.h> /* for Display */ #include "gdm-common.h" -#include "gdm-signal-handler.h" #include "gdm-settings-direct.h" #include "gdm-settings-keys.h" @@ -96,6 +95,7 @@ struct GdmServerPrivate char *chosen_hostname; guint child_watch_id; + guint sigusr1_id; gboolean is_initial; }; @@ -190,51 +190,17 @@ gdm_server_get_display_device (GdmServer *server) } static gboolean -emit_ready_idle (GdmServer *server) +on_sigusr1 (gpointer user_data) + { + GdmServer *server = user_data; + g_debug ("GdmServer: Got USR1 from X server - emitting READY"); g_signal_emit (server, signals[READY], 0); return FALSE; } - -static gboolean -signal_cb (int signo, - GdmServer *server) - -{ - g_idle_add ((GSourceFunc)emit_ready_idle, server); - - return TRUE; -} - -static void -add_ready_handler (GdmServer *server) -{ - GdmSignalHandler *signal_handler; - - signal_handler = gdm_signal_handler_new (); - gdm_signal_handler_add (signal_handler, - SIGUSR1, - (GdmSignalHandlerFunc)signal_cb, - server); - g_object_unref (signal_handler); -} - -static void -remove_ready_handler (GdmServer *server) -{ - GdmSignalHandler *signal_handler; - - signal_handler = gdm_signal_handler_new (); - gdm_signal_handler_remove_func (signal_handler, - SIGUSR1, - (GdmSignalHandlerFunc)signal_cb, - server); - g_object_unref (signal_handler); -} - /* We keep a connection (parent_dsp) open with the parent X server * before running a proxy on it to prevent the X server resetting * as we open and close other connections. @@ -1080,7 +1046,9 @@ gdm_server_init (GdmServer *server) server->priv->log_dir = g_strdup (LOGDIR); - add_ready_handler (server); + server->priv->sigusr1_id = g_unix_signal_add (SIGUSR1, + on_sigusr1, + server); } static void @@ -1095,7 +1063,8 @@ gdm_server_finalize (GObject *object) g_return_if_fail (server->priv != NULL); - remove_ready_handler (server); + if (server->priv->sigusr1_id > 0) + g_source_remove (server->priv->sigusr1_id); gdm_server_stop (server); |