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_pointer_grab_set(e_comp->pointer, EINA_FALSE);
|
||||||
}
|
}
|
||||||
e_screensaver_update();
|
e_screensaver_update();
|
||||||
|
e_dpms_force_update();
|
||||||
}
|
}
|
||||||
|
|
||||||
EINTERN Eina_Bool
|
EINTERN Eina_Bool
|
||||||
|
@ -5380,6 +5381,7 @@ _e_comp_x_screensaver_off()
|
||||||
const char *s;
|
const char *s;
|
||||||
|
|
||||||
e_screensaver_update();
|
e_screensaver_update();
|
||||||
|
e_dpms_force_update();
|
||||||
_e_comp_pointer_ungrab();
|
_e_comp_pointer_ungrab();
|
||||||
e_pointer_grab_set(e_comp->pointer, EINA_FALSE);
|
e_pointer_grab_set(e_comp->pointer, EINA_FALSE);
|
||||||
if ((!e_comp->pointer) || (!e_comp->pointer->o_ptr)) return ECORE_CALLBACK_RENEW;
|
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_suspend = 0;
|
||||||
static unsigned int _e_dpms_timeout_off = 0;
|
static unsigned int _e_dpms_timeout_off = 0;
|
||||||
static int _e_dpms_enabled = EINA_FALSE;
|
static int _e_dpms_enabled = EINA_FALSE;
|
||||||
|
E_API Eina_Bool e_dpms_actual = EINA_FALSE;
|
||||||
|
|
||||||
#ifdef HAVE_WAYLAND
|
#ifdef HAVE_WAYLAND
|
||||||
static Eina_List *handlers;
|
static Eina_List *handlers;
|
||||||
|
@ -31,6 +32,7 @@ e_dpms_update(void)
|
||||||
enabled = ((e_config->screensaver_enable) &&
|
enabled = ((e_config->screensaver_enable) &&
|
||||||
(!((e_util_fullscreen_any()) &&
|
(!((e_util_fullscreen_any()) &&
|
||||||
(e_config->no_dpms_on_fullscreen))));
|
(e_config->no_dpms_on_fullscreen))));
|
||||||
|
if (e_screensaver_current_timeout_get() == 0) enabled = EINA_FALSE;
|
||||||
if (_e_dpms_enabled != enabled)
|
if (_e_dpms_enabled != enabled)
|
||||||
{
|
{
|
||||||
_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_comp->comp_type == E_PIXMAP_TYPE_X)
|
||||||
{
|
{
|
||||||
if (!e_config->screensaver_dpms_off)
|
if (!e_config->screensaver_dpms_off)
|
||||||
ecore_x_dpms_enabled_set(enabled);
|
{
|
||||||
|
ecore_x_dpms_enabled_set(enabled);
|
||||||
|
e_dpms_actual = enabled;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
ecore_x_dpms_enabled_set(0);
|
{
|
||||||
|
ecore_x_dpms_enabled_set(0);
|
||||||
|
e_dpms_actual = EINA_FALSE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -83,13 +91,20 @@ e_dpms_force_update(void)
|
||||||
int enabled;
|
int enabled;
|
||||||
|
|
||||||
enabled = (e_config->screensaver_enable);
|
enabled = (e_config->screensaver_enable);
|
||||||
|
if (e_screensaver_current_timeout_get() == 0) enabled = EINA_FALSE;
|
||||||
#ifndef HAVE_WAYLAND_ONLY
|
#ifndef HAVE_WAYLAND_ONLY
|
||||||
if (e_comp->comp_type == E_PIXMAP_TYPE_X)
|
if (e_comp->comp_type == E_PIXMAP_TYPE_X)
|
||||||
{
|
{
|
||||||
if (!e_config->screensaver_dpms_off)
|
if (!e_config->screensaver_dpms_off)
|
||||||
ecore_x_dpms_enabled_set(enabled);
|
{
|
||||||
|
ecore_x_dpms_enabled_set(enabled);
|
||||||
|
e_dpms_actual = enabled;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
ecore_x_dpms_enabled_set(0);
|
{
|
||||||
|
ecore_x_dpms_enabled_set(0);
|
||||||
|
e_dpms_actual = EINA_FALSE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
if (!enabled) return;
|
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_update(void);
|
||||||
E_API void e_dpms_force_update(void);
|
E_API void e_dpms_force_update(void);
|
||||||
|
|
||||||
|
E_API extern Eina_Bool e_dpms_actual;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -904,6 +904,7 @@ main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
e_desklock_show_manual(EINA_TRUE);
|
e_desklock_show_manual(EINA_TRUE);
|
||||||
e_screensaver_update();
|
e_screensaver_update();
|
||||||
|
e_dpms_force_update();
|
||||||
}
|
}
|
||||||
|
|
||||||
TS("Efreet Paths");
|
TS("Efreet Paths");
|
||||||
|
|
|
@ -229,6 +229,7 @@ _e_msgbus_screensaver_owner_change_cb(void *data EINA_UNUSED, const char *bus EI
|
||||||
{
|
{
|
||||||
// stop inhibiting SS
|
// stop inhibiting SS
|
||||||
e_screensaver_update();
|
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
|
// start inhibiting SS
|
||||||
e_screensaver_deactivate();
|
e_screensaver_deactivate();
|
||||||
e_screensaver_update();
|
e_screensaver_update();
|
||||||
|
e_dpms_force_update();
|
||||||
}
|
}
|
||||||
err:
|
err:
|
||||||
return reply;
|
return reply;
|
||||||
|
@ -327,6 +329,7 @@ e_msgbus_screensaver_inhibit_remove(unsigned int cookie)
|
||||||
{
|
{
|
||||||
// stop inhibiting SS
|
// stop inhibiting SS
|
||||||
e_screensaver_update();
|
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 x_standby = 0, x_suspend = 0, x_off = 0;
|
||||||
unsigned int standby = 0, suspend = 0, 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");
|
printf("SCRSV: someone else messed with screen dpms!\n");
|
||||||
ecore_x_dpms_enabled_set(e_config->screensaver_enable);
|
ecore_x_dpms_enabled_set(e_config->screensaver_enable);
|
||||||
|
@ -147,6 +147,12 @@ e_screensaver_force_update(void)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
E_API int
|
||||||
|
e_screensaver_current_timeout_get(void)
|
||||||
|
{
|
||||||
|
return _e_screensaver_timeout_get();
|
||||||
|
}
|
||||||
|
|
||||||
E_API void
|
E_API void
|
||||||
e_screensaver_update(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 Eina_Bool e_screensaver_ignore_get(void);
|
||||||
|
|
||||||
E_API void e_screensaver_force_update(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 void e_screensaver_update(void);
|
||||||
|
|
||||||
E_API int e_screensaver_timeout_get(Eina_Bool use_idle);
|
E_API int e_screensaver_timeout_get(Eina_Bool use_idle);
|
||||||
|
|
Loading…
Reference in New Issue