summaryrefslogtreecommitdiff
path: root/daemon/gdm-server.c
diff options
context:
space:
mode:
authorColin Walters <walters@verbum.org>2012-12-03 13:53:44 -0500
committerRay Strode <rstrode@redhat.com>2013-01-22 11:56:26 -0500
commit4952f6e5b023428e5f11f763531533c7b262f324 (patch)
tree00b6aaa89047436a07c336df9535eb5dc4b8304d /daemon/gdm-server.c
parent59d705966a50fe796b5ba7414697aa503476a7ec (diff)
downloadgdm-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.c51
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);