From a92ab2b9dc5d73a2274f50fa1dde5a0020c52282 Mon Sep 17 00:00:00 2001 From: William Jon McCann Date: Tue, 15 Apr 2008 21:01:32 +0000 Subject: Use glib main loop directly instead of running gtk_main before we run 2008-04-15 William Jon McCann * gui/simple-greeter/greeter-main.c: (filter_watch), (filter_timeout), (assistive_registry_start): Use glib main loop directly instead of running gtk_main before we run gtk_init. svn path=/trunk/; revision=6153 --- gui/simple-greeter/greeter-main.c | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) (limited to 'gui/simple-greeter/greeter-main.c') diff --git a/gui/simple-greeter/greeter-main.c b/gui/simple-greeter/greeter-main.c index 58f9a2e6..a8ea69d8 100644 --- a/gui/simple-greeter/greeter-main.c +++ b/gui/simple-greeter/greeter-main.c @@ -101,13 +101,14 @@ assistive_registry_launch (void) static GdkFilterReturn filter_watch (GdkXEvent *xevent, GdkEvent *event, - gpointer data) + GMainLoop *loop) { XEvent *xev = (XEvent *)xevent; if (xev->xany.type == PropertyNotify && xev->xproperty.atom == AT_SPI_IOR) { - gtk_main_quit (); + g_debug ("a11y registry started"); + g_main_loop_quit (loop); return GDK_FILTER_REMOVE; } @@ -116,11 +117,11 @@ filter_watch (GdkXEvent *xevent, } static gboolean -filter_timeout (gpointer data) +filter_timeout (GMainLoop *loop) { g_warning ("The accessibility registry was not found."); - gtk_main_quit (); + g_main_loop_quit (loop); return FALSE; } @@ -130,30 +131,36 @@ assistive_registry_start (void) { GdkWindow *root; guint tid; + GMainLoop *loop; gdm_profile_start (NULL); + g_debug ("Starting a11y registry"); + root = gdk_get_default_root_window (); if ( ! AT_SPI_IOR) { AT_SPI_IOR = XInternAtom (GDK_DISPLAY (), "AT_SPI_IOR", False); } - gdk_window_set_events (root, GDK_PROPERTY_CHANGE_MASK); + gdk_window_set_events (root, GDK_PROPERTY_CHANGE_MASK); if ( ! assistive_registry_launch ()) { g_warning ("The accessibility registry could not be started."); return; } - gdk_window_add_filter (root, filter_watch, NULL); - tid = g_timeout_add_seconds (5, filter_timeout, NULL); + loop = g_main_loop_new (NULL, FALSE); + gdk_window_add_filter (root, (GdkFilterFunc)filter_watch, loop); + tid = g_timeout_add_seconds (5, (GSourceFunc)filter_timeout, loop); - gtk_main (); + g_main_loop_run (loop); - gdk_window_remove_filter (root, filter_watch, NULL); + gdk_window_remove_filter (root, (GdkFilterFunc)filter_watch, loop); g_source_remove (tid); + g_main_loop_unref (loop); + gdm_profile_end (NULL); } -- cgit v1.2.1