X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=meta-agl-core%2Frecipes-graphics%2Fwayland%2Fweston%2F0002-libweston-desktop-introduce-weston_desktop_client_de.patch;fp=meta-agl-core%2Frecipes-graphics%2Fwayland%2Fweston%2F0002-libweston-desktop-introduce-weston_desktop_client_de.patch;h=229c8506a45cfcdc22bc52f7da6dc525ef57657e;hb=4c2a3dbe7b652e679c9228d7d8c81aa641bd968b;hp=0000000000000000000000000000000000000000;hpb=7d671af1dc9bc1d1e70a113a2e4a84e63a141814;p=AGL%2Fmeta-agl.git diff --git a/meta-agl-core/recipes-graphics/wayland/weston/0002-libweston-desktop-introduce-weston_desktop_client_de.patch b/meta-agl-core/recipes-graphics/wayland/weston/0002-libweston-desktop-introduce-weston_desktop_client_de.patch new file mode 100644 index 000000000..229c8506a --- /dev/null +++ b/meta-agl-core/recipes-graphics/wayland/weston/0002-libweston-desktop-introduce-weston_desktop_client_de.patch @@ -0,0 +1,88 @@ +From f53c05d3c2c19c139c52e9bd621c2654dd3dac69 Mon Sep 17 00:00:00 2001 +From: Pekka Paalanen +Upstream-Status: Backport +Date: Fri, 14 May 2021 16:04:45 +0300 +Subject: [PATCH] libweston-desktop: introduce weston_desktop_client_destroy() + +This new function is callable explicitly, unlike the old function that +used to have the same name. + +This will be needed when tearing down what +weston_desktop_xwayland_init() puts up. + +Since calling weston_desktop_client_destroy() for an external client +(one that has a wl_resource for this) is a bug, add asserts to prevent +it. This will only be needed for the internal client: XWM. + +Signed-off-by: Pekka Paalanen +--- + libweston-desktop/client.c | 21 +++++++++++++++++---- + libweston-desktop/internal.h | 2 ++ + 2 files changed, 19 insertions(+), 4 deletions(-) + +diff --git a/libweston-desktop/client.c b/libweston-desktop/client.c +index ba7bfbc46..44718e2db 100644 +--- a/libweston-desktop/client.c ++++ b/libweston-desktop/client.c +@@ -24,6 +24,7 @@ + #include "config.h" + + #include ++#include + + #include + #include +@@ -48,14 +49,14 @@ weston_desktop_client_add_destroy_listener(struct weston_desktop_client *client, + wl_signal_add(&client->destroy_signal, listener); + } + +-static void +-weston_desktop_client_handle_destroy(struct wl_resource *resource) ++void ++weston_desktop_client_destroy(struct weston_desktop_client *client) + { +- struct weston_desktop_client *client = +- wl_resource_get_user_data(resource); + struct wl_list *list = &client->surface_list; + struct wl_list *link, *tmp; + ++ assert(client->resource == NULL); ++ + wl_signal_emit(&client->destroy_signal, client); + + for (link = list->next, tmp = link->next; +@@ -71,6 +72,18 @@ weston_desktop_client_handle_destroy(struct wl_resource *resource) + free(client); + } + ++static void ++weston_desktop_client_handle_destroy(struct wl_resource *resource) ++{ ++ struct weston_desktop_client *client = ++ wl_resource_get_user_data(resource); ++ ++ assert(client->resource == resource); ++ client->resource = NULL; ++ ++ weston_desktop_client_destroy(client); ++} ++ + static int + weston_desktop_client_ping_timeout(void *user_data) + { +diff --git a/libweston-desktop/internal.h b/libweston-desktop/internal.h +index e4ab2701b..7a815bd87 100644 +--- a/libweston-desktop/internal.h ++++ b/libweston-desktop/internal.h +@@ -134,6 +134,8 @@ weston_desktop_client_create(struct weston_desktop *desktop, + const struct wl_interface *interface, + const void *implementation, uint32_t version, + uint32_t id); ++void ++weston_desktop_client_destroy(struct weston_desktop_client *client); + + void + weston_desktop_client_add_destroy_listener(struct weston_desktop_client *client, +-- +GitLab +