From 1783c328394ffe1743522cab4d904a226ac7574c Mon Sep 17 00:00:00 2001 From: "Carsten Haitzler (Rasterman)" Date: Wed, 18 Sep 2019 18:56:42 +0100 Subject: [PATCH] backlight - add battery timeout in addition to regular dim timeout this allows for a shorter timeout when on battery vs when on ac for backlight dimming. this is actually important so when on ac dimming can interrupt minimally bur when on battery it can be much more aggressive. --- data/config/default/e.src | 5 +++-- data/config/standard/e.src | 5 +++-- data/config/tiling/e.src | 3 +++ src/bin/e_config.c | 1 + src/bin/e_config.h | 1 + src/bin/e_screensaver.c | 19 +++++++++++++------ src/modules/conf_display/e_int_config_dpms.c | 17 +++++++++++++++++ 7 files changed, 41 insertions(+), 10 deletions(-) diff --git a/data/config/default/e.src b/data/config/default/e.src index 4b081d0b3..a2e0e3e2e 100644 --- a/data/config/default/e.src +++ b/data/config/default/e.src @@ -202,8 +202,9 @@ group "E_Config" struct { value "backlight.normal" double: 1.0 value "backlight.dim" double: 0.3; value "backlight.transition" double: 0.5; - value "backlight.timer" double: 1.0; - value "backlight.idle_dim" uchar: 0; + value "backlight.timer" double: 30.0; + value "backlight.battery_timer" double: 20.0; + value "backlight.idle_dim" uchar: 1; value "device_desktop" int: 0; value "device_auto_mount" int: 0; value "device_auto_open" int: 0; diff --git a/data/config/standard/e.src b/data/config/standard/e.src index 31b2982f2..4c716d877 100644 --- a/data/config/standard/e.src +++ b/data/config/standard/e.src @@ -193,8 +193,9 @@ group "E_Config" struct { value "backlight.normal" double: 1.0 value "backlight.dim" double: 0.3; value "backlight.transition" double: 0.5; - value "backlight.timer" double: 1.0; - value "backlight.idle_dim" uchar: 0; + value "backlight.timer" double: 30.0; + value "backlight.battery_timer" double: 20.0; + value "backlight.idle_dim" uchar: 1; value "deskenv.load_xrdb" uchar: 1; value "deskenv.load_xmodmap" uchar: 1; value "deskenv.load_gnome" uchar: 0; diff --git a/data/config/tiling/e.src b/data/config/tiling/e.src index 2ec6af31a..431fce4bd 100644 --- a/data/config/tiling/e.src +++ b/data/config/tiling/e.src @@ -193,6 +193,9 @@ group "E_Config" struct { value "backlight.normal" double: 1.0; value "backlight.dim" double: 0.3; value "backlight.transition" double: 0.5; + value "backlight.timer" double: 30.0; + value "backlight.battery_timer" double: 20.0; + value "backlight.idle_dim" uchar: 1; value "deskenv.load_xrdb" uchar: 1; value "deskenv.load_xmodmap" uchar: 1; value "deskenv.load_gnome" uchar: 0; diff --git a/src/bin/e_config.c b/src/bin/e_config.c index 3f1b12233..5195321a1 100644 --- a/src/bin/e_config.c +++ b/src/bin/e_config.c @@ -739,6 +739,7 @@ _e_config_edd_init(Eina_Bool old) E_CONFIG_VAL(D, T, backlight.dim, DOUBLE); E_CONFIG_VAL(D, T, backlight.transition, DOUBLE); E_CONFIG_VAL(D, T, backlight.timer, DOUBLE); + E_CONFIG_VAL(D, T, backlight.battery_timer, DOUBLE); E_CONFIG_VAL(D, T, backlight.sysdev, STR); E_CONFIG_VAL(D, T, backlight.idle_dim, UCHAR); diff --git a/src/bin/e_config.h b/src/bin/e_config.h index 183585181..dc8889e84 100644 --- a/src/bin/e_config.h +++ b/src/bin/e_config.h @@ -369,6 +369,7 @@ struct _E_Config double dim; // GUI double transition; // GUI double timer; // GUI + double battery_timer; // GUI const char *sysdev; // GUI unsigned char idle_dim; // GUI E_Backlight_Mode mode; /* not saved, display-only */ diff --git a/src/bin/e_screensaver.c b/src/bin/e_screensaver.c index 6aa1142e6..ad21ecee2 100644 --- a/src/bin/e_screensaver.c +++ b/src/bin/e_screensaver.c @@ -71,13 +71,16 @@ e_screensaver_timeout_get(Eina_Bool use_idle) { if (e_config->backlight.idle_dim) { + double t2 = e_config->backlight.timer; + + if ((e_powersave_mode_get() > E_POWERSAVE_MODE_LOW) && + (e_config->backlight.battery_timer > 0.0)) + t2 = e_config->backlight.battery_timer; if (timeout > 0) { - if (e_config->backlight.timer < timeout) - timeout = e_config->backlight.timer; + if (t2 < timeout) timeout = t2; } - else - timeout = e_config->backlight.timer; + else timeout = t2; } } return timeout; @@ -568,8 +571,12 @@ e_screensaver_eval(Eina_Bool saver_on) if ((e_config->backlight.idle_dim) && (!use_special_instead_of_dim)) { - double t = e_config->screensaver_timeout - - e_config->backlight.timer; + double t2 = e_config->backlight.timer; + + if ((e_powersave_mode_get() > E_POWERSAVE_MODE_LOW) && + (e_config->backlight.battery_timer > 0.0)) + t2 = e_config->backlight.battery_timer; + double t = e_config->screensaver_timeout - t2; if (t < 1.0) t = 1.0; if (_screensaver_now) t = 1.0; diff --git a/src/modules/conf_display/e_int_config_dpms.c b/src/modules/conf_display/e_int_config_dpms.c index e520de6f1..b3a863816 100644 --- a/src/modules/conf_display/e_int_config_dpms.c +++ b/src/modules/conf_display/e_int_config_dpms.c @@ -14,6 +14,8 @@ struct _E_Config_Dialog_Data E_Config_Dialog *cfd; Evas_Object *backlight_slider_idle; + Evas_Object *backlight_battery_slider_idle; + Evas_Object *backlight_battery_label; Evas_Object *backlight_slider_fade; char *bl_dev; @@ -23,6 +25,7 @@ struct _E_Config_Dialog_Data double backlight_normal; double backlight_dim; double backlight_timeout; + double backlight_battery_timeout; double backlight_transition; int ask_presentation; @@ -68,6 +71,7 @@ _fill_data(E_Config_Dialog_Data *cfdata) cfdata->backlight_transition = e_config->backlight.transition; cfdata->enable_idle_dim = e_config->backlight.idle_dim; cfdata->backlight_timeout = e_config->backlight.timer; + cfdata->backlight_battery_timeout = e_config->backlight.battery_timer; cfdata->ask_presentation = e_config->screensaver_ask_presentation; cfdata->ask_presentation_timeout = e_config->screensaver_ask_presentation_timeout; } @@ -97,6 +101,7 @@ _apply_data(E_Config_Dialog *cfd EINA_UNUSED, E_Config_Dialog_Data *cfdata) e_config->backlight.dim = cfdata->backlight_dim / 100.0; e_config->backlight.transition = cfdata->backlight_transition; e_config->backlight.timer = lround(cfdata->backlight_timeout); + e_config->backlight.battery_timer = lround(cfdata->backlight_battery_timeout); e_config->backlight.idle_dim = cfdata->enable_idle_dim; e_config->screensaver_ask_presentation = cfdata->ask_presentation; e_config->screensaver_ask_presentation_timeout = cfdata->ask_presentation_timeout; @@ -125,12 +130,15 @@ _advanced_check_changed(E_Config_Dialog *cfd EINA_UNUSED, E_Config_Dialog_Data * { // set state from saved config e_widget_disabled_set(cfdata->backlight_slider_idle, !cfdata->enable_idle_dim); + e_widget_disabled_set(cfdata->backlight_battery_slider_idle, !cfdata->enable_idle_dim); + e_widget_disabled_set(cfdata->backlight_battery_label, !cfdata->enable_idle_dim); e_widget_disabled_set(cfdata->backlight_slider_fade, !cfdata->enable_idle_dim); return (!EINA_DBL_EQ(e_config->backlight.normal * 100.0, cfdata->backlight_normal)) || (!EINA_DBL_EQ(e_config->backlight.dim * 100.0, cfdata->backlight_dim)) || (!EINA_DBL_EQ(e_config->backlight.transition, cfdata->backlight_transition)) || (!EINA_DBL_EQ(e_config->backlight.timer, cfdata->backlight_timeout)) || + (!EINA_DBL_EQ(e_config->backlight.battery_timer, cfdata->backlight_battery_timeout)) || (e_config->backlight.idle_dim != cfdata->enable_idle_dim) || (e_config->screensaver_ask_presentation != cfdata->ask_presentation) || (!EINA_DBL_EQ(e_config->screensaver_ask_presentation_timeout, cfdata->ask_presentation_timeout)); @@ -192,6 +200,15 @@ _advanced_create_widgets(E_Config_Dialog *cfd EINA_UNUSED, Evas *evas, E_Config_ cfdata->backlight_slider_idle = ob; e_widget_disabled_set(ob, !cfdata->enable_idle_dim); // set state from saved config e_widget_list_object_append(o, ob, 1, 1, 0.5); + ob = e_widget_label_add(evas, _("Fade Time on Battery")); + cfdata->backlight_battery_label = ob; + e_widget_disabled_set(ob, !cfdata->enable_idle_dim); // set state from saved config + e_widget_list_object_append(o, ob, 1, 1, 0.5); + ob = e_widget_slider_add(evas, 1, 0, _("%1.0f second(s)"), 0.0, 300.0, 1.0, 0, + &(cfdata->backlight_battery_timeout), NULL, 100); + cfdata->backlight_battery_slider_idle = ob; + e_widget_disabled_set(ob, !cfdata->enable_idle_dim); // set state from saved config + e_widget_list_object_append(o, ob, 1, 1, 0.5); ob = e_widget_label_add(evas, _("Fade Time")); e_widget_list_object_append(o, ob, 1, 1, 0.5);