]> git.mdlowis.com Git - proto/labwc.git/commitdiff
Chase wlroots: wlr_scene is now a tree node
authorConsolatis <35009135+Consolatis@users.noreply.github.com>
Sat, 4 Jun 2022 21:38:37 +0000 (23:38 +0200)
committerJohan Malm <johanmalm@users.noreply.github.com>
Tue, 7 Jun 2022 06:13:37 +0000 (07:13 +0100)
Chases wlroots 9eb71146ae56c509ee33c7e8a662549592aad870
wlr_scene: Refactor wlr_scene (the root element) to encase a wlr_scene_tree

src/debug.c
src/desktop.c
src/output.c
src/server.c
src/ssd/ssd.c
src/touch.c
subprojects/wlroots.wrap

index b5983bdec6f17c4d203ae565e4268f0a5fdb97a6..510bb0a6bc017e2c9c71150d7d75a8a861db998e 100644 (file)
@@ -17,9 +17,10 @@ static const char *
 get_node_type(struct wlr_scene_node *node)
 {
        switch (node->type) {
-       case WLR_SCENE_NODE_ROOT:
-               return "root";
        case WLR_SCENE_NODE_TREE:
+               if (!node->parent) {
+                       return "root";
+               }
                return "tree";
        case WLR_SCENE_NODE_RECT:
                return "rect";
@@ -86,13 +87,13 @@ static const char *
 get_special(struct server *server, struct wlr_scene_node *node,
        struct view **last_view)
 {
-       if (node == &server->scene->node) {
+       if (node == &server->scene->tree.node) {
                return "server->scene";
        }
        if (node == &server->menu_tree->node) {
                return "server->menu_tree";
        }
-       if (node->parent == &server->scene->node) {
+       if (node->parent == &server->scene->tree.node) {
                struct output *output;
                wl_list_for_each(output, &server->outputs, link) {
                        if (node == &output->osd_tree->node) {
@@ -183,6 +184,6 @@ void
 debug_dump_scene(struct server *server)
 {
        printf("\n");
-       dump_tree(server, &server->scene->node, 0, 0, 0);
+       dump_tree(server, &server->scene->tree.node, 0, 0, 0);
        printf("\n");
 }
index a180c2cc0e6f8d150a0e6493d499b009807c3313..933d71b708a67a2766366004a7a6a8cff1b5bb52 100644 (file)
@@ -264,7 +264,7 @@ desktop_node_and_view_at(struct server *server, double lx, double ly,
                enum ssd_part_type *view_area)
 {
        struct wlr_scene_node *node =
-               wlr_scene_node_at(&server->scene->node, lx, ly, sx, sy);
+               wlr_scene_node_at(&server->scene->tree.node, lx, ly, sx, sy);
 
        *scene_node = node;
        if (!node) {
index 0e3768d4beb91aca8faef4638fce217a18622a08..757afcca5fc61b185baa9aa92439e99f817458fb 100644 (file)
@@ -135,14 +135,14 @@ new_output_notify(struct wl_listener *listener, void *data)
        for (int i = 0; i < nr_layers; i++) {
                wl_list_init(&output->layers[i]);
                output->layer_tree[i] =
-                       wlr_scene_tree_create(&server->scene->node);
+                       wlr_scene_tree_create(&server->scene->tree.node);
                node_descriptor_create(&output->layer_tree[i]->node,
                        LAB_NODE_DESC_TREE, NULL);
        }
-       output->layer_popup_tree = wlr_scene_tree_create(&server->scene->node);
+       output->layer_popup_tree = wlr_scene_tree_create(&server->scene->tree.node);
        node_descriptor_create(&output->layer_popup_tree->node,
                LAB_NODE_DESC_TREE, NULL);
-       output->osd_tree = wlr_scene_tree_create(&server->scene->node);
+       output->osd_tree = wlr_scene_tree_create(&server->scene->tree.node);
        node_descriptor_create(&output->osd_tree->node,
                LAB_NODE_DESC_TREE, NULL);
 
index 14af791998c38f232ab5177d8ee30a17a4fcdf0b..1e85730d5f0095035fe9d2979d2bd77430e0ee82 100644 (file)
@@ -238,12 +238,12 @@ server_init(struct server *server)
                wlr_log(WLR_ERROR, "unable to create scene");
                exit(EXIT_FAILURE);
        }
-       server->view_tree = wlr_scene_tree_create(&server->scene->node);
-       server->view_tree_always_on_top = wlr_scene_tree_create(&server->scene->node);
+       server->view_tree = wlr_scene_tree_create(&server->scene->tree.node);
+       server->view_tree_always_on_top = wlr_scene_tree_create(&server->scene->tree.node);
 #if HAVE_XWAYLAND
-       server->unmanaged_tree = wlr_scene_tree_create(&server->scene->node);
+       server->unmanaged_tree = wlr_scene_tree_create(&server->scene->tree.node);
 #endif
-       server->menu_tree = wlr_scene_tree_create(&server->scene->node);
+       server->menu_tree = wlr_scene_tree_create(&server->scene->tree.node);
 
        output_init(server);
 
index f9ac904ea3af5a642a63f0d09fc0920d9272fbce..d10aabca7460e2faedf2369e160d8c2a3d5b4715 100644 (file)
@@ -106,7 +106,7 @@ ssd_at(struct view *view, double lx, double ly)
 {
        double sx, sy;
        struct wlr_scene_node *node = wlr_scene_node_at(
-               &view->server->scene->node, lx, ly, &sx, &sy);
+               &view->server->scene->tree.node, lx, ly, &sx, &sy);
        return ssd_get_part_type(view, node);
 }
 
index 5fc165755707c9f9ad39392d06d4c58ba52e1444..0023068d11aa9d8be2055e6af49cafa0897b6865 100644 (file)
@@ -13,7 +13,7 @@ touch_get_coords(struct seat *seat, struct wlr_touch *touch, double x, double y,
                x, y, &lx, &ly);
 
        struct wlr_scene_node *node =
-               wlr_scene_node_at(&seat->server->scene->node, lx, ly, sx, sy);
+               wlr_scene_node_at(&seat->server->scene->tree.node, lx, ly, sx, sy);
 
        /* Find the surface and return it if it accepts touch events. */
        struct wlr_surface *surface = lab_wlr_surface_from_node(node);
index 257db7378bd79df973b8c2a7df83e842474dbd9f..be6c191def46a9f0db87dba5227ffa2be99d790e 100644 (file)
@@ -1,6 +1,6 @@
 [wrap-git]
 url = https://gitlab.freedesktop.org/wlroots/wlroots.git
-revision = 98c5f58a388926c3db5d5b4b9275645bccd54271
+revision = 9eb71146ae56c509ee33c7e8a662549592aad870
 
 [provide]
 dependency_names = wlroots