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