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 cb2bc1d1c186b85dd3478477080535f5d29a7b3d
Author: Carsten Haitzler <[email protected]>
AuthorDate: Fri Feb 10 22:21:54 2023 +0000

    desklock - use immediate show for lock on suspend etc.
    
    makes lock more correct and not fade in on lock on suspend
    
    @feat
---
 src/bin/e_comp_wl.c             |  2 +-
 src/bin/e_desklock.c            | 10 ++++----
 src/bin/e_desklock.h            |  2 +-
 src/modules/lokker/e_mod_main.h |  2 +-
 src/modules/lokker/lokker.c     | 55 ++++++++++++++++++++++++++++++++---------
 5 files changed, 52 insertions(+), 19 deletions(-)

diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c
index 4e38d4820..14427dafb 100644
--- a/src/bin/e_comp_wl.c
+++ b/src/bin/e_comp_wl.c
@@ -2881,7 +2881,7 @@ disp_err:
 }
 
 static Eina_Bool
-_e_comp_wl_desklock_show(void)
+_e_comp_wl_desklock_show(Eina_Bool immediate EINA_UNUSED)
 {
    return e_comp_grab_input(1, 1);
 }
diff --git a/src/bin/e_desklock.c b/src/bin/e_desklock.c
index c55846d55..be68f8290 100644
--- a/src/bin/e_desklock.c
+++ b/src/bin/e_desklock.c
@@ -124,7 +124,7 @@ e_desklock_interface_append(E_Desklock_Interface *iface)
      desklock_ifaces = eina_list_append(desklock_ifaces, (void*)iface);
    if (_e_desklock_state && (!current_iface))
      {
-        if (iface->show())
+        if (iface->show(EINA_TRUE))
           {
              iface->active = EINA_TRUE;
              current_iface = iface;
@@ -155,7 +155,7 @@ e_desklock_interface_remove(E_Desklock_Interface *iface)
    /* then try to find a replacement locker */
    EINA_LIST_REVERSE_FOREACH(desklock_ifaces, l, diface)
      {
-        if (!diface->show()) continue;
+        if (!diface->show(EINA_TRUE)) continue;
         diface->active = EINA_TRUE;
         current_iface = diface;
         break;
@@ -209,7 +209,7 @@ e_desklock_demo(void)
 
    EINA_LIST_REVERSE_FOREACH(desklock_ifaces, l, iface)
      {
-        if (iface->show())
+        if (iface->show(EINA_FALSE))
           {
              demo = iface->active = EINA_TRUE;
              current_iface = iface;
@@ -254,7 +254,7 @@ _desklock_show_internal(Eina_Bool suspend)
    e_menu_hide_all();
    EINA_LIST_FOREACH(show_hooks, l, show_cb)
      {
-        if (!show_cb()) goto fail;
+        if (!show_cb(suspend)) goto fail;
      }
 
    EINA_LIST_FOREACH(e_comp->zones, l, zone)
@@ -295,7 +295,7 @@ _desklock_show_internal(Eina_Bool suspend)
 
       EINA_LIST_REVERSE_FOREACH(desklock_ifaces, l, iface)
         {
-           success = iface->show();
+           success = iface->show(suspend);
            if (success)
              {
                 iface->active = EINA_TRUE;
diff --git a/src/bin/e_desklock.h b/src/bin/e_desklock.h
index fead91410..808a85b54 100644
--- a/src/bin/e_desklock.h
+++ b/src/bin/e_desklock.h
@@ -1,7 +1,7 @@
 #ifdef E_TYPEDEFS
 
 typedef struct _E_Event_Desklock E_Event_Desklock;
-typedef Eina_Bool (*E_Desklock_Show_Cb)(void);
+typedef Eina_Bool (*E_Desklock_Show_Cb)(Eina_Bool immediate);
 typedef void (*E_Desklock_Hide_Cb)(void);
 
 typedef enum _E_Desklock_Background_Method {
diff --git a/src/modules/lokker/e_mod_main.h b/src/modules/lokker/e_mod_main.h
index 68832c0c6..8774d8fa7 100644
--- a/src/modules/lokker/e_mod_main.h
+++ b/src/modules/lokker/e_mod_main.h
@@ -24,7 +24,7 @@ typedef enum
    E_DESKLOCK_AUTH_METHOD_LINES = 4,
 } E_Desklock_Auth_Method2;
 
-EINTERN Eina_Bool lokker_lock(void);
+EINTERN Eina_Bool lokker_lock(Eina_Bool immediate);
 EINTERN void lokker_unlock(void);
 E_API E_Config_Dialog *e_int_config_lokker(Evas_Object *parent, const char *params EINA_UNUSED);
 EINTERN Eina_Bool lokker_key_down(Ecore_Event_Key*);
diff --git a/src/modules/lokker/lokker.c b/src/modules/lokker/lokker.c
index 91ad1cda0..1dff0d610 100644
--- a/src/modules/lokker/lokker.c
+++ b/src/modules/lokker/lokker.c
@@ -343,7 +343,7 @@ _lokker_cb_show_done(void *data, Evas_Object *obj EINA_UNUSED, const char *sig E
 }
 
 static void
-_lokker_popup_add(E_Zone *zone)
+_lokker_popup_add(E_Zone *zone, Eina_Bool immediate)
 {
    E_Zone *current_zone;
    Evas_Object *o = NULL;
@@ -353,6 +353,7 @@ _lokker_popup_add(E_Zone *zone)
    Eina_Stringshare *bg;
    Evas *evas;
    int nocreate = 0;
+   Eina_Bool is_edje = EINA_FALSE;
 
    lp = E_NEW(Lokker_Popup, 1);
    cbg = eina_list_nth(e_config->desklock_backgrounds, zone->num);
@@ -366,6 +367,7 @@ _lokker_popup_add(E_Zone *zone)
      {
         o = edje_object_add(evas);
         evas_object_data_set(o, "is_edje", o);
+        is_edje = EINA_TRUE;
         e_theme_edje_object_set(o, "base/theme/desklock",
                                 "e/desklock/background");
      }
@@ -373,6 +375,7 @@ _lokker_popup_add(E_Zone *zone)
      {
         o = edje_object_add(evas);
         evas_object_data_set(o, "is_edje", o);
+        is_edje = EINA_TRUE;
         e_theme_edje_object_set(o, "base/theme/backgrounds",
                                 "e/desktop/background");
      }
@@ -389,6 +392,7 @@ _lokker_popup_add(E_Zone *zone)
           {
              o = edje_object_add(evas);
              evas_object_data_set(o, "is_edje", o);
+             is_edje = EINA_TRUE;
              if (e_util_edje_collection_exists(f, "e/desklock/background"))
                {
                   edje_object_file_set(o, f, "e/desklock/background");
@@ -426,15 +430,25 @@ _lokker_popup_add(E_Zone *zone)
    evas_object_move(lp->bg_object, zone->x, zone->y);
    evas_object_resize(lp->bg_object, zone->w, zone->h);
    evas_object_show(lp->bg_object);
+   if (is_edje)
      {
         const char *s = edje_object_data_get(lp->bg_object, "show_signal");
-        lp->show_anim = s && (atoi(s) == 1);
-        e_desklock_zone_block_set(zone, !lp->show_anim);
-        if ((lp->show_anim) &&
-            (evas_object_data_get(lp->bg_object, "is_edje")))
-          edje_object_signal_callback_add(lp->bg_object,
-                                          "e,action,show,done", "e",
-                                          _lokker_cb_show_done, lp);
+
+        if (immediate)
+          {
+             edje_object_signal_emit(lp->bg_object,
+                                     "e,action,show,immediate", "e");
+          }
+        else
+          {
+             s = edje_object_data_get(lp->bg_object, "show_signal");
+             lp->show_anim = s && (atoi(s) == 1);
+             e_desklock_zone_block_set(zone, !lp->show_anim);
+             if (lp->show_anim)
+               edje_object_signal_callback_add(lp->bg_object,
+                                               "e,action,show,done", "e",
+                                               _lokker_cb_show_done, lp);
+          }
         s = edje_object_data_get(lp->bg_object, "hide_signal");
         lp->hide_anim = s && (atoi(s) == 1);
      }
@@ -494,6 +508,18 @@ _lokker_popup_add(E_Zone *zone)
    edd->elock_wnd_list = eina_list_append(edd->elock_wnd_list, lp);
 }
 
+static void
+_lokker_popup_add_normal(E_Zone *zone)
+{
+   _lokker_popup_add(zone, EINA_FALSE);
+}
+
+static void
+_lokker_popup_add_immediate(E_Zone *zone)
+{
+   _lokker_popup_add(zone, EINA_TRUE);
+}
+
 static void
 _lokker_cb_hide_done(void *data, Evas_Object *obj, const char *sig EINA_UNUSED, const char *src EINA_UNUSED)
 {
@@ -627,7 +653,7 @@ _lokker_cb_zone_add(void *data EINA_UNUSED,
    if (!edd) return ECORE_CALLBACK_PASS_ON;
    if ((!edd->move_handler) && (e_config->desklock_login_box_zone == -2))
      edd->move_handler = ecore_event_handler_add(ECORE_EVENT_MOUSE_MOVE, _lokker_cb_mouse_move, NULL);
-   if (!_lokker_popup_find(ev->zone)) _lokker_popup_add(ev->zone);
+   if (!_lokker_popup_find(ev->zone)) _lokker_popup_add_immediate(ev->zone);
    return ECORE_CALLBACK_PASS_ON;
 }
 
@@ -900,7 +926,7 @@ lokker_key_down(Ecore_Event_Key *ev)
 }
 
 EINTERN Eina_Bool
-lokker_lock(void)
+lokker_lock(Eina_Bool immediate)
 {
    int total_zone_num = 0;
 
@@ -921,7 +947,14 @@ lokker_lock(void)
 #endif
 
    e_pointer_type_push(e_comp->pointer, edd, "default");
-   E_LIST_FOREACH(e_comp->zones, _lokker_popup_add);
+   if (immediate)
+     {
+        E_LIST_FOREACH(e_comp->zones, _lokker_popup_add_immediate);
+     }
+   else
+     {
+        E_LIST_FOREACH(e_comp->zones, _lokker_popup_add_normal);
+     }
    total_zone_num = eina_list_count(e_comp->zones);
 
    /* handlers */

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.

Reply via email to