From: Consolatis <35009135+Consolatis@users.noreply.github.com> Date: Sat, 4 Jun 2022 21:38:37 +0000 (+0200) Subject: Chase wlroots: wlr_scene is now a tree node X-Git-Url: https://git.mdlowis.com/?a=commitdiff_plain;h=3f65a2ff7781a1200c00e6a2b8a23c0df00a5457;p=proto%2Flabwc.git Chase wlroots: wlr_scene is now a tree node Chases wlroots 9eb71146ae56c509ee33c7e8a662549592aad870 wlr_scene: Refactor wlr_scene (the root element) to encase a wlr_scene_tree --- diff --git a/src/debug.c b/src/debug.c index b5983bde..510bb0a6 100644 --- a/src/debug.c +++ b/src/debug.c @@ -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"); } diff --git a/src/desktop.c b/src/desktop.c index a180c2cc..933d71b7 100644 --- a/src/desktop.c +++ b/src/desktop.c @@ -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) { diff --git a/src/output.c b/src/output.c index 0e3768d4..757afcca 100644 --- a/src/output.c +++ b/src/output.c @@ -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); diff --git a/src/server.c b/src/server.c index 14af7919..1e85730d 100644 --- a/src/server.c +++ b/src/server.c @@ -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); diff --git a/src/ssd/ssd.c b/src/ssd/ssd.c index f9ac904e..d10aabca 100644 --- a/src/ssd/ssd.c +++ b/src/ssd/ssd.c @@ -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); } diff --git a/src/touch.c b/src/touch.c index 5fc16575..0023068d 100644 --- a/src/touch.c +++ b/src/touch.c @@ -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); diff --git a/subprojects/wlroots.wrap b/subprojects/wlroots.wrap index 257db737..be6c191d 100644 --- a/subprojects/wlroots.wrap +++ b/subprojects/wlroots.wrap @@ -1,6 +1,6 @@ [wrap-git] url = https://gitlab.freedesktop.org/wlroots/wlroots.git -revision = 98c5f58a388926c3db5d5b4b9275645bccd54271 +revision = 9eb71146ae56c509ee33c7e8a662549592aad870 [provide] dependency_names = wlroots