[gnome-power-manager] Force suspend on lid close if LidForceSleep is set to avoid a melted laptop
- From: rhughes src gnome org
- To: commits-list gnome org
- Cc:
- Subject: [gnome-power-manager] Force suspend on lid close if LidForceSleep is set to avoid a melted laptop
- Date: Wed, 2 Feb 2011 13:57:35 +0000 (UTC)
commit 5036023bdff8201dd1fb92c7cedef5da407c9a60
Author: Richard Hughes <richard hughsie com>
Date: Wed Feb 2 13:56:46 2011 +0000
Force suspend on lid close if LidForceSleep is set to avoid a melted laptop
src/gpm-manager.c | 49 ++++++++++++++++++++++++++++++++++++++-----------
1 files changed, 38 insertions(+), 11 deletions(-)
---
diff --git a/src/gpm-manager.c b/src/gpm-manager.c
index 812bbb1..54e3d1e 100644
--- a/src/gpm-manager.c
+++ b/src/gpm-manager.c
@@ -907,17 +907,50 @@ gpm_manager_idle_changed_cb (GpmIdle *idle, GpmIdleMode mode, GpmManager *manage
static void
gpm_manager_lid_button_pressed (GpmManager *manager, gboolean pressed)
{
+ const gchar *description;
+ const gchar *policy_key;
+ GpmActionPolicy policy;
+
if (pressed)
gpm_manager_play (manager, GPM_MANAGER_SOUND_LID_CLOSE, FALSE);
else
gpm_manager_play (manager, GPM_MANAGER_SOUND_LID_OPEN, FALSE);
+ /* we turn the lid dpms back on unconditionally */
if (pressed == FALSE) {
- /* we turn the lid dpms back on unconditionally */
gpm_manager_unblank_screen (manager, NULL);
return;
}
+ /* we have different settings depending on AC state */
+ if (!manager->priv->on_battery) {
+ policy_key = GSD_SETTINGS_BUTTON_LID_AC;
+ description = "Lid closed on AC power";
+ } else {
+ policy_key = GSD_SETTINGS_BUTTON_LID_BATT;
+ description = "Lid closed on battery power";
+ }
+
+ /* check that on systems that would meld when the lid is closed
+ * and not asleep we set a better policy option */
+ policy = g_settings_get_enum (manager->priv->settings_gsd,
+ policy_key);
+ if (policy != GPM_ACTION_POLICY_SUSPEND &&
+ policy != GPM_ACTION_POLICY_HIBERNATE) {
+#if UP_CHECK_VERSION(0,9,9)
+ if (up_client_get_lid_force_sleep (manager->priv->up_client)) {
+ g_warning ("to prevent damage, %s is now forced to 'suspend'",
+ policy_key);
+ g_settings_set_enum (manager->priv->settings_gsd,
+ policy_key,
+ GPM_ACTION_POLICY_SUSPEND);
+ }
+#else
+ g_warning ("Laptop may melt if lid is closed. "
+ "Update UPower and rebuild to find out!");
+#endif
+ }
+
#if UP_CHECK_VERSION(0,9,8)
/* are we docked? */
if (up_client_get_is_docked (manager->priv->client)) {
@@ -926,16 +959,10 @@ gpm_manager_lid_button_pressed (GpmManager *manager, gboolean pressed)
}
#endif
- if (!manager->priv->on_battery) {
- g_debug ("Performing AC policy");
- gpm_manager_perform_policy (manager, GSD_SETTINGS_BUTTON_LID_AC,
- "Lid closed on AC power.");
- return;
- }
-
- g_debug ("Performing battery policy");
- gpm_manager_perform_policy (manager, GSD_SETTINGS_BUTTON_LID_BATT,
- "Lid closed on battery power.");
+ /* do action */
+ gpm_manager_perform_policy (manager,
+ policy_key,
+ description);
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]