Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Evergreen:11.1
gnome-power-manager
gnome-power-manager-bnc446595-shutdown-dialog.p...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File gnome-power-manager-bnc446595-shutdown-dialog.patch of Package gnome-power-manager
Index: gnome-power-manager-2.24.1/src/gpm-manager.c =================================================================== --- gnome-power-manager-2.24.1.orig/src/gpm-manager.c +++ gnome-power-manager-2.24.1/src/gpm-manager.c @@ -74,6 +74,10 @@ static void gpm_manager_class_init ( static void gpm_manager_init (GpmManager *manager); static void gpm_manager_finalize (GObject *object); +#define GPM_SESSION_MANAGER_SERVICE "org.gnome.SessionManager" +#define GPM_SESSION_MANAGER_INTERFACE "org.gnome.SessionManager" +#define GPM_SESSION_MANAGER_PATH "/org/gnome/SessionManager" + #define GPM_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GPM_TYPE_MANAGER, GpmManagerPrivate)) #define GPM_MANAGER_RECALL_DELAY 1000*10 @@ -413,6 +417,34 @@ gpm_manager_action_hibernate (GpmManager } /** + * 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" @@ -460,9 +492,8 @@ manager_policy_do (GpmManager *manager, } 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); }
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor