[gnome-settings-daemon] power: Connect to gnome-session to get the inhibit and presence data
- From: Richard Hughes <rhughes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-settings-daemon] power: Connect to gnome-session to get the inhibit and presence data
- Date: Wed, 13 Jul 2011 10:43:56 +0000 (UTC)
commit 070376f30094110ad2cbdd25098b471a3a459084
Author: Richard Hughes <richard hughsie com>
Date: Mon Jul 4 17:50:16 2011 +0100
power: Connect to gnome-session to get the inhibit and presence data
plugins/power/gsd-power-manager.c | 61 +++++++++++++++++++++++++++++++++++++
1 files changed, 61 insertions(+), 0 deletions(-)
---
diff --git a/plugins/power/gsd-power-manager.c b/plugins/power/gsd-power-manager.c
index 32b09d9..b1d758f 100644
--- a/plugins/power/gsd-power-manager.c
+++ b/plugins/power/gsd-power-manager.c
@@ -41,7 +41,9 @@
#define GNOME_SESSION_DBUS_NAME "org.gnome.SessionManager"
#define GNOME_SESSION_DBUS_PATH "/org/gnome/SessionManager"
+#define GNOME_SESSION_DBUS_PATH_PRESENCE "/org/gnome/SessionManager/Presence"
#define GNOME_SESSION_DBUS_INTERFACE "org.gnome.SessionManager"
+#define GNOME_SESSION_DBUS_INTERFACE_PRESENCE "org.gnome.SessionManager.Presence"
#define CONSOLEKIT_DBUS_NAME "org.freedesktop.ConsoleKit"
#define CONSOLEKIT_DBUS_PATH_MANAGER "/org/freedesktop/ConsoleKit/Manager"
@@ -155,6 +157,8 @@ struct GsdPowerManagerPrivate
ca_proplist *critical_alert_loop_props;
guint32 critical_alert_timeout_id;
GDBusProxy *screensaver_proxy;
+ GDBusProxy *session_proxy;
+ GDBusProxy *session_presence_proxy;
};
enum {
@@ -2168,6 +2172,38 @@ screensaver_proxy_ready_cb (GObject *source_object,
}
static void
+session_proxy_ready_cb (GObject *source_object,
+ GAsyncResult *res,
+ gpointer user_data)
+{
+ GError *error = NULL;
+ GsdPowerManager *manager = GSD_POWER_MANAGER (user_data);
+
+ manager->priv->session_proxy = g_dbus_proxy_new_for_bus_finish (res, &error);
+ if (manager->priv->session_proxy == NULL) {
+ g_warning ("Could not connect to gnome-sesson: %s",
+ error->message);
+ g_error_free (error);
+ }
+}
+
+static void
+session_presence_proxy_ready_cb (GObject *source_object,
+ GAsyncResult *res,
+ gpointer user_data)
+{
+ GError *error = NULL;
+ GsdPowerManager *manager = GSD_POWER_MANAGER (user_data);
+
+ manager->priv->session_presence_proxy = g_dbus_proxy_new_for_bus_finish (res, &error);
+ if (manager->priv->session_presence_proxy == NULL) {
+ g_warning ("Could not connect to gnome-sesson: %s",
+ error->message);
+ g_error_free (error);
+ }
+}
+
+static void
power_keyboard_proxy_ready_cb (GObject *source_object,
GAsyncResult *res,
gpointer user_data)
@@ -2322,6 +2358,26 @@ gsd_power_manager_init (GsdPowerManager *manager)
screensaver_proxy_ready_cb,
manager);
+ /* connect to the session */
+ g_dbus_proxy_new_for_bus (G_BUS_TYPE_SESSION,
+ G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES,
+ NULL,
+ GNOME_SESSION_DBUS_NAME,
+ GNOME_SESSION_DBUS_PATH,
+ GNOME_SESSION_DBUS_INTERFACE,
+ NULL,
+ session_proxy_ready_cb,
+ manager);
+ g_dbus_proxy_new_for_bus (G_BUS_TYPE_SESSION,
+ G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES,
+ NULL,
+ GNOME_SESSION_DBUS_NAME,
+ GNOME_SESSION_DBUS_PATH_PRESENCE,
+ GNOME_SESSION_DBUS_INTERFACE_PRESENCE,
+ NULL,
+ session_presence_proxy_ready_cb,
+ manager);
+
manager->priv->devices_array = g_ptr_array_new_with_free_func (g_object_unref);
manager->priv->canberra_context = ca_gtk_context_get_for_screen (gdk_screen_get_default ());
@@ -2390,6 +2446,11 @@ gsd_power_manager_finalize (GObject *object)
g_object_unref (manager->priv->previous_icon);
g_free (manager->priv->previous_summary);
+ if (manager->priv->session_proxy != NULL)
+ g_object_unref (manager->priv->session_proxy);
+ if (manager->priv->session_presence_proxy != NULL)
+ g_object_unref (manager->priv->session_presence_proxy);
+
if (manager->priv->critical_alert_timeout_id > 0)
g_source_remove (manager->priv->critical_alert_timeout_id);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]