From c09d3450d494e21f065c12f199fa5ba8bfd946a9 Mon Sep 17 00:00:00 2001 From: Kirill Primak Date: Wed, 2 Nov 2022 23:43:37 +0300 Subject: [PATCH] compositor: enforce surface destruction order --- types/wlr_compositor.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/types/wlr_compositor.c b/types/wlr_compositor.c index df55938c..da00e76d 100644 --- a/types/wlr_compositor.c +++ b/types/wlr_compositor.c @@ -36,6 +36,14 @@ static int max(int fst, int snd) { static void surface_handle_destroy(struct wl_client *client, struct wl_resource *resource) { + struct wlr_surface *surface = wlr_surface_from_resource(resource); + if (surface->role_data != NULL) { + // TODO: send WL_SURFACE_ERROR_DEFUNCT_ROLE_OBJECT + // https://gitlab.freedesktop.org/wayland/wayland/-/merge_requests/278 + wl_resource_post_error(resource, -1, + "surface was destroyed before its role object"); + return; + } wl_resource_destroy(resource); }