From 31eb60fd2eabb05576c225ed6b342854abada56d Mon Sep 17 00:00:00 2001 From: Seunghun Lee Date: Mon, 6 Nov 2023 09:49:15 +0900 Subject: [PATCH] tbm_server: Reference/unreference tbm_surface This is to prevent tbm_surface from being destroyed while ds_buffer is alive. Change-Id: Iaab843d721d01b82a774094d91f03629e0a98fa4 --- src/tbm_server/tbm_server.c | 4 ++++ src/tbm_server/tbm_server.h | 1 + 2 files changed, 5 insertions(+) diff --git a/src/tbm_server/tbm_server.c b/src/tbm_server/tbm_server.c index 693f8a9..0001d9f 100644 --- a/src/tbm_server/tbm_server.c +++ b/src/tbm_server/tbm_server.c @@ -110,7 +110,10 @@ 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); @@ -220,6 +223,7 @@ tbm_client_buffer_create(struct wl_resource *resource) ds_buffer_init(&buffer->base, &tbm_client_buffer_iface, width, height); buffer->resource = resource; + tbm_surface_internal_ref(surface); buffer->surface = surface; buffer->format = tbm_surface_get_format(surface); diff --git a/src/tbm_server/tbm_server.h b/src/tbm_server/tbm_server.h index 3ae00f3..c045496 100644 --- a/src/tbm_server/tbm_server.h +++ b/src/tbm_server/tbm_server.h @@ -4,6 +4,7 @@ #include #include #include +#include #include #include -- 2.7.4