diff options
author | William Jon McCann <mccann@jhu.edu> | 2007-10-19 17:26:23 +0000 |
---|---|---|
committer | William Jon McCann <mccann@src.gnome.org> | 2007-10-19 17:26:23 +0000 |
commit | 3a8578103249134717574921c3d142bab4d6df94 (patch) | |
tree | c22f6c7a329a2230fa72deb6c12bc414a20a74ea /daemon/gdm-server.c | |
parent | 365092a43a92b57723297f5bdaad3375aa1efdde (diff) | |
download | gdm-3a8578103249134717574921c3d142bab4d6df94.tar.gz |
Assign ids to signal handlers. Add functions to remove handlers. Restore
2007-10-19 William Jon McCann <mccann@jhu.edu>
* common/gdm-signal-handler.c: (signal_io_watch), (catch_signal),
(uncatch_signal), (gdm_signal_handler_add), (callback_data_free),
(gdm_signal_handler_remove_and_free_data),
(gdm_signal_handler_remove), (find_callback_data_by_func),
(gdm_signal_handler_remove_func), (signal_list_free),
(gdm_signal_handler_init), (gdm_signal_handler_finalize):
* common/gdm-signal-handler.h:
* daemon/gdm-server.c: (add_ready_handler), (remove_ready_handler),
(gdm_server_spawn), (gdm_server_init), (gdm_server_finalize):
Assign ids to signal handlers. Add functions to remove handlers.
Restore sigaction when no handlers are present. Fix some
memory management bugs.
svn path=/trunk/; revision=5386
Diffstat (limited to 'daemon/gdm-server.c')
-rw-r--r-- | daemon/gdm-server.c | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/daemon/gdm-server.c b/daemon/gdm-server.c index 8e493a9e..47142763 100644 --- a/daemon/gdm-server.c +++ b/daemon/gdm-server.c @@ -164,7 +164,7 @@ signal_cb (int signo, } static void -setup_ready_signal (GdmServer *server) +add_ready_handler (GdmServer *server) { GdmSignalHandler *signal_handler; @@ -176,6 +176,19 @@ setup_ready_signal (GdmServer *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. @@ -612,7 +625,7 @@ gdm_server_spawn (GdmServer *server, g_ptr_array_foreach (env, (GFunc)g_free, NULL); g_ptr_array_free (env, TRUE); - g_debug ("Started X server process: %d", (int)server->priv->pid); + g_debug ("Started X server process %d - waiting for READY", (int)server->priv->pid); server->priv->child_watch_id = g_child_watch_add (server->priv->pid, (GChildWatchFunc)server_child_watch, @@ -854,7 +867,7 @@ gdm_server_init (GdmServer *server) server->priv->command = g_strdup (X_SERVER " -br -verbose"); server->priv->log_dir = g_strdup (LOGDIR); - setup_ready_signal (server); + add_ready_handler (server); } static void @@ -869,6 +882,8 @@ gdm_server_finalize (GObject *object) g_return_if_fail (server->priv != NULL); + remove_ready_handler (server); + gdm_server_stop (server); G_OBJECT_CLASS (gdm_server_parent_class)->finalize (object); |