From c2c3bca41b3573df97e7a9454c5e750f673b73d4 Mon Sep 17 00:00:00 2001 From: lkn Date: Tue, 23 Jun 2026 20:32:28 +0200 Subject: [PATCH] kaboom: detach buffer from scene before freeing pixel data Call wlr_scene_buffer_set_buffer(NULL) before destroying the tree and freeing the pixman images to prevent the scene graph from accessing freed memory during its next render pass. --- src/backend/wayland/wl_kaboom.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/backend/wayland/wl_kaboom.c b/src/backend/wayland/wl_kaboom.c index ba2e3ad..1eeea46 100644 --- a/src/backend/wayland/wl_kaboom.c +++ b/src/backend/wayland/wl_kaboom.c @@ -48,12 +48,15 @@ static void kaboom_destroy(struct kaboom_state *state) { if (state->timer) wl_event_source_remove(state->timer); + /* Detach buffer from scene before freeing pixel data */ + if (state->scene_buf) + wlr_scene_buffer_set_buffer(state->scene_buf, NULL); if (state->tree) wlr_scene_node_destroy(&state->tree->node); - if (state->image) - pixman_image_unref(state->image); if (state->src_image) pixman_image_unref(state->src_image); + if (state->image) + pixman_image_unref(state->image); wlr_buffer_drop(&state->base); free(state->pieces); free(state);