From aae4d8f894f253b1f5d5b1da540502437c37c0ec Mon Sep 17 00:00:00 2001 From: Nohemi Fernandez Date: Wed, 10 Aug 2011 17:10:28 -0500 Subject: Use async Bus.get_proxy() The sync version of this method would result in apps hanging briefly at startup, however in the async version a window may be created/focused before the async callback runs. --- modules/gtk3/caribou-gtk-module.vala | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) (limited to 'modules') diff --git a/modules/gtk3/caribou-gtk-module.vala b/modules/gtk3/caribou-gtk-module.vala index b6cc358..17ef41b 100644 --- a/modules/gtk3/caribou-gtk-module.vala +++ b/modules/gtk3/caribou-gtk-module.vala @@ -17,16 +17,21 @@ namespace Caribou { public GtkModule () { windows = new GLib.HashTable (null, null); - try { - display = Gdk.Display.get_default (); + display = Gdk.Display.get_default (); - keyboard = Bus.get_proxy_sync (BusType.SESSION, - "org.gnome.Caribou.Keyboard", - "/org/gnome/Caribou/Keyboard"); - Gdk.window_add_filter (null, event_filter); - } catch (Error e) { - stderr.printf ("%s\n", e.message); + Bus.get_proxy.begin (BusType.SESSION, "org.gnome.Caribou.Keyboard", + "/org/gnome/Caribou/Keyboard", 0, null, callback); + + Gdk.window_add_filter (null, event_filter); + } + + private void callback (GLib.Object? obj, GLib.AsyncResult res) { + try { + keyboard = Bus.get_proxy.end(res); } + catch (Error e) { + stderr.printf ("%s\n", e.message); + } } private Gdk.FilterReturn event_filter (Gdk.XEvent xevent, Gdk.Event evt) { -- cgit v1.2.1