From: Joonbum Ko Date: Thu, 26 Mar 2020 09:08:15 +0000 (+0900) Subject: Make to operate normally even when tdm_source was unexpectedly destroyed. X-Git-Tag: accepted/tizen/unified/20200409.083548~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F12%2F228912%2F1;p=platform%2Fcore%2Fuifw%2Flibtpl-egl.git Make to operate normally even when tdm_source was unexpectedly destroyed. Change-Id: If3a39100b1922a840a16b1860ff427c532883102 Signed-off-by: Joonbum Ko --- diff --git a/src/tpl_wayland_egl_thread.c b/src/tpl_wayland_egl_thread.c index ceef070..b1c1f4e 100755 --- a/src/tpl_wayland_egl_thread.c +++ b/src/tpl_wayland_egl_thread.c @@ -1868,6 +1868,13 @@ _twe_surface_wait_vblank(twe_wl_surf_source *surf_source) if (!_twe_ctx->tdm_source) { TPL_WARN("tdm_vblank feature is disabled."); + + if (surf_source->vblank) { + tdm_client_vblank_destroy(surf_source->vblank); + surf_source->vblank = NULL; + surf_source->vblank_done = TPL_TRUE; + } + return TPL_ERROR_INVALID_OPERATION; } @@ -1967,7 +1974,8 @@ _twe_thread_wl_vk_surface_commit(twe_wl_surf_source *surf_source, == TPL_DISPLAY_PRESENT_MODE_FIFO_RELAXED || surf_source->swapchain_properties.present_mode == TPL_DISPLAY_PRESENT_MODE_FIFO) { - if (_twe_surface_wait_vblank(surf_source) != TPL_ERROR_NONE) + if ((_twe_ctx->tdm_source || surf_source->vblank) && + _twe_surface_wait_vblank(surf_source) != TPL_ERROR_NONE) TPL_ERR("Failed to set wait vblank"); } @@ -2187,7 +2195,8 @@ _twe_thread_wl_surface_commit(twe_wl_surf_source *surf_source, buf_info->wl_buffer, tbm_surface, tbm_bo_export(tbm_surface_internal_get_bo(tbm_surface, 0))); - if (_twe_surface_wait_vblank(surf_source) != TPL_ERROR_NONE) + if ((_twe_ctx->tdm_source || surf_source->vblank) && + _twe_surface_wait_vblank(surf_source) != TPL_ERROR_NONE) TPL_ERR("Failed to set wait vblank."); @@ -2303,7 +2312,8 @@ _twe_thread_wl_surface_acquire_and_commit(twe_wl_surf_source *surf_source) surf_source->draw_done_buffer = tbm_surface; if (surf_source->vblank_done) { - if (_twe_surface_wait_vblank(surf_source) != TPL_ERROR_NONE) + if ((_twe_ctx->tdm_source || surf_source->vblank) && + _twe_surface_wait_vblank(surf_source) != TPL_ERROR_NONE) TPL_ERR("Failed to set wait vblank"); } break; @@ -2650,6 +2660,7 @@ _twe_thread_wl_surf_source_destroy(void *source) TPL_LOG_T(BACKEND, "[VBLANK FINI] twe_wl_surf_source(%p) vblank(%p)", surf_source, surf_source->vblank); tdm_client_vblank_destroy(surf_source->vblank); + surf_source->vblank = NULL; } surf_source->cb_data = NULL;