forked from enlightenment/enlightenment
backlight - fiddle some to try make backlight work better
This commit is contained in:
parent
239d989e59
commit
e584097d45
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue