gnome-power-manager r3043 - in trunk: . src
- From: rhughes svn gnome org
- To: svn-commits-list gnome org
- Subject: gnome-power-manager r3043 - in trunk: . src
- Date: Fri, 24 Oct 2008 10:37:17 +0000 (UTC)
Author: rhughes
Date: Fri Oct 24 10:37:17 2008
New Revision: 3043
URL: http://svn.gnome.org/viewvc/gnome-power-manager?rev=3043&view=rev
Log:
2008-10-24 Richard Hughes <richard hughsie com>
* src/gpm-manager.c: (gpm_manager_logout_interactive),
(manager_policy_do):
Use the session manager to request an interactive logout rather than
using the obsolete gnome_client_request_save.
Modified:
trunk/ChangeLog
trunk/src/gpm-manager.c
Modified: trunk/src/gpm-manager.c
==============================================================================
--- trunk/src/gpm-manager.c (original)
+++ trunk/src/gpm-manager.c Fri Oct 24 10:37:17 2008
@@ -80,6 +80,10 @@
#define GPM_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GPM_TYPE_MANAGER, GpmManagerPrivate))
#define GPM_MANAGER_RECALL_DELAY 1000*10
+#define GPM_SESSION_MANAGER_SERVICE "org.gnome.SessionManager"
+#define GPM_SESSION_MANAGER_INTERFACE "org.gnome.SessionManager"
+#define GPM_SESSION_MANAGER_PATH "/org/gnome/SessionManager"
+
struct GpmManagerPrivate
{
GpmAcAdapter *ac_adapter;
@@ -486,6 +490,34 @@
}
/**
+ * gpm_manager_logout_interactive:
+ **/
+static gboolean
+gpm_manager_logout_interactive (GpmManager *manager)
+{
+ GError *error = NULL;
+ DBusGProxy *proxy;
+ DBusGConnection *connection;
+
+ /* get session connection */
+ connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
+ if (connection == NULL) {
+ egg_warning ("failed to do interactive shutdown: %s", error->message);
+ g_error_free (error);
+ return FALSE;
+ }
+
+ /* contact the session manager */
+ proxy = dbus_g_proxy_new_for_name (connection, GPM_SESSION_MANAGER_SERVICE,
+ GPM_SESSION_MANAGER_PATH, GPM_SESSION_MANAGER_INTERFACE);
+
+ /* we have to use no reply, as the SM calls into g-p-m to get the can_suspend property */
+ dbus_g_proxy_call_no_reply (proxy, "Shutdown", G_TYPE_INVALID);
+ g_object_unref (proxy);
+ return TRUE;
+}
+
+/**
* manager_policy_do:
* @manager: This class instance
* @policy: The policy that we should do, e.g. "suspend"
@@ -528,9 +560,7 @@
} else if (strcmp (action, ACTION_INTERACTIVE) == 0) {
gpm_info_explain_reason (manager->priv->info, GPM_EVENT_NOTIFICATION,
_("GNOME interactive logout."), reason);
- gnome_client_request_save (gnome_master_client (),
- GNOME_SAVE_GLOBAL,
- TRUE, GNOME_INTERACT_ANY, FALSE, TRUE);
+ gpm_manager_logout_interactive (manager);
} else {
egg_warning ("unknown action %s", action);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]