backlight - fiddle some to try make backlight work better

This commit is contained in:
Carsten Haitzler 2023-01-17 09:05:05 +00:00
parent 239d989e59
commit e584097d45
1 changed files with 15 additions and 12 deletions

View File

@ -27,6 +27,9 @@ static Eina_Bool _e_bl_suspend = EINA_FALSE;
static void _backlight_devices_device_set(Backlight_Device *bd, double val); static void _backlight_devices_device_set(Backlight_Device *bd, double val);
static void _backlight_devices_device_update(Backlight_Device *bd); static void _backlight_devices_device_update(Backlight_Device *bd);
#define MAX_BL_DIFF 0.15
#define SET_RETRIES 5
static Eina_Bool static Eina_Bool
_backlight_retry_timer_cb(void *data) _backlight_retry_timer_cb(void *data)
{ {
@ -45,17 +48,17 @@ _backlight_mismatch_retry(Backlight_Device *bd)
((fabs(bd->expected_val - 1.0) < DBL_EPSILON) || ((fabs(bd->expected_val - 1.0) < DBL_EPSILON) ||
(fabs(bd->expected_val - e_config->backlight.normal) < DBL_EPSILON) || (fabs(bd->expected_val - e_config->backlight.normal) < DBL_EPSILON) ||
(fabs(bd->expected_val - e_config->backlight.dim) < DBL_EPSILON)) && (fabs(bd->expected_val - e_config->backlight.dim) < DBL_EPSILON)) &&
// and the delta between expected and val >= 0.05 // and the delta between expected and val >= MAX_BL_DIFF
(fabs(bd->expected_val - bd->val) >= 0.05) && (fabs(bd->expected_val - bd->val) >= MAX_BL_DIFF) &&
// and we retried < 20 times // and we retried < SET_RETRIES times
(bd->retries < 10) && (bd->retries < SET_RETRIES) &&
(_own_vt)) (_own_vt))
{ // try again { // try again
printf("RETRY backlight set as %1.2f != %1.2f (expected) try=%i\n", printf("RETRY backlight set as %1.2f != %1.2f (expected) try=%i\n",
bd->val, bd->expected_val, bd->retries); bd->val, bd->expected_val, bd->retries);
bd->retries++; bd->retries++;
if (bd->retry_timer) ecore_timer_del(bd->retry_timer); if (bd->retry_timer) ecore_timer_del(bd->retry_timer);
bd->retry_timer = ecore_timer_add(0.1, _backlight_retry_timer_cb, bd); bd->retry_timer = ecore_timer_add(0.3, _backlight_retry_timer_cb, bd);
} // or give up } // or give up
else bd->retries = 0; else bd->retries = 0;
} }
@ -73,10 +76,10 @@ _backlight_system_get_cb(void *data, const char *params)
if (!!strcmp(bd->dev, dev)) return; if (!!strcmp(bd->dev, dev)) return;
e_system_handler_del("bklight-val", _backlight_system_get_cb, bd); e_system_handler_del("bklight-val", _backlight_system_get_cb, bd);
fval = (double)val / 1000.0; fval = (double)val / 1000.0;
if (fabs(fval - bd->val) >= DBL_EPSILON) if (fabs(fval - bd->val) >= MAX_BL_DIFF)
{ {
bd->val = fval; // bd->val = fval;
ecore_event_add(E_EVENT_BACKLIGHT_CHANGE, NULL, NULL, NULL); // ecore_event_add(E_EVENT_BACKLIGHT_CHANGE, NULL, NULL, NULL);
_backlight_mismatch_retry(bd); _backlight_mismatch_retry(bd);
} }
} }
@ -97,10 +100,10 @@ _backlight_system_ddc_get_cb(void *data, const char *params)
if (val < 0) fval = -1.0; if (val < 0) fval = -1.0;
else fval = (double)val / 100.0; else fval = (double)val / 100.0;
bd->ddc_max = max; bd->ddc_max = max;
if ((fabs(fval - bd->val) >= DBL_EPSILON) || (val == -1)) if ((fabs(fval - bd->val) >= MAX_BL_DIFF) || (val == -1))
{ {
bd->val = fval; // bd->val = fval;
ecore_event_add(E_EVENT_BACKLIGHT_CHANGE, NULL, NULL, NULL); // ecore_event_add(E_EVENT_BACKLIGHT_CHANGE, NULL, NULL, NULL);
_backlight_mismatch_retry(bd); _backlight_mismatch_retry(bd);
} }
} }
@ -791,7 +794,7 @@ e_backlight_level_set(E_Zone *zone, double val, double tim)
if (fabs(tim) < DBL_EPSILON) if (fabs(tim) < DBL_EPSILON)
{ {
_backlight_devices_device_set(bd, val); _backlight_devices_device_set(bd, val);
_backlight_devices_device_update(bd); // _backlight_devices_device_update(bd);
ecore_event_add(E_EVENT_BACKLIGHT_CHANGE, NULL, NULL, NULL); ecore_event_add(E_EVENT_BACKLIGHT_CHANGE, NULL, NULL, NULL);
return; return;
} }