]> git.mdlowis.com Git - proto/labwc.git/commitdiff
src/layers.c: ensure layers_arrange() is only called with an output set
authorConsolatis <35009135+Consolatis@users.noreply.github.com>
Fri, 30 Dec 2022 00:37:32 +0000 (01:37 +0100)
committerJohan Malm <johanmalm@users.noreply.github.com>
Tue, 3 Jan 2023 19:46:31 +0000 (19:46 +0000)
src/layers.c

index 54bda17ab3d172da59e6b73834978a2cf98c0377..4b2e9eb6bde76f1dbfacab826174aa8e58384d10 100644 (file)
@@ -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);
        }
 }