From: joonbum.ko Date: Thu, 30 Nov 2017 11:20:55 +0000 (+0900) Subject: tpl_wayland_egl_thread: Add tbm_surface_queue_release on buffer flush cb X-Git-Tag: accepted/tizen/unified/20171206.063114~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=926dae9c7a6f548fe5abc0435e9fc75d22a456a9;p=platform%2Fcore%2Fuifw%2Flibtpl-egl.git tpl_wayland_egl_thread: Add tbm_surface_queue_release on buffer flush cb This patch fixes the case that unnecessary buffer release cb is called after buffer flush. Change-Id: Iaa2023ecb6d990815e89b63a48f6709e694bbaeb Signed-off-by: joonbum.ko --- diff --git a/src/tpl_wayland_egl_thread.c b/src/tpl_wayland_egl_thread.c index 07b2d35..4db6a8c 100644 --- a/src/tpl_wayland_egl_thread.c +++ b/src/tpl_wayland_egl_thread.c @@ -1193,6 +1193,20 @@ static void __cb_tss_flusher_flush_callback(void *data, TPL_OBJECT_LOCK(&surf_source->obj); __tpl_list_fini(surf_source->committed_buffers, (tpl_free_func_t)__cb_buffer_remove_from_list); + while (!__tpl_list_is_empty(surf_source->committed_buffers)) { + tbm_surface_queue_error_e tsq_err = TBM_SURFACE_QUEUE_ERROR_NONE; + tbm_surface_h tbm_surface = + __tpl_list_pop_front(surf_source->committed_buffers, + (tpl_free_func_t)__cb_buffer_remove_from_list); + + TRACE_ASYNC_END((int)tbm_surface, "[COMMIT ~ RELEASE] BO(%d)", + tbm_bo_export(tbm_surface_internal_get_bo( + tbm_surface, 0))); + tsq_err = tbm_surface_queue_release(surf_source->tbm_queue, tbm_surface); + if (tsq_err != TBM_SURFACE_QUEUE_ERROR_NONE) + TPL_ERR("Failed to release. tbm_surface(%p) tsq_err(%d)", + tbm_surface, tsq_err); + } TPL_OBJECT_UNLOCK(&surf_source->obj); }