int sync_fd = surf_source->sync_info.sync_fd;
tbm_surface_h tbm_surface = surf_source->sync_info.tbm_surface;
- res = _twe_thread_fence_wait_source_attach(surf_source, tbm_surface, sync_fd);
- if (res != TPL_ERROR_NONE) {
- TPL_ERR("Failed to attach source with fence_fd(%d) ret(%d)",
- sync_fd, res);
- surf_source->use_sync_fence = TPL_FALSE;
+ if (surf_source->use_surface_sync) {
+ zwp_linux_surface_synchronization_v1_set_acquire_fence(
+ surf_source->surface_sync, sync_fd);
+ close(sync_fd);
+ } else {
+ ret = _twe_thread_fence_wait_source_attach(surf_source, tbm_surface, sync_fd);
+ if (ret != TPL_ERROR_NONE) {
+ TPL_ERR("Failed to attach source with fence_fd(%d) ret(%d)",
+ sync_fd, ret);
+ surf_source->use_sync_fence = TPL_FALSE;
+ return ret;
+ }
+
+ surf_source->use_sync_fence = TPL_TRUE;
}
surf_source->sync_info.sync_fd = -1;