summaryrefslogtreecommitdiff
path: root/gnome-settings-daemon
diff options
context:
space:
mode:
authorBastien Nocera <hadess@hadess.net>2010-11-23 14:19:37 +0000
committerBastien Nocera <hadess@hadess.net>2010-11-23 14:19:37 +0000
commit8324674ed47191de9ef72419c6a71f5d68c51f17 (patch)
treec02cc095af3d83bf3bd61d997776a4799a727616 /gnome-settings-daemon
parent1d09b3b42cbc37ca67f3c11de8ccc8626f33de9a (diff)
downloadgnome-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.c30
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