From 436636e480b4ab79709b85d59a4c16c0784bdfd5 Mon Sep 17 00:00:00 2001 From: TaeHyeon Jeong Date: Tue, 3 Sep 2024 11:53:12 +0900 Subject: [PATCH] renderer: Fix resource overwriting when renderer_surface get AS-IS - finds the info corresponding to renderer_client and ds_surface, and then overwrites info->resource with new wl_resource TO-BE - creates a new info each time and allocates a wl_resource Change-Id: If76f2905c26b695c65270c963e0e2837561cdd0e --- src/renderer/renderer.c | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/src/renderer/renderer.c b/src/renderer/renderer.c index bcd320d..18848d2 100644 --- a/src/renderer/renderer.c +++ b/src/renderer/renderer.c @@ -57,14 +57,6 @@ static void renderer_handle_display_destroy(struct wl_listener *listener, static void renderer_bind(struct wl_client *wl_client, void *data, uint32_t version, uint32_t id); -static struct ds_tizen_renderer_info *tizen_renderer_client_find_info( - struct ds_tizen_renderer_client *client, - struct ds_surface *surface); - -static struct ds_tizen_renderer_info *tizen_renderer_client_get_info( - struct ds_tizen_renderer_client *client, - struct ds_surface *surface); - WL_EXPORT struct ds_tizen_renderer * ds_tizen_renderer_create(struct wl_display *display) { @@ -230,24 +222,27 @@ renderer_handle_get_renderer_surface(struct wl_client *wl_client, client = wl_resource_get_user_data(resource); surface = ds_surface_from_resource(surface_resource); - info = tizen_renderer_client_get_info(client, surface); + info = calloc(1, sizeof *info); if (info == NULL) { - ds_err("tizen_renderer_client_get_info() failed."); + ds_err("tizen_renderer_surface: calloc() failed."); wl_client_post_no_memory(wl_client); return; } + info->client = client; + info->surface = surface; info->resource = wl_resource_create(wl_client, &tizen_renderer_surface_interface, wl_resource_get_version(resource), id); if (info->resource == NULL) { ds_err("tizen_renderer : wl_resource_create() failed."); - wl_list_remove(&info->link); free(info); wl_client_post_no_memory(wl_client); return; } + wl_list_insert(&client->infos, &info->link); + wl_resource_set_implementation(info->resource, &renderer_surface_impl, info, _tizen_renderer_info_handle_destroy); -- 2.7.4