From f22bb9486835f81295e2d47fdc6628a3b4c44fca Mon Sep 17 00:00:00 2001 From: "joonbum.ko" Date: Tue, 19 Apr 2016 15:26:28 +0900 Subject: [PATCH] tbm_surface_internal_unref has to called before get_user_data. - When client received release_cb from server, if client surface already destroyed released tbm_surface should be destroyed before checking its own user_data. Change-Id: I5ed2c880182e1f64c6e2b70bdcfe9b6722b204d0 --- src/tpl_wayland_egl.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/tpl_wayland_egl.c b/src/tpl_wayland_egl.c index 9b4ef59..9cbe8cb 100644 --- a/src/tpl_wayland_egl.c +++ b/src/tpl_wayland_egl.c @@ -795,14 +795,17 @@ __cb_client_buffer_release_callback(void *data, struct wl_proxy *proxy) tbm_surface = (tbm_surface_h) data; + /* If tbm_surface_queue reset/destroy before this callback + * tbm_surface will be not used any more. + * So, it should be detroyed before getting its user_data */ + tbm_surface_internal_unref(tbm_surface); + wayland_egl_buffer = __tpl_wayland_egl_get_wayland_buffer_from_tbm_surface(tbm_surface); if (wayland_egl_buffer) { wayland_egl_surface = wayland_egl_buffer->wayland_egl_surface; - tbm_surface_internal_unref(tbm_surface); - tbm_surface_queue_release(wayland_egl_surface->tbm_queue, tbm_surface); } } -- 2.7.4