From: Hoyub Lee Date: Wed, 13 Dec 2017 03:08:51 +0000 (+0900) Subject: tpl_wayland_egl_thread: Add necessity check for buffer release X-Git-Tag: submit/tizen/20180104.042406~27 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=29ea8ad6fbd8d2212dafc29077a6869f01ce2da5;p=platform%2Fcore%2Fuifw%2Flibtpl-egl.git tpl_wayland_egl_thread: Add necessity check for buffer release On buffer release cb, there was no checking mechanism to check if this buffer needs to be released or not. This patch will add checking if this buffer has to be released or not. Therefore, unnecessary buffer release cb will be detected and handled correctly. Change-Id: I51b9d614da44fac4919539749612ca024b56aa9a Signed-off-by: Hoyub Lee --- diff --git a/src/tpl_wayland_egl_thread.c b/src/tpl_wayland_egl_thread.c index 4db6a8c..e8bf76b 100644 --- a/src/tpl_wayland_egl_thread.c +++ b/src/tpl_wayland_egl_thread.c @@ -135,6 +135,9 @@ struct _twe_wl_buffer_info { int *rects; tpl_bool_t need_to_commit; + /* for checking need release */ + tpl_bool_t need_to_release; + /* for checking draw done */ tpl_bool_t draw_done; tbm_fd draw_done_fence; @@ -1292,7 +1295,7 @@ __cb_buffer_release_callback(void *data, struct wl_proxy *wl_buffer) if (tbm_surface_internal_is_valid(tbm_surface)) { tbm_surface_internal_get_user_data(tbm_surface, KEY_BUFFER_INFO, (void **)&buf_info); - if (buf_info) { + if (buf_info && buf_info->need_to_release) { twe_wl_surf_source *surf_source = buf_info->surf_source; tbm_surface_queue_error_e tsq_err; @@ -1311,6 +1314,8 @@ __cb_buffer_release_callback(void *data, struct wl_proxy *wl_buffer) TPL_OBJECT_UNLOCK(&surf_source->obj); } + buf_info->need_to_release = TPL_FALSE; + TRACE_ASYNC_END((int)tbm_surface, "[COMMIT ~ RELEASE] BO(%d)", tbm_bo_export(tbm_surface_internal_get_bo( tbm_surface, 0))); @@ -1806,6 +1811,7 @@ _twe_thread_wl_surface_commit(twe_wl_surf_source *surf_source, tbm_bo_export(tbm_surface_internal_get_bo(tbm_surface, 0))); buf_info->need_to_commit = TPL_FALSE; + buf_info->need_to_release = TPL_TRUE; TPL_LOG_T(BACKEND, "[COMMIT] wl_buffer(%p) tbm_surface(%p) bo(%d)", buf_info->wl_buffer, tbm_surface,