aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--types/wlr_compositor.c8
1 files changed, 8 insertions, 0 deletions
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);
}