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.
This commit is contained in:
Carsten Haitzler 2019-09-18 18:56:42 +01:00
parent b8afba1e49
commit 1783c32839
7 changed files with 41 additions and 10 deletions

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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);

View File

@ -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 */

View File

@ -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;

View File

@ -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);