From 23a4f3559e25721626344007b66c9bfd10207130 Mon Sep 17 00:00:00 2001 From: Seunghun Lee Date: Mon, 6 Nov 2023 09:53:04 +0900 Subject: [PATCH] tbm_server: Unreference tbm_surface when ds_buffer is destroyed Although a wl_buffer resource is destroyed, a tbm_surface associated with the wl_buffer still has to stay alive because we increases reference count of tbm_surface with tbm_surface_internal_ref(). Since we don't need to drop the reference count of tbm_surface even when wl_buffer resource is destroyed, so it's reasonable that we keep the tbm_surface until ds_buffer is destroyed. Change-Id: I58cd008f965b1cf84671eba3bfa774274d0df957 --- src/tbm_server/tbm_server.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/tbm_server/tbm_server.c b/src/tbm_server/tbm_server.c index 0001d9f..3e3499b 100644 --- a/src/tbm_server/tbm_server.c +++ b/src/tbm_server/tbm_server.c @@ -110,10 +110,6 @@ tbm_client_buffer_handle_resource_destroy(struct wl_listener *listener, buffer = wl_container_of(listener, buffer, resource_destroy); buffer->resource = NULL; - - tbm_surface_internal_unref(buffer->surface); - buffer->surface = NULL; - wl_list_remove(&buffer->resource_destroy.link); wl_list_init(&buffer->resource_destroy.link); @@ -136,6 +132,7 @@ tbm_client_buffer_iface_destroy(struct ds_buffer *ds_buffer) ds_dbg("Destroy TBM client buffer(%p)", buffer); + tbm_surface_internal_unref(buffer->surface); wl_list_remove(&buffer->resource_destroy.link); wl_list_remove(&buffer->buffer_release.link); free(buffer); -- 2.7.4