summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRui Matos <tiagomatos@gmail.com>2012-10-24 18:23:03 +0200
committerRui Matos <tiagomatos@gmail.com>2012-10-26 11:37:41 +0200
commitc38e15583a0a8c7b2f6982b79e85143c056c4855 (patch)
treecab694d97100ea79d668c78ee092ff6041777258
parent1d4f68d3ece4002102ed5afa5e17d63300b3113f (diff)
downloadgnome-settings-daemon-c38e15583a0a8c7b2f6982b79e85143c056c4855.tar.gz
main: Only start the manager after registering with gnome session
This ensures that any plugin idles will only run after RegisterClient but also that we only call RegisterClient after Setenv since otherwise Setenv isn't effective. https://bugzilla.gnome.org/show_bug.cgi?id=686814
-rw-r--r--gnome-settings-daemon/main.c60
1 files changed, 28 insertions, 32 deletions
diff --git a/gnome-settings-daemon/main.c b/gnome-settings-daemon/main.c
index fdcb497b..86be40d3 100644
--- a/gnome-settings-daemon/main.c
+++ b/gnome-settings-daemon/main.c
@@ -133,6 +133,29 @@ got_client_proxy (GObject *object,
}
static void
+start_settings_manager (void)
+{
+ gboolean res;
+ GError *error;
+
+ gnome_settings_profile_start ("gnome_settings_manager_new");
+ manager = gnome_settings_manager_new ();
+ gnome_settings_profile_end ("gnome_settings_manager_new");
+ if (manager == NULL) {
+ g_warning ("Unable to register object");
+ gtk_main_quit ();
+ }
+
+ error = NULL;
+ res = gnome_settings_manager_start (manager, &error);
+ if (! res) {
+ g_warning ("Unable to start: %s", error->message);
+ g_error_free (error);
+ gtk_main_quit ();
+ }
+}
+
+static void
on_client_registered (GObject *source_object,
GAsyncResult *res,
gpointer user_data)
@@ -161,6 +184,8 @@ on_client_registered (GObject *source_object,
g_free (object_path);
g_variant_unref (variant);
}
+
+ start_settings_manager ();
}
static void
@@ -316,12 +341,12 @@ watch_for_term_signal (GnomeSettingsManager *manager)
}
static void
-set_session_over_handler (GDBusConnection *bus)
+name_acquired_handler (GDBusConnection *connection,
+ const gchar *name,
+ gpointer user_data)
{
GDBusProxy *proxy;
- g_assert (bus != NULL);
-
proxy = gnome_settings_session_get_session_proxy ();
/* Always call this first, as Setenv can only be called before
any client registers */
@@ -334,14 +359,6 @@ set_session_over_handler (GDBusConnection *bus)
}
static void
-name_acquired_handler (GDBusConnection *connection,
- const gchar *name,
- gpointer user_data)
-{
- set_session_over_handler (connection);
-}
-
-static void
name_lost_handler (GDBusConnection *connection,
const gchar *name,
gpointer user_data)
@@ -419,10 +436,6 @@ parse_args (int *argc, char ***argv)
int
main (int argc, char *argv[])
{
-
- gboolean res;
- GError *error;
-
gnome_settings_profile_start (NULL);
bindtextdomain (GETTEXT_PACKAGE, GNOME_SETTINGS_LOCALEDIR);
@@ -447,22 +460,6 @@ main (int argc, char *argv[])
bus_register ();
- gnome_settings_profile_start ("gnome_settings_manager_new");
- manager = gnome_settings_manager_new ();
- gnome_settings_profile_end ("gnome_settings_manager_new");
- if (manager == NULL) {
- g_warning ("Unable to register object");
- goto out;
- }
-
- error = NULL;
- res = gnome_settings_manager_start (manager, &error);
- if (! res) {
- g_warning ("Unable to start: %s", error->message);
- g_error_free (error);
- goto out;
- }
-
if (do_timed_exit) {
g_timeout_add_seconds (30, (GSourceFunc) timed_exit_cb, NULL);
}
@@ -471,7 +468,6 @@ main (int argc, char *argv[])
g_debug ("Shutting down");
-out:
if (name_id > 0) {
g_bus_unown_name (name_id);
name_id = 0;