]> git.mdlowis.com Git - proto/labwc.git/commitdiff
src/layers.c: destroy layer surface on output loss
authorConsolatis <35009135+Consolatis@users.noreply.github.com>
Fri, 30 Dec 2022 00:14:27 +0000 (01:14 +0100)
committerJohan Malm <johanmalm@users.noreply.github.com>
Tue, 3 Jan 2023 19:46:31 +0000 (19:46 +0000)
src/layers.c

index 4b2e9eb6bde76f1dbfacab826174aa8e58384d10..220914d16fa39b0d82d04913053d0ee78d6f981c 100644 (file)
@@ -117,6 +117,7 @@ handle_output_destroy(struct wl_listener *listener, void *data)
        struct lab_layer_surface *layer =
                wl_container_of(listener, layer, output_destroy);
        layer->scene_layer_surface->layer_surface->output = NULL;
+       wlr_layer_surface_v1_destroy(layer->scene_layer_surface->layer_surface);
 }
 
 static void
@@ -272,19 +273,13 @@ handle_new_popup(struct wl_listener *listener, void *data)
                wl_container_of(listener, toplevel, new_popup);
        struct wlr_xdg_popup *wlr_popup = data;
 
-       int lx, ly;
        struct server *server = toplevel->server;
        struct wlr_scene_layer_surface_v1 *surface = toplevel->scene_layer_surface;
-       wlr_scene_node_coords(&surface->tree->node, &lx, &ly);
-
-       if (!surface->layer_surface->output) {
-               /* Work-around for moving layer shell surfaces on output destruction */
-               struct wlr_output *wlr_output;
-               wlr_output = wlr_output_layout_output_at(server->output_layout, lx, ly);
-               surface->layer_surface->output = wlr_output;
-       }
        struct output *output = surface->layer_surface->output->data;
 
+       int lx, ly;
+       wlr_scene_node_coords(&surface->tree->node, &lx, &ly);
+
        struct wlr_box output_box = { 0 };
        wlr_output_layout_get_box(server->output_layout,
                output->wlr_output, &output_box);