raster pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=d961e31436b56fa70f165a8452dab4b3f08922f0

commit d961e31436b56fa70f165a8452dab4b3f08922f0
Author: Carsten Haitzler (Rasterman) <[email protected]>
Date:   Wed Sep 11 10:56:21 2019 +0100

    blanking - special timeout immediately and force dpms todo
    
    make special timeout universal and in all cases. cleaner with better
    power management as we turn off bakclights earlier in some cases etc.
---
 TODO                    |  2 --
 src/bin/e_desklock.c    |  2 ++
 src/bin/e_screensaver.c | 20 ++++++++++++++++----
 3 files changed, 18 insertions(+), 6 deletions(-)

diff --git a/TODO b/TODO
index 3290af17f..331662e9d 100644
--- a/TODO
+++ b/TODO
@@ -77,8 +77,6 @@ TODO:
     * massive lowering of barrier ro create/change scriptlets
     * offer a share mechanism like shots?
       * security issue - they run. verification needed?
-* fix lock screen to force dpms on once it has blanked if special
-  timeout exists
 * keyboard backlight controls, not just screen
 * backlight module/controls should control the screen the gadget is on
   * allow multiple screens to have different backlight controls
diff --git a/src/bin/e_desklock.c b/src/bin/e_desklock.c
index c7dca0eb9..c8a821d53 100644
--- a/src/bin/e_desklock.c
+++ b/src/bin/e_desklock.c
@@ -360,6 +360,7 @@ _desklock_show_internal(Eina_Bool suspend)
    _e_desklock_state = EINA_TRUE;
    e_bindings_disabled_set(1);
    e_screensaver_update();
+   e_dpms_force_update();
    return 1;
 lang_fail:
    if (e_config->desklock_language)
@@ -432,6 +433,7 @@ _desklock_hide_internal(void)
    ecore_event_add(E_EVENT_DESKLOCK, ev, NULL, NULL);
 
    e_screensaver_update();
+   e_dpms_force_update();
 
    if (e_desklock_is_external())
      {
diff --git a/src/bin/e_screensaver.c b/src/bin/e_screensaver.c
index a93105b7b..6aa1142e6 100644
--- a/src/bin/e_screensaver.c
+++ b/src/bin/e_screensaver.c
@@ -51,18 +51,23 @@ E_API int
 e_screensaver_timeout_get(Eina_Bool use_idle)
 {
    int timeout = 0, count = (1 + _e_screensaver_ask_presentation_count);
+   Eina_Bool use_special_instead_of_dim = EINA_FALSE;
 
    if (_screensaver_now) return 1;
    if ((e_config->screensaver_enable) && (!e_config->mode.presentation))
      {
         if ((e_desklock_state_get()) &&
             (e_config->screensaver_desklock_timeout > 0))
-          timeout = e_config->screensaver_desklock_timeout;
+          {
+             timeout = e_config->screensaver_desklock_timeout;
+             use_special_instead_of_dim = EINA_TRUE;
+          }
         else
           timeout = e_config->screensaver_timeout * count;
      }
 
-   if ((use_idle) && (!e_config->mode.presentation))
+   if ((use_idle) && (!e_config->mode.presentation) &&
+       (!use_special_instead_of_dim))
      {
         if (e_config->backlight.idle_dim)
           {
@@ -553,9 +558,15 @@ e_screensaver_now_set(Eina_Bool now)
 E_API void
 e_screensaver_eval(Eina_Bool saver_on)
 {
+   Eina_Bool use_special_instead_of_dim = EINA_FALSE;
+
+   if ((e_desklock_state_get()) &&
+       (e_config->screensaver_desklock_timeout > 0))
+     use_special_instead_of_dim = EINA_TRUE;
    if (saver_on)
      {
-        if (e_config->backlight.idle_dim)
+        if ((e_config->backlight.idle_dim) &&
+            (!use_special_instead_of_dim))
           {
              double t = e_config->screensaver_timeout -
                e_config->backlight.timer;
@@ -588,7 +599,8 @@ e_screensaver_eval(Eina_Bool saver_on)
    if (screensaver_idle_timer)
      {
         E_FREE_FUNC(screensaver_idle_timer, ecore_timer_del);
-        if (e_config->backlight.idle_dim)
+        if ((e_config->backlight.idle_dim) &&
+            (!use_special_instead_of_dim))
           {
              if (e_backlight_mode_get(NULL) != E_BACKLIGHT_MODE_NORMAL)
                e_backlight_mode_set(NULL, E_BACKLIGHT_MODE_NORMAL);

-- 


Reply via email to