From a4c1c4815eb910d44a8657efe27543b774b28c93 Mon Sep 17 00:00:00 2001 From: Consolatis <35009135+Consolatis@users.noreply.github.com> Date: Fri, 30 Dec 2022 01:37:32 +0100 Subject: [PATCH] src/layers.c: ensure layers_arrange() is only called with an output set --- src/layers.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/layers.c b/src/layers.c index 54bda17a..4b2e9eb6 100644 --- a/src/layers.c +++ b/src/layers.c @@ -38,6 +38,7 @@ arrange_one_layer(struct output *output, const struct wlr_box *full_area, void layers_arrange(struct output *output) { + assert(output); struct wlr_box full_area = { 0 }; wlr_output_effective_resolution(output->wlr_output, &full_area.width, &full_area.height); @@ -166,9 +167,13 @@ static void handle_unmap(struct wl_listener *listener, void *data) { struct lab_layer_surface *layer = wl_container_of(listener, layer, unmap); - layers_arrange(layer->scene_layer_surface->layer_surface->output->data); + struct wlr_layer_surface_v1 *layer_surface = + layer->scene_layer_surface->layer_surface; + if (layer_surface->output) { + layers_arrange(layer_surface->output->data); + } struct seat *seat = &layer->server->seat; - if (seat->focused_layer == layer->scene_layer_surface->layer_surface) { + if (seat->focused_layer == layer_surface) { seat_set_focus_layer(seat, NULL); } }