e_client: Add ignore_geometry property to E_Client to ignore geometry calc when vis... 22/284722/1
authorJunseok Kim <juns.kim@samsung.com>
Thu, 27 Oct 2022 06:03:02 +0000 (15:03 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Thu, 24 Nov 2022 07:53:07 +0000 (16:53 +0900)
Ignore_geometry is property for ignore geometry calculation during calculate visibility after once the window show and the property set.
The window that set visibility.ignore_geometry always retain unobscured even if the window is stack in lowest after client attach buffer that not NULL.
It makes the client to do something their jobs under other client window.

Change-Id: Idce08255223d451cbd39b09166849a45cc9586c3

src/bin/e_client.c
src/bin/e_client.h

index 7bef04a..6b0dff1 100644 (file)
@@ -3714,6 +3714,13 @@ _e_client_visibility_zone_calculate(E_Zone *zone)
                }
           }
 
+        if (ec->visibility.ignore_geometry)
+          {
+             calc_region = EINA_FALSE;
+             if (!is_display_off && ec_frame_visible)
+               ec_vis = EINA_TRUE;
+          }
+
         if (canvas_vis)
           {
              if (calc_region &&
@@ -3746,13 +3753,13 @@ _e_client_visibility_zone_calculate(E_Zone *zone)
                        /* previous state is obscured: -1 or 1 */
                        ec->visibility.obscured = E_VISIBILITY_UNOBSCURED;
                        ec->visibility.changed = 1;
-                       ELOGF("POL_VIS", "CLIENT VIS ON.  argb:%d, opaque:%2d, frame_v:%d, cdata:%p, geo(%d,%d,%dx%d)", ec, ec->argb, ec->visibility.opaque, ec_frame_visible, cdata, x, y, w, h);
+                       ELOGF("POL_VIS", "CLIENT VIS ON.  argb:%d, opaque:%2d, frame_v:%d, ignore_geometry:%d, cdata:%p, geo(%d,%d,%dx%d)", ec, ec->argb, ec->visibility.opaque, ec_frame_visible, ec->visibility.ignore_geometry, cdata, x, y, w, h);
                     }
                   else
                     {
                        if (!is_above_show_pending)
                          is_vis_on_skip = EINA_TRUE;
-                       ELOGF("POL_VIS", "CLIENT VIS ON-SKIP. argb:%d, opaque:%2d, frame_v:%d, cdata:%p, geo(%d,%d,%dx%d)", ec, ec->argb, ec->visibility.opaque, ec_frame_visible, cdata, x, y, w, h);
+                       ELOGF("POL_VIS", "CLIENT VIS ON-SKIP. argb:%d, opaque:%2d, frame_v:%d, ignore_geometry:%d, cdata:%p, geo(%d,%d,%dx%d)", ec, ec->argb, ec->visibility.opaque, ec_frame_visible, ec->visibility.ignore_geometry, cdata, x, y, w, h);
                     }
                }
 
@@ -3797,9 +3804,9 @@ _e_client_visibility_zone_calculate(E_Zone *zone)
                        /* previous state is unobscured: -1 or 0 */
                        ec->visibility.obscured = E_VISIBILITY_FULLY_OBSCURED;
                        ec->visibility.changed = 1;
-                       ELOGF("POL_VIS", "CLIENT VIS OFF. argb:%d, opaque:%2d, frame_v:%d, canvas_v:%d, calc_r:%d(%d), show_p:%d, geo(%d,%d,%dx%d)",
+                       ELOGF("POL_VIS", "CLIENT VIS OFF. argb:%d, opaque:%2d, frame_v:%d, canvas_v:%d, calc_r:%d(%d), ignore_geometry:%d, show_p:%d, geo(%d,%d,%dx%d)",
                              ec, ec->argb, ec->visibility.opaque,
-                             ec_frame_visible, canvas_vis, calc_region, calc_skip_type, skip_by_pending_show, x, y, w, h);
+                             ec_frame_visible, canvas_vis, calc_region, calc_skip_type, ec->visibility.ignore_geometry, skip_by_pending_show, x, y, w, h);
                     }
                }
           }
index 0a881e3..5bdb33e 100644 (file)
@@ -752,6 +752,7 @@ struct E_Client
       Eina_Bool skip : 1;
       Eina_Bool force_obscured : 1;
       int last_sent_type;
+      Eina_Bool ignore_geometry : 1;
    } visibility;
 
    struct