From: Joonbum Ko Date: Thu, 25 Mar 2021 03:46:10 +0000 (+0900) Subject: Close release_fence_fd when wl_egl_buffer freed. X-Git-Tag: submit/tizen/20210325.043850~3 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6f4c654f11ec32009cdef1adac07c4b1b7cf43cb;p=platform%2Fcore%2Fuifw%2Flibtpl-egl.git Close release_fence_fd when wl_egl_buffer freed. - The fenced_release event can be dispatched just before the wl_egl_buffer is freed. At this time, release_fence_fd delivered to fenced_release event may leak if it is not closed because wl_egl_buffer cannot be used and is freed. Change-Id: I7584c518b955c83f632b2d5ea281272f8dd2b166 Signed-off-by: Joonbum Ko --- diff --git a/src/tpl_wl_egl_thread.c b/src/tpl_wl_egl_thread.c index 6147716..41bc081 100755 --- a/src/tpl_wl_egl_thread.c +++ b/src/tpl_wl_egl_thread.c @@ -2353,6 +2353,8 @@ __tpl_wl_egl_surface_dequeue_buffer(tpl_surface_t *surface, uint64_t timeout_ns, *release_fence = wl_egl_buffer->release_fence_fd; TPL_DEBUG("wl_egl_surface(%p) wl_egl_buffer(%p) release_fence_fd(%d)", wl_egl_surface, wl_egl_buffer, *release_fence); + + wl_egl_buffer->release_fence_fd = -1; } else { *release_fence = -1; } @@ -3286,6 +3288,11 @@ __cb_wl_egl_buffer_free(tpl_wl_egl_buffer_t *wl_egl_buffer) wl_egl_buffer->buffer_release = NULL; } + if (wl_egl_buffer->release_fence_fd != -1) { + close(wl_egl_buffer->release_fence_fd); + wl_egl_buffer->release_fence_fd = -1; + } + if (wl_egl_buffer->waiting_source) { tpl_gsource_destroy(wl_egl_buffer->waiting_source, TPL_FALSE); wl_egl_buffer->waiting_source = NULL;