From 60c531fcd0c961e213c8c2bfc288c71f9750171f Mon Sep 17 00:00:00 2001 From: Marc-Antoine Perennou Date: Sun, 5 Jan 2014 20:09:26 +0900 Subject: display: use a async ctor for slave dbus client https://bugzilla.gnome.org/show_bug.cgi?id=701758 Signed-off-by: Marc-Antoine Perennou --- daemon/gdm-display.c | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/daemon/gdm-display.c b/daemon/gdm-display.c index b1adae8b..dec07184 100644 --- a/daemon/gdm-display.c +++ b/daemon/gdm-display.c @@ -289,6 +289,21 @@ on_name_vanished (GDBusConnection *connection, queue_finish (GDM_DISPLAY (user_data)); } +static void +gdm_display_real_set_slave_bus_name_finish (GObject *source_object, + GAsyncResult *res, + gpointer user_data) +{ + GdmDisplay *display = user_data; + + display->priv->slave_bus_proxy = GDM_DBUS_SLAVE (gdm_dbus_slave_proxy_new_finish (res, NULL)); + g_object_bind_property (G_OBJECT (display->priv->slave_bus_proxy), + "session-id", + G_OBJECT (display), + "session-id", + G_BINDING_DEFAULT); +} + static gboolean gdm_display_real_set_slave_bus_name (GdmDisplay *display, const char *name, @@ -310,16 +325,13 @@ gdm_display_real_set_slave_bus_name (GdmDisplay *display, NULL); g_clear_object (&display->priv->slave_bus_proxy); - display->priv->slave_bus_proxy = GDM_DBUS_SLAVE (gdm_dbus_slave_proxy_new_sync (display->priv->connection, - G_DBUS_PROXY_FLAGS_NONE, - name, - GDM_SLAVE_PATH, - NULL, NULL)); - g_object_bind_property (G_OBJECT (display->priv->slave_bus_proxy), - "session-id", - G_OBJECT (display), - "session-id", - G_BINDING_DEFAULT); + gdm_dbus_slave_proxy_new (display->priv->connection, + G_DBUS_PROXY_FLAGS_NONE, + name, + GDM_SLAVE_PATH, + NULL, + gdm_display_real_set_slave_bus_name_finish, + display); return TRUE; } -- cgit v1.2.1