diff options
author | Bastien Nocera <hadess@hadess.net> | 2010-11-23 14:19:37 +0000 |
---|---|---|
committer | Bastien Nocera <hadess@hadess.net> | 2010-11-23 14:19:37 +0000 |
commit | 8324674ed47191de9ef72419c6a71f5d68c51f17 (patch) | |
tree | c02cc095af3d83bf3bd61d997776a4799a727616 /gnome-settings-daemon | |
parent | 1d09b3b42cbc37ca67f3c11de8ccc8626f33de9a (diff) | |
download | gnome-settings-daemon-8324674ed47191de9ef72419c6a71f5d68c51f17.tar.gz |
all: Only call g_bus_own_name() once
Only call g_bus_own_name() once, in the main code, and register
our interfaces as soon as we get the bus connection in other
cases.
Fixes the main daemon exiting as soon as created in some cases.
Diffstat (limited to 'gnome-settings-daemon')
-rw-r--r-- | gnome-settings-daemon/gnome-settings-manager.c | 30 |
1 files changed, 17 insertions, 13 deletions
diff --git a/gnome-settings-daemon/gnome-settings-manager.c b/gnome-settings-daemon/gnome-settings-manager.c index 13b69a82..784752b6 100644 --- a/gnome-settings-daemon/gnome-settings-manager.c +++ b/gnome-settings-daemon/gnome-settings-manager.c @@ -371,11 +371,21 @@ static const GDBusInterfaceVTable interface_vtable = }; static void -on_bus_acquired (GDBusConnection *connection, - const gchar *name, - GnomeSettingsManager *manager) +on_bus_gotten (GObject *source_object, + GAsyncResult *res, + GnomeSettingsManager *manager) { + GDBusConnection *connection; guint registration_id; + GError *error = NULL; + + connection = g_bus_get_finish (res, &error); + if (connection == NULL) { + g_warning ("Could not get session bus: %s", error->message); + g_error_free (error); + return; + } + manager->priv->connection = connection; registration_id = g_dbus_connection_register_object (connection, GSD_MANAGER_DBUS_PATH, @@ -384,8 +394,6 @@ on_bus_acquired (GDBusConnection *connection, manager, NULL, NULL); - if (registration_id > 0) - manager->priv->connection = connection; } static void @@ -394,14 +402,10 @@ register_manager (GnomeSettingsManager *manager) manager->priv->introspection_data = g_dbus_node_info_new_for_xml (introspection_xml, NULL); g_assert (manager->priv->introspection_data != NULL); - manager->priv->owner_id = g_bus_own_name (G_BUS_TYPE_SESSION, - GSD_MANAGER_DBUS_NAME, - G_BUS_NAME_OWNER_FLAGS_NONE, - (GBusAcquiredCallback) on_bus_acquired, - NULL, - NULL, - manager, - NULL); + g_bus_get (G_BUS_TYPE_SESSION, + NULL, + (GAsyncReadyCallback) on_bus_gotten, + manager); } gboolean |