13859N/A+ gdisplay = gdk_display_get_default ();
13859N/A+ xdisplay = gdk_x11_display_get_xdisplay (gdisplay);
13859N/A+ prop = XInternAtom (xdisplay, "XFree86_VT", TRUE);
13859N/A+ return (prop == None ? FALSE : TRUE);
13859N/A gsm_logout_supports_switch_user (GsmLogoutDialog *logout_dialog)
13859N/A+#if defined(sun) && defined(__SVR4)
13859N/A+ ret = gdm_is_available () && vt_is_available ();
13859N/A ret = gsm_consolekit_can_switch_user (logout_dialog->priv->consolekit);
13859N/A+#if defined(sun) && defined(__SVR4)
15422N/A+ ret = gsm_power_manager_can_reboot (logout_dialog->priv->power_manager);
13859N/A ret = gsm_consolekit_can_restart (logout_dialog->priv->consolekit);
13859N/A ret = gdm_supports_logout_action (GDM_LOGOUT_ACTION_REBOOT);
13859N/A+#if defined(sun) && defined(__SVR4)
15422N/A+ ret = gsm_power_manager_can_shutdown (logout_dialog->priv->power_manager);
13859N/A ret = gsm_consolekit_can_stop (logout_dialog->priv->consolekit);
13859N/A ret = gdm_supports_logout_action (GDM_LOGOUT_ACTION_SHUTDOWN);
16386N/A@@ -2540,48 +2556,13 @@ request_reboot_privileges_completed (Gsm
16386N/A request_reboot (GsmManager *manager)
16386N/A- g_debug ("GsmManager: requesting reboot");
16386N/A+ GsmPowerManager *power_manager;
16386N/A- /* We request the privileges before doing anything. There are a few
16386N/A- * - no ConsoleKit: we fallback on GDM
16386N/A- * - no password required: everything is fine
16386N/A- * - password asked once: we ask for it now. If the user enters it
16386N/A- * fine, then all is great. If the user doesn't enter it fine, we
16386N/A- * don't do anything (so no logout).
16386N/A- * - password asked each time: we don't ask it for now since we don't
16386N/A- * want to ask for it twice. Instead we'll ask for it at the very
16386N/A- * end. If the user will enter it fine, then all is great again. If
16386N/A- * the user doesn't enter it fine, then we'll just fallback to GDM.
16386N/A- * The last case (password asked each time) is a bit broken, but
16386N/A- * there's really nothing we can do about it. Generally speaking,
16386N/A- * though, the password will only be asked once (unless the system is
16386N/A- * configured in paranoid mode), and most probably only if there are
16386N/A- * more than one user connected. So the general case is that it will
16386N/A- consolekit = gsm_get_consolekit ();
16386N/A- G_CALLBACK (request_reboot_privileges_completed),
16386N/A- success = gsm_consolekit_get_restart_privileges (consolekit);
16386N/A- g_signal_handlers_disconnect_by_func (consolekit,
16386N/A- request_reboot_privileges_completed,
16386N/A- manager->priv->logout_type = GSM_MANAGER_LOGOUT_REBOOT_GDM;
16386N/A+ power_manager = gsm_get_power_manager ();
16386N/A+ if (gsm_power_manager_can_reboot (power_manager)) {
16386N/A+ gsm_power_manager_attempt_reboot (power_manager);
16386N/A+ g_object_unref (power_manager);
16386N/A@@ -2614,30 +2595,13 @@ request_shutdown_privileges_completed (G
16386N/A request_shutdown (GsmManager *manager)
16386N/A- g_debug ("GsmManager: requesting shutdown");
16386N/A+ GsmPowerManager *power_manager;
16386N/A- /* See the comment in request_reboot() for some more details about how
16386N/A- consolekit = gsm_get_consolekit ();
16386N/A- G_CALLBACK (request_shutdown_privileges_completed),
16386N/A- success = gsm_consolekit_get_stop_privileges (consolekit);
16386N/A- g_signal_handlers_disconnect_by_func (consolekit,
16386N/A- request_shutdown_privileges_completed,
16386N/A- manager->priv->logout_type = GSM_MANAGER_LOGOUT_SHUTDOWN_GDM;
16386N/A+ power_manager = gsm_get_power_manager ();
16386N/A+ if (gsm_power_manager_can_shutdown (power_manager)) {
16386N/A+ gsm_power_manager_attempt_shutdown (power_manager);
16386N/A+ g_object_unref (power_manager);
16170N/A@@ -2589,6 +2589,7 @@ gsm_manager_can_shutdown (GsmManager *ma
16170N/A power_manager = gsm_get_power_manager ();
16170N/A *shutdown_available = gsm_consolekit_can_stop (consolekit)
16170N/A || gsm_consolekit_can_restart (consolekit)
16170N/A+ || gsm_power_manager_can_shutdown (power_manager)
16170N/A || gsm_power_manager_can_suspend (power_manager)
16170N/A || gsm_power_manager_can_hibernate (power_manager);
13859N/A+gsm_power_manager_can_reboot (GsmPowerManager *manager)
16415N/A+ if ((pw = getpwuid (uid)) != NULL) {
13859N/A+gsm_power_manager_can_shutdown (GsmPowerManager *manager)
16415N/A+ return gsm_power_manager_can_reboot (manager);
13859N/A gsm_power_manager_attempt_suspend (GsmPowerManager *manager)
13859N/A+gsm_power_manager_attempt_reboot (GsmPowerManager *manager)
13859N/A+ if (!ensure_gpm_connection (manager, &error)) {
13859N/A+ g_warning ("Could not connect to power manager: %s",
13859N/A+ if (!dbus_g_proxy_call (manager->priv->gpm_proxy, "Reboot",
13859N/A+ G_TYPE_INVALID, G_TYPE_INVALID) &&
13859N/A+ g_warning ("Could not ask power manager to reboot: %s",
13859N/A+ call_error = g_error_new_literal (GSM_POWER_MANAGER_ERROR,
13859N/A+ GSM_POWER_MANAGER_ERROR_REBOOTING,
13859N/A+ g_signal_emit (G_OBJECT (manager),
13859N/A+gsm_power_manager_attempt_shutdown (GsmPowerManager *manager)
13859N/A+ if (!ensure_gpm_connection (manager, &error)) {
13859N/A+ g_warning ("Could not connect to power manager: %s",
13859N/A+ if (!dbus_g_proxy_call (manager->priv->gpm_proxy, "Shutdown",
13859N/A+ G_TYPE_INVALID, G_TYPE_INVALID) &&
13859N/A+ g_warning ("Could not ask power manager to shutdown: %s",
13859N/A+ call_error = g_error_new_literal (GSM_POWER_MANAGER_ERROR,
13859N/A+ GSM_POWER_MANAGER_ERROR_SHUTDOWNING,
13859N/A+ g_signal_emit (G_OBJECT (manager),
13859N/A GSM_POWER_MANAGER_ERROR_SUSPENDING = 0,
13859N/A+ GSM_POWER_MANAGER_ERROR_REBOOTING,
13859N/A+ GSM_POWER_MANAGER_ERROR_SHUTDOWNING,
13859N/A GSM_POWER_MANAGER_ERROR_HIBERNATING
13859N/A gboolean gsm_power_manager_can_hibernate (GsmPowerManager *manager);
13859N/A-gboolean gsm_power_manager_can_power_down (GsmPowerManager *manager);
13859N/A+gboolean gsm_power_manager_can_shutdown (GsmPowerManager *manager);
13859N/A-gboolean gsm_power_manager_can_restart (GsmPowerManager *manager);
13859N/A+gboolean gsm_power_manager_can_reboot (GsmPowerManager *manager);
13859N/A void gsm_power_manager_attempt_suspend (GsmPowerManager *manager);
13859N/A void gsm_power_manager_attempt_hibernate (GsmPowerManager *manager);
13859N/A+void gsm_power_manager_attempt_shutdown (GsmPowerManager *manager);
13859N/A+void gsm_power_manager_attempt_reboot (GsmPowerManager *manager);
13859N/A #endif /* __GSM_POWER_MANAGER_H__ */