[gnome-session] [gsm] Port from gnome-power-manager to DeviceKit-power
- From: Vincent Untz <vuntz src gnome org>
- To: svn-commits-list gnome org
- Subject: [gnome-session] [gsm] Port from gnome-power-manager to DeviceKit-power
- Date: Wed, 29 Jul 2009 01:51:31 +0000 (UTC)
commit 5952b7a9efc11b631910688b531ed8176f89440a
Author: Richard Hughes <richard hughsie com>
Date: Wed Jul 22 12:43:50 2009 +0100
[gsm] Port from gnome-power-manager to DeviceKit-power
configure.in | 2 +
gnome-session/Makefile.am | 5 +-
gnome-session/gsm-logout-dialog.c | 21 +-
gnome-session/gsm-manager.c | 69 ++++--
gnome-session/gsm-power-manager.c | 480 -------------------------------------
gnome-session/gsm-power-manager.h | 87 -------
6 files changed, 68 insertions(+), 596 deletions(-)
---
diff --git a/configure.in b/configure.in
index 689bd01..d25424f 100644
--- a/configure.in
+++ b/configure.in
@@ -50,6 +50,7 @@ LIBGNOMEUI_REQUIRED=2.2.0
GTK_REQUIRED=2.12.0
DBUS_GLIB_REQUIRED=0.76
POLKIT_GNOME_REQUIRED=0.7
+DEVKIT_POWER_REQUIRED=008
dnl ====================================================================
dnl Dependency Checks
@@ -61,6 +62,7 @@ PKG_CHECK_MODULES(GNOME_SESSION,
gio-2.0 >= $GLIB_REQUIRED
gtk+-2.0 >= $GTK_REQUIRED
dbus-glib-1 >= $DBUS_GLIB_REQUIRED
+ devkit-power-gobject >= $DEVKIT_POWER_REQUIRED
)
PKG_CHECK_MODULES(SESSION_PROPERTIES,
diff --git a/gnome-session/Makefile.am b/gnome-session/Makefile.am
index 7d9d535..659e358 100644
--- a/gnome-session/Makefile.am
+++ b/gnome-session/Makefile.am
@@ -24,7 +24,8 @@ INCLUDES = \
-DLIBEXECDIR=\"$(libexecdir)\" \
-DGTKBUILDER_DIR=\""$(pkgdatadir)"\" \
-DGCONF_SANITY_CHECK=\""$(GCONF_SANITY_CHECK)"\" \
- -DGCONFTOOL_CMD=\"$(GCONFTOOL)\"
+ -DGCONFTOOL_CMD=\"$(GCONFTOOL)\" \
+ -DI_KNOW_THE_DEVICEKIT_POWER_API_IS_SUBJECT_TO_CHANGE
test_inhibit_SOURCES = \
test-inhibit.c \
@@ -74,8 +75,6 @@ gnome_session_SOURCES = \
gsm-logout-dialog.c \
gsm-inhibit-dialog.h \
gsm-inhibit-dialog.c \
- gsm-power-manager.h \
- gsm-power-manager.c \
gs-idle-monitor.h \
gs-idle-monitor.c \
gsm-presence.h \
diff --git a/gnome-session/gsm-logout-dialog.c b/gnome-session/gsm-logout-dialog.c
index b6efd08..2de3f12 100644
--- a/gnome-session/gsm-logout-dialog.c
+++ b/gnome-session/gsm-logout-dialog.c
@@ -27,8 +27,9 @@
#include <glib/gi18n.h>
#include <gtk/gtk.h>
+#include <devkit-power-gobject/devicekit-power.h>
+
#include "gsm-logout-dialog.h"
-#include "gsm-power-manager.h"
#include "gsm-consolekit.h"
#include "gdm.h"
@@ -49,7 +50,7 @@ struct _GsmLogoutDialogPrivate
{
GsmDialogLogoutType type;
- GsmPowerManager *power_manager;
+ DkpClient *dkp_client;
GsmConsolekit *consolekit;
int timeout;
@@ -141,7 +142,7 @@ gsm_logout_dialog_init (GsmLogoutDialog *logout_dialog)
gtk_window_set_keep_above (GTK_WINDOW (logout_dialog), TRUE);
gtk_window_stick (GTK_WINDOW (logout_dialog));
- logout_dialog->priv->power_manager = gsm_get_power_manager ();
+ logout_dialog->priv->dkp_client = dkp_client_new ();
logout_dialog->priv->consolekit = gsm_get_consolekit ();
@@ -165,9 +166,9 @@ gsm_logout_dialog_destroy (GsmLogoutDialog *logout_dialog,
logout_dialog->priv->timeout_id = 0;
}
- if (logout_dialog->priv->power_manager) {
- g_object_unref (logout_dialog->priv->power_manager);
- logout_dialog->priv->power_manager = NULL;
+ if (logout_dialog->priv->dkp_client) {
+ g_object_unref (logout_dialog->priv->dkp_client);
+ logout_dialog->priv->dkp_client = NULL;
}
if (logout_dialog->priv->consolekit) {
@@ -182,7 +183,9 @@ static gboolean
gsm_logout_supports_system_suspend (GsmLogoutDialog *logout_dialog)
{
gboolean ret;
- ret = gsm_power_manager_can_suspend (logout_dialog->priv->power_manager);
+ g_object_get (logout_dialog->priv->dkp_client,
+ "can-suspend", &ret,
+ NULL);
return ret;
}
@@ -190,7 +193,9 @@ static gboolean
gsm_logout_supports_system_hibernate (GsmLogoutDialog *logout_dialog)
{
gboolean ret;
- ret = gsm_power_manager_can_hibernate (logout_dialog->priv->power_manager);
+ g_object_get (logout_dialog->priv->dkp_client,
+ "can-hibernate", &ret,
+ NULL);
return ret;
}
diff --git a/gnome-session/gsm-manager.c b/gnome-session/gsm-manager.c
index 8b1d743..e031836 100644
--- a/gnome-session/gsm-manager.c
+++ b/gnome-session/gsm-manager.c
@@ -38,6 +38,8 @@
#include <dbus/dbus-glib.h>
#include <dbus/dbus-glib-lowlevel.h>
+#include <devkit-power-gobject/devicekit-power.h>
+
#include <gtk/gtk.h> /* for logout dialog */
#include <gconf/gconf-client.h>
@@ -58,7 +60,6 @@
#include "gsm-logout-dialog.h"
#include "gsm-inhibit-dialog.h"
#include "gsm-consolekit.h"
-#include "gsm-power-manager.h"
#include "gsm-session-save.h"
#define GSM_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GSM_TYPE_MANAGER, GsmManagerPrivate))
@@ -130,6 +131,9 @@ struct GsmManagerPrivate
DBusGProxy *bus_proxy;
DBusGConnection *connection;
+
+ /* Interface with other parts of the system */
+ DkpClient *dkp_client;
};
enum {
@@ -923,29 +927,47 @@ manager_switch_user (GsmManager *manager)
static void
manager_attempt_hibernate (GsmManager *manager)
{
- GsmPowerManager *power_manager;
+ gboolean can_hibernate;
+ GError *error;
+ gboolean ret;
- power_manager = gsm_get_power_manager ();
+ g_object_get (manager->priv->dkp_client,
+ "can-hibernate", &can_hibernate,
+ NULL);
- if (gsm_power_manager_can_hibernate (power_manager)) {
- gsm_power_manager_attempt_hibernate (power_manager);
- }
+ if (can_hibernate) {
+ error = NULL;
+ ret = dkp_client_hibernate (manager->priv->dkp_client, &error);
- g_object_unref (power_manager);
+ if (!ret) {
+ g_warning ("Unexpected hibernate failure: %s",
+ error->message);
+ g_error_free (error);
+ }
+ }
}
static void
manager_attempt_suspend (GsmManager *manager)
{
- GsmPowerManager *power_manager;
+ gboolean can_suspend;
+ GError *error;
+ gboolean ret;
- power_manager = gsm_get_power_manager ();
+ g_object_get (manager->priv->dkp_client,
+ "can-suspend", &can_suspend,
+ NULL);
- if (gsm_power_manager_can_suspend (power_manager)) {
- gsm_power_manager_attempt_suspend (power_manager);
- }
+ if (can_suspend) {
+ error = NULL;
+ ret = dkp_client_suspend (manager->priv->dkp_client, &error);
- g_object_unref (power_manager);
+ if (!ret) {
+ g_warning ("Unexpected suspend failure: %s",
+ error->message);
+ g_error_free (error);
+ }
+ }
}
static void
@@ -2118,6 +2140,11 @@ gsm_manager_dispose (GObject *object)
manager->priv->gconf_client = NULL;
}
+ if (manager->priv->dkp_client != NULL) {
+ g_object_unref (manager->priv->dkp_client);
+ manager->priv->dkp_client = NULL;
+ }
+
G_OBJECT_CLASS (gsm_manager_parent_class)->dispose (object);
}
@@ -2346,6 +2373,8 @@ gsm_manager_init (GsmManager *manager)
G_CALLBACK (on_presence_status_changed),
manager);
+ manager->priv->dkp_client = dkp_client_new ();
+
/* GConf setup */
gconf_client_add_dir (manager->priv->gconf_client,
KEY_DESKTOP_DIR,
@@ -2865,20 +2894,24 @@ gsm_manager_can_shutdown (GsmManager *manager,
GError **error)
{
GsmConsolekit *consolekit;
- GsmPowerManager *power_manager;
+ gboolean can_suspend;
+ gboolean can_hibernate;
+
+ g_object_get (manager->priv->dkp_client,
+ "can-suspend", &can_suspend,
+ "can-hibernate", &can_hibernate,
+ NULL);
g_debug ("GsmManager: CanShutdown called");
g_return_val_if_fail (GSM_IS_MANAGER (manager), FALSE);
consolekit = gsm_get_consolekit ();
- power_manager = gsm_get_power_manager ();
*shutdown_available = gsm_consolekit_can_stop (consolekit)
|| gsm_consolekit_can_restart (consolekit)
- || gsm_power_manager_can_suspend (power_manager)
- || gsm_power_manager_can_hibernate (power_manager);
+ || can_suspend
+ || can_hibernate;
g_object_unref (consolekit);
- g_object_unref (power_manager);
return TRUE;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]