summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc-Antoine Perennou <Marc-Antoine@Perennou.com>2014-01-05 20:09:26 +0900
committerRay Strode <rstrode@redhat.com>2014-01-06 14:05:50 -0500
commit60c531fcd0c961e213c8c2bfc288c71f9750171f (patch)
tree062dd488313ddc37cbd923062760b6d5dc1e6217
parentf6503d66d2f3f7a29b53c4aac06380ac9334cf14 (diff)
downloadgdm-60c531fcd0c961e213c8c2bfc288c71f9750171f.tar.gz
display: use a async ctor for slave dbus client
https://bugzilla.gnome.org/show_bug.cgi?id=701758 Signed-off-by: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
-rw-r--r--daemon/gdm-display.c32
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;
}