diff options
author | Bastien Nocera <hadess@hadess.net> | 2010-11-23 20:31:37 +0000 |
---|---|---|
committer | Bastien Nocera <hadess@hadess.net> | 2010-11-23 20:31:37 +0000 |
commit | c3505969ad2bb61863965e49f04000e7773f3231 (patch) | |
tree | ea9085ad111698613be8cb98eb075abd9fabed29 /gnome-settings-daemon | |
parent | 8324674ed47191de9ef72419c6a71f5d68c51f17 (diff) | |
download | gnome-settings-daemon-c3505969ad2bb61863965e49f04000e7773f3231.tar.gz |
daemon: Register with gnome-session
https://bugzilla.gnome.org/show_bug.cgi?id=635629
Diffstat (limited to 'gnome-settings-daemon')
-rw-r--r-- | gnome-settings-daemon/main.c | 32 |
1 files changed, 30 insertions, 2 deletions
diff --git a/gnome-settings-daemon/main.c b/gnome-settings-daemon/main.c index 73f499f7..2391ccf0 100644 --- a/gnome-settings-daemon/main.c +++ b/gnome-settings-daemon/main.c @@ -78,9 +78,26 @@ on_session_over (GDBusProxy *proxy, } static void -got_session_proxy (GObject *source_object, +on_client_registered (GObject *source_object, + GAsyncResult *res, + gpointer user_data) +{ + GVariant *variant; + GError *error = NULL; + + variant = g_dbus_proxy_call_finish (G_DBUS_PROXY (source_object), res, &error); + if (error != NULL) { + g_warning ("Unable to register client: %s", error->message); + g_error_free (error); + } else { + g_variant_unref (variant); + } +} + +static void +got_session_proxy (GObject *source_object, GAsyncResult *res, - gpointer user_data) + gpointer user_data) { GDBusProxy *proxy; GError *error = NULL; @@ -90,8 +107,19 @@ got_session_proxy (GObject *source_object, g_debug ("Could not connect to the Session manager: %s", error->message); g_error_free (error); } else { + const char *startup_id; + g_signal_connect (G_OBJECT (proxy), "g-signal", G_CALLBACK (on_session_over), NULL); + startup_id = g_getenv ("DESKTOP_AUTOSTART_ID"); + g_dbus_proxy_call (proxy, + "RegisterClient", + g_variant_new ("(ss)", "gnome-settings-daemon", startup_id), + G_DBUS_CALL_FLAGS_NONE, + -1, + NULL, + (GAsyncReadyCallback) on_client_registered, + manager); } } |