e_hwc_window: reset constraint even if state is client or none in client_type_override 69/310169/1
authorChangyeon Lee <cyeon.lee@samsung.com>
Tue, 23 Apr 2024 08:36:29 +0000 (17:36 +0900)
committerchangyeon lee <cyeon.lee@samsung.com>
Tue, 23 Apr 2024 10:12:30 +0000 (10:12 +0000)
if queue of window is set but state is client or none,
queue of window is not unset.
this patch for unsetting queue of window in above case.

Change-Id: I9b3b4f582ee21e457bb553ef6ad595ab4013dee0

src/bin/e_hwc_window.c

index b77d5d584f8db138300d6199b4a2304166305d9c..6614041a4ce1f0d6409267055a63672c85091cee 100644 (file)
@@ -256,22 +256,20 @@ _e_hwc_window_buffer_queue_set(E_Hwc_Window *hwc_window)
 static void
 _e_hwc_window_buffer_queue_unset(E_Hwc_Window *hwc_window)
 {
-   /* reset the TDM_HWC_WIN_CONSTRAINT_BUFFER_QUEUE */
-   if (hwc_window->queue)
-     {
-        e_hwc_window_queue_user_unset(hwc_window->queue, hwc_window);
+   if (!hwc_window->queue) return;
 
-        if (hwc_window->queue_destroy_listener.notify)
-          {
-             wl_list_remove(&hwc_window->queue_destroy_listener.link);
-             hwc_window->queue_destroy_listener.notify = NULL;
-          }
+   e_hwc_window_queue_user_unset(hwc_window->queue, hwc_window);
 
-        hwc_window->queue = NULL;
+   if (hwc_window->queue_destroy_listener.notify)
+     {
+        wl_list_remove(&hwc_window->queue_destroy_listener.link);
+        hwc_window->queue_destroy_listener.notify = NULL;
      }
 
-    EHWTRACE("Unset constraints BUFFER_QUEUE - {%s}",
-              hwc_window->ec, hwc_window->hwc, hwc_window, e_client_util_name_get(hwc_window->ec));
+   hwc_window->queue = NULL;
+
+   EHWTRACE("Unset constraints BUFFER_QUEUE - {%s}",
+            hwc_window->ec, hwc_window->hwc, hwc_window, e_client_util_name_get(hwc_window->ec));
 }
 
 EINTERN void
@@ -281,6 +279,9 @@ e_hwc_window_constraints_reset(E_Hwc_Window *hwc_window)
 
    _e_hwc_window_buffer_queue_unset(hwc_window);
 
+   if (hwc_window->constraints == TDM_HWC_WIN_CONSTRAINT_NONE)
+     return;
+
    hwc_window->constraints = TDM_HWC_WIN_CONSTRAINT_NONE;
 
    EHWTRACE("Reset constraints - {%s}",
@@ -2745,6 +2746,8 @@ e_hwc_window_client_type_override(E_Hwc_Window *hwc_window)
    if (hwc_window->is_target) return;
    if (hwc_window->is_video) return;
 
+   e_hwc_window_constraints_reset(hwc_window);
+
    if ((hwc_window->state == E_HWC_WINDOW_STATE_CLIENT) ||
        (hwc_window->state == E_HWC_WINDOW_STATE_VIDEO) ||
        (hwc_window->state == E_HWC_WINDOW_STATE_NONE))
@@ -2754,7 +2757,6 @@ e_hwc_window_client_type_override(E_Hwc_Window *hwc_window)
      return;
 
    e_hwc_window_state_set(hwc_window, E_HWC_WINDOW_STATE_CLIENT, EINA_TRUE);
-   e_hwc_window_constraints_reset(hwc_window);
    e_hwc_window_rendered_window_update(hwc_window);
 
    EHWTRACE("set client override", hwc_window->ec, hwc_window->hwc, hwc_window);