From: Seunghun Lee Date: Mon, 6 Nov 2023 00:53:04 +0000 (+0900) Subject: tbm_server: Unreference tbm_surface when ds_buffer is destroyed X-Git-Tag: accepted/tizen/unified/20231110.172201~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=23a4f3559e25721626344007b66c9bfd10207130;p=platform%2Fcore%2Fuifw%2Flibds-tizen.git 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 --- 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);