From: Joonbum Ko Date: Thu, 13 Jan 2022 08:52:48 +0000 (+0900) Subject: Move unref to outside from buffer mutex. X-Git-Tag: submit/tizen/20220118.102333~4 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F20%2F269420%2F1;p=platform%2Fcore%2Fuifw%2Flibtpl-egl.git Move unref to outside from buffer mutex. Change-Id: If2c0eb9ee17edf6febc830ec058b274b1eba5431 Signed-off-by: Joonbum Ko --- diff --git a/src/tpl_wl_egl_thread.c b/src/tpl_wl_egl_thread.c index 8e633d6..d7b730e 100755 --- a/src/tpl_wl_egl_thread.c +++ b/src/tpl_wl_egl_thread.c @@ -2956,11 +2956,11 @@ __cb_buffer_fenced_release(void *data, tbm_surface = wl_egl_buffer->tbm_surface; if (tbm_surface_internal_is_valid(tbm_surface)) { + tbm_surface_queue_error_e tsq_err = TBM_SURFACE_QUEUE_ERROR_INVALID_SURFACE; tpl_gmutex_lock(&wl_egl_buffer->mutex); if (wl_egl_buffer->status == COMMITTED) { tpl_wl_egl_surface_t *wl_egl_surface = wl_egl_buffer->wl_egl_surface; - tbm_surface_queue_error_e tsq_err; zwp_linux_buffer_release_v1_destroy(wl_egl_buffer->buffer_release); wl_egl_buffer->buffer_release = NULL; @@ -2984,12 +2984,13 @@ __cb_buffer_fenced_release(void *data, tbm_surface); if (tsq_err != TBM_SURFACE_QUEUE_ERROR_NONE) TPL_ERR("tbm_surface(%p) tsq_err(%d)", tbm_surface, tsq_err); - - tbm_surface_internal_unref(tbm_surface); } tpl_gmutex_unlock(&wl_egl_buffer->mutex); + if (tsq_err == TBM_SURFACE_QUEUE_ERROR_NONE) + tbm_surface_internal_unref(tbm_surface); + } else { TPL_ERR("Invalid parameter | tbm_surface(%p)", tbm_surface); } @@ -3007,11 +3008,11 @@ __cb_buffer_immediate_release(void *data, tbm_surface = wl_egl_buffer->tbm_surface; if (tbm_surface_internal_is_valid(tbm_surface)) { + tbm_surface_queue_error_e tsq_err = TBM_SURFACE_QUEUE_ERROR_INVALID_SURFACE; tpl_gmutex_lock(&wl_egl_buffer->mutex); if (wl_egl_buffer->status == COMMITTED) { tpl_wl_egl_surface_t *wl_egl_surface = wl_egl_buffer->wl_egl_surface; - tbm_surface_queue_error_e tsq_err; zwp_linux_buffer_release_v1_destroy(wl_egl_buffer->buffer_release); wl_egl_buffer->buffer_release = NULL; @@ -3033,12 +3034,13 @@ __cb_buffer_immediate_release(void *data, tbm_surface); if (tsq_err != TBM_SURFACE_QUEUE_ERROR_NONE) TPL_ERR("tbm_surface(%p) tsq_err(%d)", tbm_surface, tsq_err); - - tbm_surface_internal_unref(tbm_surface); } tpl_gmutex_unlock(&wl_egl_buffer->mutex); + if (tsq_err == TBM_SURFACE_QUEUE_ERROR_NONE) + tbm_surface_internal_unref(tbm_surface); + } else { TPL_ERR("Invalid parameter | tbm_surface(%p)", tbm_surface); }