[gnome-settings-daemon] main: Provide a singleton SessionManager proxy object
- From: Bastien Nocera <hadess src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-settings-daemon] main: Provide a singleton SessionManager proxy object
- Date: Mon, 22 Oct 2012 08:10:15 +0000 (UTC)
commit 58d38a39f67c71ccdea219e3d3651f7726e495a1
Author: Matthias Clasen <mclasen redhat com>
Date: Sat Oct 20 20:17:58 2012 -0400
main: Provide a singleton SessionManager proxy object
Many plugins were creating these on their own, with ugly async
code. It seems much more straightforward and efficient to get
a proxy once, and keep it around for everybody to use.
https://bugzilla.gnome.org/show_bug.cgi?id=686556
gnome-settings-daemon/gnome-settings-session.c | 32 ++++++++++++++++++++++++
gnome-settings-daemon/gnome-settings-session.h | 1 +
2 files changed, 33 insertions(+), 0 deletions(-)
---
diff --git a/gnome-settings-daemon/gnome-settings-session.c b/gnome-settings-daemon/gnome-settings-session.c
index 5786300..4ba4869 100644
--- a/gnome-settings-daemon/gnome-settings-session.c
+++ b/gnome-settings-daemon/gnome-settings-session.c
@@ -434,3 +434,35 @@ gnome_settings_session_new (void)
session = g_object_new (GNOME_TYPE_SETTINGS_SESSION, NULL);
return GNOME_SETTINGS_SESSION (session);
}
+
+#define GNOME_SESSION_DBUS_NAME "org.gnome.SessionManager"
+#define GNOME_SESSION_DBUS_OBJECT "/org/gnome/SessionManager"
+#define GNOME_SESSION_DBUS_INTERFACE "org.gnome.SessionManager"
+
+GDBusProxy *
+gnome_settings_session_get_session_proxy (void)
+{
+ static GDBusProxy *session_proxy;
+ GError *error = NULL;
+
+ if (session_proxy != NULL) {
+ g_object_ref (session_proxy);
+ } else {
+ session_proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SESSION,
+ G_DBUS_PROXY_FLAGS_NONE,
+ NULL,
+ GNOME_SESSION_DBUS_NAME,
+ GNOME_SESSION_DBUS_OBJECT,
+ GNOME_SESSION_DBUS_INTERFACE,
+ NULL,
+ &error);
+ if (error) {
+ g_warning ("Failed to connect to the session manager: %s", error->message);
+ g_error_free (error);
+ } else {
+ g_object_add_weak_pointer (G_OBJECT (session_proxy), (gpointer*)&session_proxy);
+ }
+ }
+
+ return session_proxy;
+}
diff --git a/gnome-settings-daemon/gnome-settings-session.h b/gnome-settings-daemon/gnome-settings-session.h
index c9b64ee..1f7580d 100644
--- a/gnome-settings-daemon/gnome-settings-session.h
+++ b/gnome-settings-daemon/gnome-settings-session.h
@@ -58,6 +58,7 @@ GType gnome_settings_session_state_get_type (void);
GnomeSettingsSession *gnome_settings_session_new (void);
GnomeSettingsSessionState gnome_settings_session_get_state (GnomeSettingsSession *session);
+GDBusProxy *gnome_settings_session_get_session_proxy (void);
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]