diff options
-rw-r--r-- | data/org.gnome.settings-daemon.plugins.power.gschema.xml.in.in | 5 | ||||
-rw-r--r-- | plugins/power/gsd-power-manager.c | 25 |
2 files changed, 20 insertions, 10 deletions
diff --git a/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in.in b/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in.in index 24c97bf2..e717949c 100644 --- a/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in.in +++ b/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in.in @@ -20,11 +20,6 @@ <summary>Dim the screen after a period of inactivity</summary> <description>If the screen should be dimmed to save power when the computer is idle.</description> </key> - <key name="idle-dim-time" type="i"> - <default>90</default> - <summary>The default amount of time to dim the screen after idle</summary> - <description>The default amount of time to dim the screen after idle.</description> - </key> <key name="sleep-inactive-ac-timeout" type="i"> <default>0</default> <summary>Sleep timeout computer when on AC</summary> diff --git a/plugins/power/gsd-power-manager.c b/plugins/power/gsd-power-manager.c index 4972394a..103f78e8 100644 --- a/plugins/power/gsd-power-manager.c +++ b/plugins/power/gsd-power-manager.c @@ -84,6 +84,7 @@ #define SCREENSAVER_FADE_TIME 10 /* seconds */ #define SCREENSAVER_TIMEOUT_BLANK 20 /* seconds */ +#define IDLE_DIM_BLANK_DISABLED_MIN 60 /* seconds */ static const gchar introspection_xml[] = "<node>" @@ -2640,10 +2641,25 @@ idle_configure (GsdPowerManager *manager) /* set up dim callback for when the screen lock is not active, * but only if we actually want to dim. */ timeout_dim = 0; - if (!manager->priv->screensaver_active) { - if (g_settings_get_boolean (manager->priv->settings, "idle-dim")) - timeout_dim = g_settings_get_int (manager->priv->settings, - "idle-dim-time"); + if (manager->priv->screensaver_active) { + /* Don't dim when the screen lock is active */ + } else if (!on_battery) { + /* Don't dim when charging */ + } else if (manager->priv->battery_is_low) { + /* Aggressively blank when battery is low */ + timeout_dim = SCREENSAVER_TIMEOUT_BLANK; + } else { + if (g_settings_get_boolean (manager->priv->settings, "idle-dim")) { + timeout_dim = g_settings_get_int (manager->priv->settings_session, + "idle-delay"); + if (timeout_dim == 0) { + timeout_dim = IDLE_DIM_BLANK_DISABLED_MIN; + } else { + timeout_dim /= 3; + if (timeout_dim < 10) + timeout_dim = 0; + } + } } if (timeout_dim != 0) { g_debug ("setting up dim callback for %is", timeout_blank); @@ -2980,7 +2996,6 @@ engine_settings_key_changed_cb (GSettings *settings, return; } if (g_str_has_prefix (key, "sleep-inactive") || - g_strcmp0 (key, "idle-dim-time") == 0 || g_str_equal (key, "idle-delay")) { idle_configure (manager); return; |