diff options
-rw-r--r-- | daemon/gdm-display.c | 32 |
1 files 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; } |