This is an automated email from the git hooks/post-receive script.
git pushed a commit to branch master
in repository enlightenment.
View the commit online.
commit 1cb02d3480c7733317b28157cfbeb71678fa6fdf
Author: Carsten Haitzler <[email protected]>
AuthorDate: Thu Feb 16 22:48:43 2023 +0000
dpms - fix cases where screensavwr was off but dpms still on
@fix
---
src/bin/e_comp_x.c | 2 ++
src/bin/e_dpms.c | 23 +++++++++++++++++++----
src/bin/e_dpms.h | 2 ++
src/bin/e_main.c | 1 +
src/bin/e_msgbus.c | 3 +++
src/bin/e_screensaver.c | 8 +++++++-
src/bin/e_screensaver.h | 1 +
7 files changed, 35 insertions(+), 5 deletions(-)
diff --git a/src/bin/e_comp_x.c b/src/bin/e_comp_x.c
index 06abd0b34..818abbe20 100644
--- a/src/bin/e_comp_x.c
+++ b/src/bin/e_comp_x.c
@@ -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;
diff --git a/src/bin/e_dpms.c b/src/bin/e_dpms.c
index c8ad8b873..71ba5f7f0 100644
--- a/src/bin/e_dpms.c
+++ b/src/bin/e_dpms.c
@@ -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;
diff --git a/src/bin/e_dpms.h b/src/bin/e_dpms.h
index fdfed89ab..46b340f66 100644
--- a/src/bin/e_dpms.h
+++ b/src/bin/e_dpms.h
@@ -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
diff --git a/src/bin/e_main.c b/src/bin/e_main.c
index 8368cad71..7d9c7d566 100644
--- a/src/bin/e_main.c
+++ b/src/bin/e_main.c
@@ -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");
diff --git a/src/bin/e_msgbus.c b/src/bin/e_msgbus.c
index f31ac74c0..ed1aa3197 100644
--- a/src/bin/e_msgbus.c
+++ b/src/bin/e_msgbus.c
@@ -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();
}
}
diff --git a/src/bin/e_screensaver.c b/src/bin/e_screensaver.c
index 855049993..98bd77377 100644
--- a/src/bin/e_screensaver.c
+++ b/src/bin/e_screensaver.c
@@ -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)
{
diff --git a/src/bin/e_screensaver.h b/src/bin/e_screensaver.h
index 9db8e7ff3..1ffecc52b 100644
--- a/src/bin/e_screensaver.h
+++ b/src/bin/e_screensaver.h
@@ -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);
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.