gnome-session r4782 - in branches/dbus_based: . gnome-session
- From: mccann svn gnome org
- To: svn-commits-list gnome org
- Subject: gnome-session r4782 - in branches/dbus_based: . gnome-session
- Date: Wed, 25 Jun 2008 20:39:29 +0000 (UTC)
Author: mccann
Date: Wed Jun 25 20:39:29 2008
New Revision: 4782
URL: http://svn.gnome.org/viewvc/gnome-session?rev=4782&view=rev
Log:
2008-06-25 William Jon McCann <jmccann redhat com>
* gnome-session/gsm-dbus-client.c (gsm_dbus_client_class_init):
* gnome-session/gsm-inhibitor.h:
* gnome-session/gsm-logout-inhibit-dialog.c (add_inhibitor):
* gnome-session/gsm-manager.c (do_attempt_reboot),
(do_attempt_shutdown), (manager_attempt_reboot),
(manager_attempt_shutdown), (manager_attempt_hibernate),
(manager_attempt_suspend), (gsm_manager_is_switch_user_inhibited),
(gsm_manager_is_suspend_inhibited), (do_action), (request_reboot),
(request_shutdown), (request_suspend), (request_hibernate),
(logout_dialog_response):
* gnome-session/gsm-manager.h:
Make inhibit work for shutdown, reboot, suspend, hibernate.
Modified:
branches/dbus_based/ChangeLog
branches/dbus_based/gnome-session/gsm-dbus-client.c
branches/dbus_based/gnome-session/gsm-inhibitor.h
branches/dbus_based/gnome-session/gsm-logout-inhibit-dialog.c
branches/dbus_based/gnome-session/gsm-manager.c
branches/dbus_based/gnome-session/gsm-manager.h
Modified: branches/dbus_based/gnome-session/gsm-dbus-client.c
==============================================================================
--- branches/dbus_based/gnome-session/gsm-dbus-client.c (original)
+++ branches/dbus_based/gnome-session/gsm-dbus-client.c Wed Jun 25 20:39:29 2008
@@ -143,7 +143,6 @@
gsm_dbus_client_class_init (GsmDBusClientClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
- GsmClientClass *client_class = GSM_CLIENT_CLASS (klass);
object_class->finalize = gsm_dbus_client_finalize;
object_class->constructor = gsm_dbus_client_constructor;
Modified: branches/dbus_based/gnome-session/gsm-inhibitor.h
==============================================================================
--- branches/dbus_based/gnome-session/gsm-inhibitor.h (original)
+++ branches/dbus_based/gnome-session/gsm-inhibitor.h Wed Jun 25 20:39:29 2008
@@ -38,13 +38,6 @@
typedef struct GsmInhibitorPrivate GsmInhibitorPrivate;
-typedef enum {
- GSM_INHIBITOR_UNREGISTERED = 0,
- GSM_INHIBITOR_REGISTERED,
- GSM_INHIBITOR_FINISHED,
- GSM_INHIBITOR_FAILED,
-} GsmInhibitorStatus;
-
struct _GsmInhibitor
{
GObject parent;
@@ -56,6 +49,12 @@
GObjectClass parent_class;
};
+typedef enum {
+ GSM_INHIBITOR_FLAG_NONE = 1 << 0,
+ GSM_INHIBITOR_FLAG_ALLOW_USER_SWITCH = 1 << 1,
+ GSM_INHIBITOR_FLAG_ALLOW_SUSPEND = 1 << 2,
+} GsmManagerInhibitFlag;
+
GType gsm_inhibitor_get_type (void) G_GNUC_CONST;
GsmInhibitor * gsm_inhibitor_new (const char *app_id,
Modified: branches/dbus_based/gnome-session/gsm-logout-inhibit-dialog.c
==============================================================================
--- branches/dbus_based/gnome-session/gsm-logout-inhibit-dialog.c (original)
+++ branches/dbus_based/gnome-session/gsm-logout-inhibit-dialog.c Wed Jun 25 20:39:29 2008
@@ -35,6 +35,7 @@
#include "gsm-logout-inhibit-dialog.h"
#include "eggdesktopfile.h"
+#include "util.h"
#define GSM_LOGOUT_INHIBIT_DIALOG_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GSM_TYPE_LOGOUT_INHIBIT_DIALOG, GsmLogoutInhibitDialogPrivate))
@@ -245,7 +246,7 @@
error = NULL;
desktop_file = egg_desktop_file_new_from_dirs (desktop_filename,
- search_dirs,
+ (const char **)search_dirs,
&error);
g_strfreev (search_dirs);
Modified: branches/dbus_based/gnome-session/gsm-manager.c
==============================================================================
--- branches/dbus_based/gnome-session/gsm-manager.c (original)
+++ branches/dbus_based/gnome-session/gsm-manager.c Wed Jun 25 20:39:29 2008
@@ -1359,7 +1359,7 @@
}
static void
-do_request_reboot (GsmConsolekit *consolekit)
+do_attempt_reboot (GsmConsolekit *consolekit)
{
if (gsm_consolekit_can_restart (consolekit)) {
gdm_set_logout_action (GDM_LOGOUT_ACTION_NONE);
@@ -1370,7 +1370,7 @@
}
static void
-do_request_shutdown (GsmConsolekit *consolekit)
+do_attempt_shutdown (GsmConsolekit *consolekit)
{
if (gsm_consolekit_can_stop (consolekit)) {
gdm_set_logout_action (GDM_LOGOUT_ACTION_NONE);
@@ -1381,22 +1381,22 @@
}
static void
-manager_request_reboot (GsmManager *manager)
+manager_attempt_reboot (GsmManager *manager)
{
GsmConsolekit *consolekit;
consolekit = gsm_get_consolekit ();
- do_request_reboot (consolekit);
+ do_attempt_reboot (consolekit);
g_object_unref (consolekit);
}
static void
-manager_request_shutdown (GsmManager *manager)
+manager_attempt_shutdown (GsmManager *manager)
{
GsmConsolekit *consolekit;
consolekit = gsm_get_consolekit ();
- do_request_shutdown (consolekit);
+ do_attempt_shutdown (consolekit);
g_object_unref (consolekit);
}
@@ -1422,7 +1422,7 @@
}
static void
-manager_request_hibernate (GsmManager *manager)
+manager_attempt_hibernate (GsmManager *manager)
{
GsmPowerManager *power_manager;
@@ -1436,7 +1436,7 @@
}
static void
-manager_request_sleep (GsmManager *manager)
+manager_attempt_suspend (GsmManager *manager)
{
GsmPowerManager *power_manager;
@@ -1456,7 +1456,21 @@
return FALSE;
}
- /* FIXME: need to check ALLOW_SWITCH flags */
+ /* FIXME: need to check ALLOW_SWITCH flag */
+ if (gsm_inhibitor_store_size (manager->priv->inhibitors) == 0) {
+ return FALSE;
+ }
+ return TRUE;
+}
+
+static gboolean
+gsm_manager_is_suspend_inhibited (GsmManager *manager)
+{
+ if (manager->priv->inhibitors == NULL) {
+ return FALSE;
+ }
+
+ /* FIXME: need to check ALLOW_SUSPEND flag */
if (gsm_inhibitor_store_size (manager->priv->inhibitors) == 0) {
return FALSE;
}
@@ -1509,16 +1523,16 @@
manager_switch_user (manager);
break;
case GSM_LOGOUT_ACTION_HIBERNATE:
- manager_request_hibernate (manager);
+ manager_attempt_hibernate (manager);
break;
case GSM_LOGOUT_ACTION_SLEEP:
- manager_request_sleep (manager);
+ manager_attempt_suspend (manager);
break;
case GSM_LOGOUT_ACTION_SHUTDOWN:
- manager_request_shutdown (manager);
+ manager_attempt_shutdown (manager);
break;
case GSM_LOGOUT_ACTION_REBOOT:
- manager_request_reboot (manager);
+ manager_attempt_reboot (manager);
break;
case GSM_LOGOUT_ACTION_LOGOUT:
manager_logout (manager);
@@ -1561,6 +1575,113 @@
}
static void
+request_reboot (GsmManager *manager)
+{
+ g_debug ("GsmManager: requesting reboot");
+
+ /* shutdown uses logout inhibit */
+ if (! gsm_manager_is_logout_inhibited (manager)) {
+ manager_attempt_reboot (manager);
+ return;
+ }
+
+ if (manager->priv->inhibit_dialog != NULL) {
+ g_debug ("GsmManager: inhibit dialog already up");
+ gtk_window_present (GTK_WINDOW (manager->priv->inhibit_dialog));
+ return;
+ }
+
+ manager->priv->inhibit_dialog = gsm_logout_inhibit_dialog_new (manager->priv->inhibitors,
+ GSM_LOGOUT_ACTION_REBOOT);
+
+ g_signal_connect (manager->priv->inhibit_dialog,
+ "response",
+ G_CALLBACK (logout_inhibit_dialog_response),
+ manager);
+ gtk_widget_show (manager->priv->inhibit_dialog);
+}
+
+static void
+request_shutdown (GsmManager *manager)
+{
+ g_debug ("GsmManager: requesting shutdown");
+
+ /* shutdown uses logout inhibit */
+ if (! gsm_manager_is_logout_inhibited (manager)) {
+ manager_attempt_shutdown (manager);
+ return;
+ }
+
+ if (manager->priv->inhibit_dialog != NULL) {
+ g_debug ("GsmManager: inhibit dialog already up");
+ gtk_window_present (GTK_WINDOW (manager->priv->inhibit_dialog));
+ return;
+ }
+
+ manager->priv->inhibit_dialog = gsm_logout_inhibit_dialog_new (manager->priv->inhibitors,
+ GSM_LOGOUT_ACTION_SHUTDOWN);
+
+ g_signal_connect (manager->priv->inhibit_dialog,
+ "response",
+ G_CALLBACK (logout_inhibit_dialog_response),
+ manager);
+ gtk_widget_show (manager->priv->inhibit_dialog);
+}
+
+static void
+request_suspend (GsmManager *manager)
+{
+ g_debug ("GsmManager: requesting suspend");
+
+ if (! gsm_manager_is_suspend_inhibited (manager)) {
+ manager_attempt_suspend (manager);
+ return;
+ }
+
+ if (manager->priv->inhibit_dialog != NULL) {
+ g_debug ("GsmManager: inhibit dialog already up");
+ gtk_window_present (GTK_WINDOW (manager->priv->inhibit_dialog));
+ return;
+ }
+
+ manager->priv->inhibit_dialog = gsm_logout_inhibit_dialog_new (manager->priv->inhibitors,
+ GSM_LOGOUT_ACTION_SLEEP);
+
+ g_signal_connect (manager->priv->inhibit_dialog,
+ "response",
+ G_CALLBACK (logout_inhibit_dialog_response),
+ manager);
+ gtk_widget_show (manager->priv->inhibit_dialog);
+}
+
+static void
+request_hibernate (GsmManager *manager)
+{
+ g_debug ("GsmManager: requesting hibernate");
+
+ /* hibernate uses suspend inhibit */
+ if (! gsm_manager_is_suspend_inhibited (manager)) {
+ manager_attempt_hibernate (manager);
+ return;
+ }
+
+ if (manager->priv->inhibit_dialog != NULL) {
+ g_debug ("GsmManager: inhibit dialog already up");
+ gtk_window_present (GTK_WINDOW (manager->priv->inhibit_dialog));
+ return;
+ }
+
+ manager->priv->inhibit_dialog = gsm_logout_inhibit_dialog_new (manager->priv->inhibitors,
+ GSM_LOGOUT_ACTION_HIBERNATE);
+
+ g_signal_connect (manager->priv->inhibit_dialog,
+ "response",
+ G_CALLBACK (logout_inhibit_dialog_response),
+ manager);
+ gtk_widget_show (manager->priv->inhibit_dialog);
+}
+
+static void
request_logout (GsmManager *manager)
{
g_debug ("GsmManager: requesting logout");
@@ -1633,16 +1754,16 @@
request_switch_user (manager);
break;
case GSM_LOGOUT_RESPONSE_HIBERNATE:
- manager_request_hibernate (manager);
+ request_hibernate (manager);
break;
case GSM_LOGOUT_RESPONSE_SLEEP:
- manager_request_sleep (manager);
+ request_suspend (manager);
break;
case GSM_LOGOUT_RESPONSE_SHUTDOWN:
- manager_request_shutdown (manager);
+ request_shutdown (manager);
break;
case GSM_LOGOUT_RESPONSE_REBOOT:
- manager_request_reboot (manager);
+ request_reboot (manager);
break;
case GSM_LOGOUT_RESPONSE_LOGOUT:
request_logout (manager);
Modified: branches/dbus_based/gnome-session/gsm-manager.h
==============================================================================
--- branches/dbus_based/gnome-session/gsm-manager.h (original)
+++ branches/dbus_based/gnome-session/gsm-manager.h Wed Jun 25 20:39:29 2008
@@ -98,12 +98,6 @@
GSM_MANAGER_LOGOUT_MODE_FORCE
} GsmManagerLogoutMode;
-typedef enum {
- GSM_MANAGER_INHIBIT_FLAG_NONE = 1 << 0,
- GSM_MANAGER_INHIBIT_FLAG_ALLOW_USER_SWITCH = 1 << 1,
- GSM_MANAGER_INHIBIT_FLAG_ALLOW_SUSPEND = 1 << 2,
-} GsmManagerInhibitFlag;
-
GType gsm_manager_error_get_type (void);
#define GSM_MANAGER_TYPE_ERROR (gsm_manager_error_get_type ())
@@ -150,9 +144,6 @@
const char *message,
gboolean fatal,
GError **error);
-gboolean gsm_manager_set_name (GsmManager *manager,
- const char *session_name,
- GError **error);
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]