e_hwc_window: add e_hwc_window_never_hwc_set 00/306000/3
authorChangyeon Lee <cyeon.lee@samsung.com>
Thu, 18 Jan 2024 03:18:28 +0000 (12:18 +0900)
committerchangyeon lee <cyeon.lee@samsung.com>
Mon, 19 Feb 2024 05:50:53 +0000 (05:50 +0000)
Change-Id: Idbcd02832c470fe9dcfd0513293e95876f08a1a0

src/bin/e_hwc_window.c
src/bin/e_hwc_window.h
src/bin/e_policy_wl.c

index 3517297..a83c6f3 100644 (file)
@@ -3350,3 +3350,15 @@ e_hwc_window_comp_override_set(E_Hwc_Window *hwc_window, Eina_Bool set)
 
    return EINA_TRUE;
 }
+
+EINTERN Eina_Bool
+e_hwc_window_never_hwc_set(E_Hwc_Window *hwc_window, Eina_Bool set)
+{
+   EINA_SAFETY_ON_NULL_RETURN_VAL(hwc_window, EINA_FALSE);
+
+   if (hwc_window->never_hwc == set) return EINA_TRUE;
+
+   hwc_window->never_hwc = set;
+
+   return EINA_TRUE;
+}
\ No newline at end of file
index 2d86189..f8b39a3 100644 (file)
@@ -150,6 +150,7 @@ struct _E_Hwc_Window
    Eina_Bool                      queue_unset_waiting;
 
    Eina_Bool                      comp_override;
+   Eina_Bool                      never_hwc;
 };
 
 struct _E_Hwc_Window_Target
@@ -257,6 +258,7 @@ EINTERN Eina_Bool                 e_hwc_window_presentation_callback_call(E_Hwc_
 EINTERN void                      e_hwc_window_below_transparent_obj_set(E_Hwc_Window *hwc_window, Eina_Bool set);
 
 EINTERN Eina_Bool                 e_hwc_window_comp_override_set(E_Hwc_Window *hwc_window, Eina_Bool set);
+EINTERN Eina_Bool                 e_hwc_window_never_hwc_set(E_Hwc_Window *hwc_window, Eina_Bool set);
 
 #endif // E_HWC_WINDOW_H
 #endif
index b3361eb..554f0e6 100644 (file)
@@ -2571,9 +2571,17 @@ _e_policy_wl_aux_hint_apply(E_Client *ec)
         else if (!strcmp(hint->hint, hint_names[E_COMP_HINT_ALWAYS_SELECTIVE]))
           {
              if ((hint->deleted) || (!strcmp(hint->val, "0")))
-               cdata->never_hwc = EINA_FALSE;
+               {
+                  cdata->never_hwc = EINA_FALSE;
+                  if (ec->hwc_window)
+                    e_hwc_window_never_hwc_set(ec->hwc_window, EINA_FALSE);
+               }
              else if (!strcmp(hint->val, "1"))
-               cdata->never_hwc = EINA_TRUE;
+               {
+                  cdata->never_hwc = EINA_TRUE;
+                  if (ec->hwc_window)
+                    e_hwc_window_never_hwc_set(ec->hwc_window, EINA_TRUE);
+               }
 
              e_comp_render_queue();
           }