diff options
author | Robert Ancell <robert.ancell@canonical.com> | 2013-07-20 21:49:48 +1200 |
---|---|---|
committer | Robert Ancell <robert.ancell@canonical.com> | 2013-07-20 21:49:48 +1200 |
commit | 2d2a06437782dde92611c3c4a005c071ce26b048 (patch) | |
tree | 7cae2a6aa5af6d4e6b5a8ae934cca99b3ae0de9e /tests/src/X.c | |
parent | c18cba82f484a4f40a12e4635ac377dd76aa7643 (diff) | |
download | lightdm-2d2a06437782dde92611c3c4a005c071ce26b048.tar.gz |
Synchronise X server starting
Diffstat (limited to 'tests/src/X.c')
-rw-r--r-- | tests/src/X.c | 33 |
1 files changed, 14 insertions, 19 deletions
diff --git a/tests/src/X.c b/tests/src/X.c index 66574238..34d373c4 100644 --- a/tests/src/X.c +++ b/tests/src/X.c @@ -59,25 +59,11 @@ quit (int status) } static void -indicate_ready (void) -{ - void *handler; - handler = signal (SIGUSR1, SIG_IGN); - if (handler == SIG_IGN) - { - status_notify ("XSERVER-%d INDICATE-READY", display_number); - kill (getppid (), SIGUSR1); - } - signal (SIGUSR1, handler); -} - -static void signal_cb (int signum) { if (signum == SIGHUP) { status_notify ("XSERVER-%d DISCONNECT-CLIENTS", display_number); - indicate_ready (); } else { @@ -166,8 +152,6 @@ static void client_disconnected_cb (XServer *server, XClient *client) { g_signal_handlers_disconnect_matched (client, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, NULL); - if (x_server_get_n_clients (server) == 0) - indicate_ready (); } static void @@ -188,6 +172,20 @@ request_cb (const gchar *request) kill (getpid (), SIGSEGV); } g_free (r); + r = g_strdup_printf ("XSERVER-%d INDICATE-READY", display_number); + if (strcmp (request, r) == 0) + { + void *handler; + + handler = signal (SIGUSR1, SIG_IGN); + if (handler == SIG_IGN) + { + status_notify ("XSERVER-%d INDICATE-READY", display_number); + kill (getppid (), SIGUSR1); + } + signal (SIGUSR1, handler); + } + g_free (r); } int @@ -402,9 +400,6 @@ main (int argc, char **argv) quit (EXIT_FAILURE); } - /* Indicate ready if parent process has requested it */ - indicate_ready (); - g_main_loop_run (loop); cleanup (); |