mirror of
				https://github.com/labwc/labwc.git
				synced 2025-11-03 09:01:51 -05:00 
			
		
		
		
	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:
		
							parent
							
								
									fb1af5f68e
								
							
						
					
					
						commit
						3f65a2ff77
					
				
					 7 changed files with 17 additions and 16 deletions
				
			
		
							
								
								
									
										11
									
								
								src/debug.c
									
										
									
									
									
								
							
							
						
						
									
										11
									
								
								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");
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue