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
This commit is contained in:
Consolatis 2022-06-04 23:38:37 +02:00 committed by Johan Malm
parent fb1af5f68e
commit 3f65a2ff77
7 changed files with 17 additions and 16 deletions

View file

@ -17,9 +17,10 @@ static const char *
get_node_type(struct wlr_scene_node *node) get_node_type(struct wlr_scene_node *node)
{ {
switch (node->type) { switch (node->type) {
case WLR_SCENE_NODE_ROOT:
return "root";
case WLR_SCENE_NODE_TREE: case WLR_SCENE_NODE_TREE:
if (!node->parent) {
return "root";
}
return "tree"; return "tree";
case WLR_SCENE_NODE_RECT: case WLR_SCENE_NODE_RECT:
return "rect"; return "rect";
@ -86,13 +87,13 @@ static const char *
get_special(struct server *server, struct wlr_scene_node *node, get_special(struct server *server, struct wlr_scene_node *node,
struct view **last_view) struct view **last_view)
{ {
if (node == &server->scene->node) { if (node == &server->scene->tree.node) {
return "server->scene"; return "server->scene";
} }
if (node == &server->menu_tree->node) { if (node == &server->menu_tree->node) {
return "server->menu_tree"; return "server->menu_tree";
} }
if (node->parent == &server->scene->node) { if (node->parent == &server->scene->tree.node) {
struct output *output; struct output *output;
wl_list_for_each(output, &server->outputs, link) { wl_list_for_each(output, &server->outputs, link) {
if (node == &output->osd_tree->node) { if (node == &output->osd_tree->node) {
@ -183,6 +184,6 @@ void
debug_dump_scene(struct server *server) debug_dump_scene(struct server *server)
{ {
printf("\n"); printf("\n");
dump_tree(server, &server->scene->node, 0, 0, 0); dump_tree(server, &server->scene->tree.node, 0, 0, 0);
printf("\n"); printf("\n");
} }

View file

@ -264,7 +264,7 @@ desktop_node_and_view_at(struct server *server, double lx, double ly,
enum ssd_part_type *view_area) enum ssd_part_type *view_area)
{ {
struct wlr_scene_node *node = 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; *scene_node = node;
if (!node) { if (!node) {

View file

@ -135,14 +135,14 @@ new_output_notify(struct wl_listener *listener, void *data)
for (int i = 0; i < nr_layers; i++) { for (int i = 0; i < nr_layers; i++) {
wl_list_init(&output->layers[i]); wl_list_init(&output->layers[i]);
output->layer_tree[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, node_descriptor_create(&output->layer_tree[i]->node,
LAB_NODE_DESC_TREE, NULL); 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, node_descriptor_create(&output->layer_popup_tree->node,
LAB_NODE_DESC_TREE, NULL); 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, node_descriptor_create(&output->osd_tree->node,
LAB_NODE_DESC_TREE, NULL); LAB_NODE_DESC_TREE, NULL);

View file

@ -238,12 +238,12 @@ server_init(struct server *server)
wlr_log(WLR_ERROR, "unable to create scene"); wlr_log(WLR_ERROR, "unable to create scene");
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
server->view_tree = 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->node); server->view_tree_always_on_top = wlr_scene_tree_create(&server->scene->tree.node);
#if HAVE_XWAYLAND #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 #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); output_init(server);

View file

@ -106,7 +106,7 @@ ssd_at(struct view *view, double lx, double ly)
{ {
double sx, sy; double sx, sy;
struct wlr_scene_node *node = wlr_scene_node_at( 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); return ssd_get_part_type(view, node);
} }

View file

@ -13,7 +13,7 @@ touch_get_coords(struct seat *seat, struct wlr_touch *touch, double x, double y,
x, y, &lx, &ly); x, y, &lx, &ly);
struct wlr_scene_node *node = 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. */ /* Find the surface and return it if it accepts touch events. */
struct wlr_surface *surface = lab_wlr_surface_from_node(node); struct wlr_surface *surface = lab_wlr_surface_from_node(node);

View file

@ -1,6 +1,6 @@
[wrap-git] [wrap-git]
url = https://gitlab.freedesktop.org/wlroots/wlroots.git url = https://gitlab.freedesktop.org/wlroots/wlroots.git
revision = 98c5f58a388926c3db5d5b4b9275645bccd54271 revision = 9eb71146ae56c509ee33c7e8a662549592aad870
[provide] [provide]
dependency_names = wlroots dependency_names = wlroots