]> git.mdlowis.com Git - proto/labwc.git/commitdiff
Revert "layers: arrange layers on destroy"
authortokyo4j <hrak1529@gmail.com>
Fri, 27 Jun 2025 05:50:29 +0000 (14:50 +0900)
committerJohan Malm <johanmalm@users.noreply.github.com>
Fri, 27 Jun 2025 21:03:37 +0000 (22:03 +0100)
This reverts commit 7bf08af210968fb174149754ce341988365a131b.

include/layers.h
src/layers.c
src/node.c

index 21705fc39c64a12931ec57e4045ed4c5d2ca02a4..a47d916e20f21f5e0d35b98a9c9ca4af12fb481d 100644 (file)
@@ -12,8 +12,6 @@ struct lab_layer_surface {
        struct wlr_layer_surface_v1 *layer_surface;
        struct wlr_scene_layer_surface_v1 *scene_layer_surface;
        struct server *server;
-       struct output *output;
-       struct wlr_scene_tree *tree;
 
        bool mapped;
 
index c702b4dfbfc7472f68607e1d5787923c4966de1a..d4e6f60d81fde1e222b43b889030c729feff220b 100644 (file)
@@ -45,13 +45,6 @@ arrange_one_layer(const struct wlr_box *full_area, struct wlr_box *usable_area,
 {
        struct wlr_scene_node *node;
        wl_list_for_each(node, &tree->children, link) {
-               /*
-                * Could be null during destruction when called from
-                * handle_node_destroy()
-                */
-               if (!node->data) {
-                       continue;
-               }
                struct lab_layer_surface *surface = node_layer_surface_from_node(node);
                struct wlr_scene_layer_surface_v1 *scene = surface->scene_layer_surface;
                if (!scene->layer_surface->initialized) {
@@ -126,7 +119,6 @@ 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;
-       layer->output = NULL;
        wlr_layer_surface_v1_destroy(layer->scene_layer_surface->layer_surface);
 }
 
@@ -336,16 +328,6 @@ handle_node_destroy(struct wl_listener *listener, void *data)
         * focus to.
         */
 
-       /*
-        * Nullify node descriptor early to avoid functions such as
-        * arrange_one_layer() trying to dereference it.
-        */
-       layer->tree->node.data = NULL;
-
-       if (layer->output) {
-               output_update_usable_area(layer->output);
-       }
-
        wl_list_remove(&layer->map.link);
        wl_list_remove(&layer->unmap.link);
        wl_list_remove(&layer->surface_commit.link);
@@ -361,6 +343,9 @@ handle_unmap(struct wl_listener *listener, void *data)
        struct lab_layer_surface *layer = wl_container_of(listener, layer, unmap);
        struct wlr_layer_surface_v1 *layer_surface =
                layer->scene_layer_surface->layer_surface;
+       if (layer_surface->output) {
+               output_update_usable_area(layer_surface->output->data);
+       }
        struct seat *seat = &layer->server->seat;
        if (seat->focused_layer == layer_surface) {
                try_to_focus_next_layer_or_toplevel(layer->server);
@@ -590,7 +575,6 @@ handle_new_layer_surface(struct wl_listener *listener, void *data)
        surface->layer_surface = layer_surface;
 
        struct output *output = layer_surface->output->data;
-       surface->output = output;
 
        wlr_fractional_scale_v1_notify_scale(layer_surface->surface,
                output->wlr_output->scale);
@@ -605,7 +589,6 @@ handle_new_layer_surface(struct wl_listener *listener, void *data)
                wlr_log(WLR_ERROR, "could not create layer surface");
                return;
        }
-       surface->tree = surface->scene_layer_surface->tree;
 
        /* In support of IME popup */
        layer_surface->surface->data = surface->scene_layer_surface->tree;
index e60c13eb039e82b2dfc9078d1f4c5760b29ecec6..328c0eb9d81c8813ae7e92578d5384e82f31786e 100644 (file)
@@ -11,7 +11,7 @@ descriptor_destroy(struct node_descriptor *node_descriptor)
                return;
        }
        wl_list_remove(&node_descriptor->destroy.link);
-       zfree(node_descriptor);
+       free(node_descriptor);
 }
 
 static void