e_hwc_windows: transfer ownership of acquire_fence fd when fd is set to tdm 56/314256/1
authorChangyeon Lee <cyeon.lee@samsung.com>
Tue, 9 Jul 2024 03:16:01 +0000 (12:16 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Tue, 9 Jul 2024 09:00:45 +0000 (18:00 +0900)
It is better to transfer ownership when fd is set in tdm for fd management.

Change-Id: I67f6bb7781a74cecb3f7c6fabae1edb7677157e4

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

index 8589bb2..1ca8d19 100644 (file)
@@ -2051,7 +2051,11 @@ _e_hwc_window_buffer_set(E_Hwc_Window *hwc_window, tbm_surface_h tsurface,
    if ((hwc_window->ec) && e_hwc_windows_fence_enabled_get(hwc_window->hwc))
      {
         acquire_fence_fd = e_client_explicit_sync_acquire_fence_fd_get(hwc_window->ec);
-        error = tdm_hwc_window_set_acquire_fence(hwc_window->thwc_window, acquire_fence_fd);
+        if (acquire_fence_fd >= 0)
+           error = tdm_hwc_window_set_acquire_fence(hwc_window->thwc_window, dup(acquire_fence_fd));
+        else
+           error = tdm_hwc_window_set_acquire_fence(hwc_window->thwc_window, -1);
+
         EINA_SAFETY_ON_TRUE_RETURN_VAL(error != TDM_ERROR_NONE, EINA_FALSE);
      }
 
index 86d7831..d4a38b9 100644 (file)
@@ -813,10 +813,9 @@ _e_hwc_windows_target_buffer_fetch(E_Hwc *hwc)
           {
              int fence = e_egl_sync_fence_fd_dup(root_target_hwc_window->end_render_sync);
              if (fence >= 0)
-               {
-                  tdm_hwc_set_client_target_acquire_fence(thwc, fence);
-                  close(fence);
-               }
+               tdm_hwc_set_client_target_acquire_fence(thwc, fence);
+             else
+               tdm_hwc_set_client_target_acquire_fence(thwc, -1);
           }
 
         EHWSTRACE("FET {%s} ts:%p state:%s",