e_hwc_window: Fix the bug where the changed is not set 93/316893/1
authorChangyeon Lee <cyeon.lee@samsung.com>
Wed, 18 Dec 2024 12:06:01 +0000 (21:06 +0900)
committerchangyeon lee <cyeon.lee@samsung.com>
Thu, 19 Dec 2024 06:21:44 +0000 (06:21 +0000)
There is a bug where e_hwc_windows_changed_set do not set changed.

1. set E_HWC_WINS_CHANGED_WIN_GEOMETRY
2. set E_HWC_WINS_CHANGED_WIN_BUFFER|E_HWC_WINS_CHANGED_WIN_GEOMETRY
3. E_HWC_WINS_CHANGED_WIN_BUFFER is not set because below condition is true.
   if (hwc_window->changed & changed)

Do not use with e_hwc_window_changed_set with multiple E_Hwc_Wins_Changed.

Change-Id: Id8639b44b52d61e2672a16139b15605a60d179ff

src/bin/displaymgr/e_hwc_window.c
src/bin/displaymgr/e_hwc_windows.c
src/bin/displaymgr/video/e_video_hwc.c

index e1ad172cb3179b1b7975765ef26ac03646601b3e..b56b05c9057dfe77614ca5b47794b0347d02cae4 100644 (file)
@@ -1390,7 +1390,8 @@ _e_hwc_window_cb_update_lock_unset(void *data, E_Client *ec)
    if (!hwc_window) return EINA_TRUE;
 
    e_hwc_window_restriction_unset(hwc_window, E_HWC_WINDOW_RESTRICTION_RENDER_UPDATE_LOCK);
-   e_hwc_window_changed_set(hwc_window, E_HWC_WINS_CHANGED_WIN_BUFFER | E_HWC_WINS_CHANGED_WIN_GEOMETRY);
+   e_hwc_window_changed_set(hwc_window, E_HWC_WINS_CHANGED_WIN_BUFFER);
+   e_hwc_window_changed_set(hwc_window, E_HWC_WINS_CHANGED_WIN_GEOMETRY);
 
    return EINA_TRUE;
 }
@@ -3139,7 +3140,8 @@ e_hwc_window_pending_update_data_dequeue_cancel(E_Hwc_Window *hwc_window, E_Hwc_
    e_comp_wl_buffer_reference(&update->buffer_ref, NULL);
    e_hwc_window_buffer_set(&update->buffer, NULL, NULL, 0);
 
-   e_hwc_window_changed_set(hwc_window, E_HWC_WINS_CHANGED_WIN_BUFFER|E_HWC_WINS_CHANGED_WIN_GEOMETRY);
+   e_hwc_window_changed_set(hwc_window, E_HWC_WINS_CHANGED_WIN_BUFFER);
+   e_hwc_window_changed_set(hwc_window, E_HWC_WINS_CHANGED_WIN_GEOMETRY);
 
    hwc_window->pending_update_list = eina_list_remove(hwc_window->pending_update_list, update);
 
@@ -3176,7 +3178,8 @@ e_hwc_window_pending_update_data_enqueue(E_Hwc_Window *hwc_window, E_Hwc_Window_
    e_comp_wl_buffer_reference(&update->buffer_ref, NULL);
    e_hwc_window_buffer_set(&update->buffer, NULL, NULL, 0);
 
-   e_hwc_window_changed_set(hwc_window, E_HWC_WINS_CHANGED_WIN_BUFFER|E_HWC_WINS_CHANGED_WIN_GEOMETRY);
+   e_hwc_window_changed_set(hwc_window, E_HWC_WINS_CHANGED_WIN_BUFFER);
+   e_hwc_window_changed_set(hwc_window, E_HWC_WINS_CHANGED_WIN_GEOMETRY);
 
    hwc_window->pending_update_list = eina_list_remove(hwc_window->pending_update_list, update);
 
index 7559a8c545497ca735873a8f5d53644d3f62f945..43feb18b2f979747b78e5d7b9763ef42468a0e9e 100644 (file)
@@ -1109,7 +1109,8 @@ _e_hwc_windows_pending_update_data_clear(E_Hwc_Window_Target *root_target_hwc_wi
         EINA_LIST_FREE(target_hwc_window->present_sync_windows, hwc_window)
           {
              hwc_window->present_sync = EINA_FALSE;
-             e_hwc_window_changed_set(hwc_window, E_HWC_WINS_CHANGED_WIN_BUFFER|E_HWC_WINS_CHANGED_WIN_GEOMETRY);
+             e_hwc_window_changed_set(hwc_window, E_HWC_WINS_CHANGED_WIN_BUFFER);
+             e_hwc_window_changed_set(hwc_window, E_HWC_WINS_CHANGED_WIN_GEOMETRY);
              e_object_unref(E_OBJECT(hwc_window));
           }
      }
index c3b37276e4172b8b3db53fcca4adc9ddb229cc83..c60f4cb77158b36477b7bccfd23b0a29659ea385 100644 (file)
@@ -367,7 +367,8 @@ _e_video_hwc_buffer_commit(E_Video_Hwc *evh, E_Comp_Wl_Video_Buf *vbuf)
    if (!_e_video_hwc_commit_data_set(evh, vbuf))
      return EINA_FALSE;
 
-   e_hwc_window_changed_set(evh->hwc_window, E_HWC_WINS_CHANGED_WIN_GEOMETRY|E_HWC_WINS_CHANGED_WIN_BUFFER);
+   e_hwc_window_changed_set(evh->hwc_window, E_HWC_WINS_CHANGED_WIN_BUFFER);
+   e_hwc_window_changed_set(evh->hwc_window, E_HWC_WINS_CHANGED_WIN_GEOMETRY);
 
    _e_video_hwc_mask_update(evh);