gnome-power-manager-06-interactive-dialog.diff revision 14471
9964N/A--- src/gpm-manager.c.orig 2008-03-30 01:28:02.535684000 +0800
9964N/A+++ src/gpm-manager.c 2008-03-30 01:23:38.211239000 +0800
9964N/A@@ -436,6 +414,43 @@
9964N/A return TRUE;
9964N/A }
9964N/A
9964N/A+
9964N/A+#define GSM_DBUS_SERVICE "org.gnome.SessionManager"
9719N/A+#define GSM_DBUS_PATH "/org/gnome/SessionManager"
9964N/A+#define GSM_DBUS_INTERFACE "org.gnome.SessionManager"
9964N/A+
9964N/A+/**
9964N/A+ * gsm_dbus_method:
9964N/A+ * @method: The g-s-m DBUS method name, e.g. "Logout" or "Shutdown"
9964N/A+ **/
9964N/A+static gboolean
9719N/A+gpm_manager_action_interactive (GpmManager *manager)
9719N/A+{
9719N/A+ DBusGConnection *connection;
9964N/A+ DBusGProxy *proxy;
9964N/A+ GError *error = NULL;
9964N/A+
9964N/A+ connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
9964N/A+ if (connection == NULL) {
9964N/A+ if (error) {
9964N/A+ egg_warning ("Couldn't connect to PowerManager %s",
9964N/A+ error->message);
9964N/A+ g_error_free (error);
9964N/A+ }
9964N/A+ return FALSE;
9964N/A+ }
9964N/A+
9964N/A+ proxy = dbus_g_proxy_new_for_name (connection,
9964N/A+ GSM_DBUS_SERVICE,
9964N/A+ GSM_DBUS_PATH,
9964N/A+ GSM_DBUS_INTERFACE);
9964N/A+ dbus_g_proxy_call_no_reply (proxy, "Shutdown",
9964N/A+ G_TYPE_INVALID,
9964N/A+ G_TYPE_INVALID);
9964N/A+ g_object_unref (proxy);
9964N/A+ return TRUE;
9964N/A+}
9964N/A+
9964N/A /**
9964N/A * manager_policy_do:
9964N/A * @manager: This class instance
9964N/A@@ -495,9 +510,8 @@
9964N/A } else if (strcmp (action, ACTION_INTERACTIVE) == 0) {
9964N/A gpm_info_explain_reason (manager->priv->info, GPM_EVENT_NOTIFICATION,
9964N/A _("GNOME interactive logout."), reason);
9964N/A- gnome_client_request_save (gnome_master_client (),
9964N/A- GNOME_SAVE_GLOBAL,
9964N/A- TRUE, GNOME_INTERACT_ANY, FALSE, TRUE);
9964N/A+ if (gpm_manager_action_interactive (manager) == FALSE)
9964N/A+ egg_warning ("Couldn't ask for interactive dialog from session manager");
9964N/A } else {
9964N/A egg_warning ("unknown action %s", action);
9964N/A }
9964N/A