Blame SOURCES/0001-power-Only-disable-Suspend-Hibernate-actions-inside-.patch

7139f0
From fbe9b7dba44cb284f649a1e916b2cf3ce8281211 Mon Sep 17 00:00:00 2001
7139f0
From: Benjamin Berg <bberg@redhat.com>
7139f0
Date: Tue, 7 May 2019 15:40:20 +0200
7139f0
Subject: [PATCH] power: Only disable Suspend/Hibernate actions inside VM
7139f0
7139f0
While we theoretically only want a different default value inside a VM,
7139f0
we currently hack this by never doing a suspend action inside VMs.
7139f0
However, that also breaks automatic logout, which is an unintended side
7139f0
effect.
7139f0
7139f0
Move the check to not install the corresponding timeout (preventing
7139f0
sleep warnings from being displayed) and also only enforce the VM
7139f0
specific hack for the Suspend and Hibernate actions.
7139f0
---
7139f0
 plugins/power/gsd-power-manager.c | 15 ++++++++-------
7139f0
 1 file changed, 8 insertions(+), 7 deletions(-)
7139f0
7139f0
diff --git a/plugins/power/gsd-power-manager.c b/plugins/power/gsd-power-manager.c
7139f0
index f965f6f..dbaa262 100644
7139f0
--- a/plugins/power/gsd-power-manager.c
7139f0
+++ b/plugins/power/gsd-power-manager.c
7139f0
@@ -1520,13 +1520,6 @@ idle_set_mode (GsdPowerManager *manager, GsdPowerIdleMode mode)
7139f0
                 return;
7139f0
         }
7139f0
 
7139f0
-        /* don't do any power saving if we're a VM */
7139f0
-        if (manager->priv->is_virtual_machine) {
7139f0
-                g_debug ("ignoring state transition to %s as virtual machine",
7139f0
-                         idle_mode_to_string (mode));
7139f0
-                return;
7139f0
-        }
7139f0
-
7139f0
         manager->priv->current_idle_mode = mode;
7139f0
         g_debug ("Doing a state transition: %s", idle_mode_to_string (mode));
7139f0
 
7139f0
@@ -1727,6 +1720,14 @@ idle_configure (GsdPowerManager *manager)
7139f0
         clear_idle_watch (manager->priv->idle_monitor,
7139f0
                           &manager->priv->idle_sleep_warning_id);
7139f0
 
7139f0
+        /* don't do any power saving if we're a VM */
7139f0
+        if (manager->priv->is_virtual_machine &&
7139f0
+            (action_type == GSD_POWER_ACTION_SUSPEND ||
7139f0
+             action_type == GSD_POWER_ACTION_HIBERNATE)) {
7139f0
+                g_debug ("Ignoring sleep timeout with suspend action inside VM");
7139f0
+                timeout_sleep = 0;
7139f0
+        }
7139f0
+
7139f0
         if (timeout_sleep != 0) {
7139f0
                 g_debug ("setting up sleep callback %is", timeout_sleep);
7139f0
 
7139f0
-- 
7139f0
2.31.1
7139f0