e_client: Add ignore_geometry property to E_Client to ignore geometry calc when vis... 25/284725/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:09 +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 7bef04a865190ae5693193ea10c5d6c0e9d79096..6b0dff1ad61afeb6ea84a2f1db6d323037a56482 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 0a881e34dc054f5505b01d25507948688922783c..5bdb33eb428d5fe70f76df8925cd458644f6ed7f 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