forked from enlightenment/enlightenment
dpms - fix cases where screensavwr was off but dpms still on
@fix
This commit is contained in:
parent
a6038af68f
commit
1cb02d3480
|
@ -5326,6 +5326,7 @@ _e_comp_cb_pointer_suspend_resume_done(void *data, Evas_Object *obj, const char
|
|||
e_pointer_grab_set(e_comp->pointer, EINA_FALSE);
|
||||
}
|
||||
e_screensaver_update();
|
||||
e_dpms_force_update();
|
||||
}
|
||||
|
||||
EINTERN Eina_Bool
|
||||
|
@ -5380,6 +5381,7 @@ _e_comp_x_screensaver_off()
|
|||
const char *s;
|
||||
|
||||
e_screensaver_update();
|
||||
e_dpms_force_update();
|
||||
_e_comp_pointer_ungrab();
|
||||
e_pointer_grab_set(e_comp->pointer, EINA_FALSE);
|
||||
if ((!e_comp->pointer) || (!e_comp->pointer->o_ptr)) return ECORE_CALLBACK_RENEW;
|
||||
|
|
|
@ -13,6 +13,7 @@ static unsigned int _e_dpms_timeout_standby = 0;
|
|||
static unsigned int _e_dpms_timeout_suspend = 0;
|
||||
static unsigned int _e_dpms_timeout_off = 0;
|
||||
static int _e_dpms_enabled = EINA_FALSE;
|
||||
E_API Eina_Bool e_dpms_actual = EINA_FALSE;
|
||||
|
||||
#ifdef HAVE_WAYLAND
|
||||
static Eina_List *handlers;
|
||||
|
@ -31,6 +32,7 @@ e_dpms_update(void)
|
|||
enabled = ((e_config->screensaver_enable) &&
|
||||
(!((e_util_fullscreen_any()) &&
|
||||
(e_config->no_dpms_on_fullscreen))));
|
||||
if (e_screensaver_current_timeout_get() == 0) enabled = EINA_FALSE;
|
||||
if (_e_dpms_enabled != enabled)
|
||||
{
|
||||
_e_dpms_enabled = enabled;
|
||||
|
@ -38,9 +40,15 @@ e_dpms_update(void)
|
|||
if (e_comp->comp_type == E_PIXMAP_TYPE_X)
|
||||
{
|
||||
if (!e_config->screensaver_dpms_off)
|
||||
ecore_x_dpms_enabled_set(enabled);
|
||||
{
|
||||
ecore_x_dpms_enabled_set(enabled);
|
||||
e_dpms_actual = enabled;
|
||||
}
|
||||
else
|
||||
ecore_x_dpms_enabled_set(0);
|
||||
{
|
||||
ecore_x_dpms_enabled_set(0);
|
||||
e_dpms_actual = EINA_FALSE;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
@ -83,13 +91,20 @@ e_dpms_force_update(void)
|
|||
int enabled;
|
||||
|
||||
enabled = (e_config->screensaver_enable);
|
||||
if (e_screensaver_current_timeout_get() == 0) enabled = EINA_FALSE;
|
||||
#ifndef HAVE_WAYLAND_ONLY
|
||||
if (e_comp->comp_type == E_PIXMAP_TYPE_X)
|
||||
{
|
||||
if (!e_config->screensaver_dpms_off)
|
||||
ecore_x_dpms_enabled_set(enabled);
|
||||
{
|
||||
ecore_x_dpms_enabled_set(enabled);
|
||||
e_dpms_actual = enabled;
|
||||
}
|
||||
else
|
||||
ecore_x_dpms_enabled_set(0);
|
||||
{
|
||||
ecore_x_dpms_enabled_set(0);
|
||||
e_dpms_actual = EINA_FALSE;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
if (!enabled) return;
|
||||
|
|
|
@ -13,5 +13,7 @@ EINTERN int e_dpms_shutdown(void);
|
|||
E_API void e_dpms_update(void);
|
||||
E_API void e_dpms_force_update(void);
|
||||
|
||||
E_API extern Eina_Bool e_dpms_actual;
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
@ -904,6 +904,7 @@ main(int argc, char **argv)
|
|||
{
|
||||
e_desklock_show_manual(EINA_TRUE);
|
||||
e_screensaver_update();
|
||||
e_dpms_force_update();
|
||||
}
|
||||
|
||||
TS("Efreet Paths");
|
||||
|
|
|
@ -229,6 +229,7 @@ _e_msgbus_screensaver_owner_change_cb(void *data EINA_UNUSED, const char *bus EI
|
|||
{
|
||||
// stop inhibiting SS
|
||||
e_screensaver_update();
|
||||
e_dpms_force_update();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -274,6 +275,7 @@ _e_msgbus_screensaver_inhibit_cb(const Eldbus_Service_Interface *iface EINA_UNUS
|
|||
// start inhibiting SS
|
||||
e_screensaver_deactivate();
|
||||
e_screensaver_update();
|
||||
e_dpms_force_update();
|
||||
}
|
||||
err:
|
||||
return reply;
|
||||
|
@ -327,6 +329,7 @@ e_msgbus_screensaver_inhibit_remove(unsigned int cookie)
|
|||
{
|
||||
// stop inhibiting SS
|
||||
e_screensaver_update();
|
||||
e_dpms_force_update();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -118,7 +118,7 @@ e_screensaver_force_update(void)
|
|||
unsigned int x_standby = 0, x_suspend = 0, x_off = 0;
|
||||
unsigned int standby = 0, suspend = 0, off = 0;
|
||||
|
||||
if (e_config->screensaver_enable != x_dpms)
|
||||
if (e_dpms_actual != x_dpms)
|
||||
{
|
||||
printf("SCRSV: someone else messed with screen dpms!\n");
|
||||
ecore_x_dpms_enabled_set(e_config->screensaver_enable);
|
||||
|
@ -147,6 +147,12 @@ e_screensaver_force_update(void)
|
|||
#endif
|
||||
}
|
||||
|
||||
E_API int
|
||||
e_screensaver_current_timeout_get(void)
|
||||
{
|
||||
return _e_screensaver_timeout_get();
|
||||
}
|
||||
|
||||
E_API void
|
||||
e_screensaver_update(void)
|
||||
{
|
||||
|
|
|
@ -12,6 +12,7 @@ E_API void e_screensaver_unignore(void);
|
|||
E_API Eina_Bool e_screensaver_ignore_get(void);
|
||||
|
||||
E_API void e_screensaver_force_update(void);
|
||||
E_API int e_screensaver_current_timeout_get(void);
|
||||
E_API void e_screensaver_update(void);
|
||||
|
||||
E_API int e_screensaver_timeout_get(Eina_Bool use_idle);
|
||||
|
|
Loading…
Reference in New Issue