forked from enlightenment/enlightenment
blank+dim+screensave - stop toggling on and off with self-feeding events
separate screen powersave oiut of core so it's used selectively inside powersave only for now. need api to get it for outside.
This commit is contained in:
parent
c4e76ed593
commit
99dd752b10
|
@ -115,7 +115,7 @@ E_API E_Powersave_Mode
|
||||||
e_powersave_mode_get(void)
|
e_powersave_mode_get(void)
|
||||||
{
|
{
|
||||||
if (powersave_force) return powersave_mode_force;
|
if (powersave_force) return powersave_mode_force;
|
||||||
if (powersave_screen) return powersave_mode_screen;
|
// if (powersave_screen) return powersave_mode_screen;
|
||||||
return powersave_mode;
|
return powersave_mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -144,6 +144,8 @@ e_powersave_mode_unforce(void)
|
||||||
powersave_mode_force = E_POWERSAVE_MODE_NONE;
|
powersave_mode_force = E_POWERSAVE_MODE_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// XXX: need a get for this
|
||||||
|
|
||||||
E_API void
|
E_API void
|
||||||
e_powersave_mode_screen_set(E_Powersave_Mode mode)
|
e_powersave_mode_screen_set(E_Powersave_Mode mode)
|
||||||
{
|
{
|
||||||
|
@ -151,11 +153,7 @@ e_powersave_mode_screen_set(E_Powersave_Mode mode)
|
||||||
printf("PWSAVE SCREEN SET %i/%i\n", (int)mode, (int)E_POWERSAVE_MODE_FREEZE);
|
printf("PWSAVE SCREEN SET %i/%i\n", (int)mode, (int)E_POWERSAVE_MODE_FREEZE);
|
||||||
powersave_screen = EINA_TRUE;
|
powersave_screen = EINA_TRUE;
|
||||||
powersave_mode_screen = mode;
|
powersave_mode_screen = mode;
|
||||||
if (!powersave_force)
|
_e_powersave_mode_eval();
|
||||||
{
|
|
||||||
_e_powersave_event_change_send(powersave_mode_screen);
|
|
||||||
_e_powersave_mode_eval();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
E_API void
|
E_API void
|
||||||
|
@ -164,12 +162,8 @@ e_powersave_mode_screen_unset(void)
|
||||||
if (!powersave_screen) return;
|
if (!powersave_screen) return;
|
||||||
printf("PWSAVE SCREEN UNSET\n");
|
printf("PWSAVE SCREEN UNSET\n");
|
||||||
powersave_screen = EINA_FALSE;
|
powersave_screen = EINA_FALSE;
|
||||||
if ((!powersave_force) && (powersave_mode_screen != powersave_mode))
|
|
||||||
{
|
|
||||||
_e_powersave_event_change_send(powersave_screen);
|
|
||||||
_e_powersave_mode_eval();
|
|
||||||
}
|
|
||||||
powersave_mode_screen = E_POWERSAVE_MODE_NONE;
|
powersave_mode_screen = E_POWERSAVE_MODE_NONE;
|
||||||
|
_e_powersave_mode_eval();
|
||||||
}
|
}
|
||||||
|
|
||||||
E_API E_Powersave_Sleeper *
|
E_API E_Powersave_Sleeper *
|
||||||
|
@ -212,11 +206,15 @@ e_powersave_sleeper_sleep(E_Powersave_Sleeper *sleeper, int poll_interval, Eina_
|
||||||
if (!sleeper) return;
|
if (!sleeper) return;
|
||||||
if (allow_save)
|
if (allow_save)
|
||||||
{
|
{
|
||||||
if (e_powersave_mode_get() == E_POWERSAVE_MODE_FREEZE)
|
E_Powersave_Mode pm = e_powersave_mode_get();
|
||||||
|
|
||||||
|
if (powersave_screen) pm = powersave_mode_screen;
|
||||||
|
|
||||||
|
if (pm == E_POWERSAVE_MODE_FREEZE)
|
||||||
timf = 3600.0;
|
timf = 3600.0;
|
||||||
else if (e_powersave_mode_get() == E_POWERSAVE_MODE_EXTREME)
|
else if (pm == E_POWERSAVE_MODE_EXTREME)
|
||||||
timf = (double)poll_interval / 2.0;
|
timf = (double)poll_interval / 2.0;
|
||||||
else if (e_powersave_mode_get() == E_POWERSAVE_MODE_HIGH)
|
else if (pm == E_POWERSAVE_MODE_HIGH)
|
||||||
timf = (double)poll_interval / 4.0;
|
timf = (double)poll_interval / 4.0;
|
||||||
else
|
else
|
||||||
timf = (double)poll_interval / 8.0;
|
timf = (double)poll_interval / 8.0;
|
||||||
|
@ -308,11 +306,9 @@ static void
|
||||||
_e_powersave_mode_eval(void)
|
_e_powersave_mode_eval(void)
|
||||||
{
|
{
|
||||||
double t = 0.0;
|
double t = 0.0;
|
||||||
E_Powersave_Mode mode;
|
E_Powersave_Mode mode = e_powersave_mode_get();
|
||||||
|
|
||||||
if (powersave_force) mode = powersave_mode_force;
|
|
||||||
else mode = powersave_mode;
|
|
||||||
|
|
||||||
|
if (powersave_screen) mode = powersave_mode_screen;
|
||||||
switch (mode)
|
switch (mode)
|
||||||
{
|
{
|
||||||
case E_POWERSAVE_MODE_NONE:
|
case E_POWERSAVE_MODE_NONE:
|
||||||
|
|
|
@ -12,6 +12,9 @@ static Ecore_Event_Handler *_e_screensaver_handler_border_desk_set = NULL;
|
||||||
static Ecore_Event_Handler *_e_screensaver_handler_desk_show = NULL;
|
static Ecore_Event_Handler *_e_screensaver_handler_desk_show = NULL;
|
||||||
static Ecore_Event_Handler *_e_screensaver_handler_powersave = NULL;
|
static Ecore_Event_Handler *_e_screensaver_handler_powersave = NULL;
|
||||||
|
|
||||||
|
static int _e_screensaver_cfg_timeout = -1;
|
||||||
|
static int _e_screensaver_cfg_dim = -1;
|
||||||
|
|
||||||
static int _e_screensaver_timeout = 0;
|
static int _e_screensaver_timeout = 0;
|
||||||
static int _e_screensaver_blanking = 0;
|
static int _e_screensaver_blanking = 0;
|
||||||
static int _e_screensaver_expose = 0;
|
static int _e_screensaver_expose = 0;
|
||||||
|
@ -90,6 +93,21 @@ e_screensaver_update(void)
|
||||||
{
|
{
|
||||||
int timeout, interval = 0, blanking = 0, expose = 0;
|
int timeout, interval = 0, blanking = 0, expose = 0;
|
||||||
Eina_Bool changed = EINA_FALSE;
|
Eina_Bool changed = EINA_FALSE;
|
||||||
|
Eina_Bool real_changed = EINA_FALSE;
|
||||||
|
int dim_timeout = -1;
|
||||||
|
E_Powersave_Mode pm = e_powersave_mode_get();
|
||||||
|
|
||||||
|
if (pm > E_POWERSAVE_MODE_LOW)
|
||||||
|
dim_timeout = e_config->backlight.battery_timer;
|
||||||
|
else
|
||||||
|
dim_timeout = e_config->backlight.timer;
|
||||||
|
|
||||||
|
if (_e_screensaver_cfg_timeout != e_config->screensaver_timeout)
|
||||||
|
real_changed = EINA_TRUE;
|
||||||
|
else if (_e_screensaver_cfg_dim != dim_timeout)
|
||||||
|
real_changed = EINA_TRUE;
|
||||||
|
_e_screensaver_cfg_timeout = e_config->screensaver_timeout;
|
||||||
|
_e_screensaver_cfg_dim = dim_timeout;
|
||||||
|
|
||||||
timeout = e_screensaver_timeout_get(EINA_TRUE);
|
timeout = e_screensaver_timeout_get(EINA_TRUE);
|
||||||
if (!((e_config->screensaver_enable) &&
|
if (!((e_config->screensaver_enable) &&
|
||||||
|
@ -131,7 +149,7 @@ e_screensaver_update(void)
|
||||||
// screen doesn't turn off at all because x thinks internally
|
// screen doesn't turn off at all because x thinks internally
|
||||||
// that the monitor is still off... so this is odd, but it's
|
// that the monitor is still off... so this is odd, but it's
|
||||||
// necessary on some hardware.
|
// necessary on some hardware.
|
||||||
if (!e_config->screensaver_dpms_off)
|
if ((real_changed) && (!e_config->screensaver_dpms_off))
|
||||||
{
|
{
|
||||||
ecore_x_dpms_enabled_set(!e_config->screensaver_enable);
|
ecore_x_dpms_enabled_set(!e_config->screensaver_enable);
|
||||||
ecore_x_dpms_enabled_set(e_config->screensaver_enable);
|
ecore_x_dpms_enabled_set(e_config->screensaver_enable);
|
||||||
|
@ -170,7 +188,6 @@ _e_screensaver_suspend_cb(void *data EINA_UNUSED)
|
||||||
static Eina_Bool
|
static Eina_Bool
|
||||||
_e_screensaver_handler_powersave_cb(void *data EINA_UNUSED, int type EINA_UNUSED, void *event EINA_UNUSED)
|
_e_screensaver_handler_powersave_cb(void *data EINA_UNUSED, int type EINA_UNUSED, void *event EINA_UNUSED)
|
||||||
{
|
{
|
||||||
_e_screensaver_timeout = -1;
|
|
||||||
e_screensaver_update();
|
e_screensaver_update();
|
||||||
if ((e_config->screensaver_suspend) && (_e_screensaver_on))
|
if ((e_config->screensaver_suspend) && (_e_screensaver_on))
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue