scene: add wlr_scene_get_scene_output
This allows getting a wlr_scene_output from a wlr_output. Since an output can only be added once to a scene-graph there's no ambiguity. This is useful for compositors using wlr_scene_attach_output_layout: the output layout integration automatically creates a scene-graph output for each wlr_output added to the layout.
This commit is contained in:
		
							parent
							
								
									dd84c5a1cc
								
							
						
					
					
						commit
						ba974a4e9f
					
				|  | @ -282,6 +282,13 @@ bool wlr_scene_output_commit(struct wlr_scene_output *scene_output); | |||
|  */ | ||||
| void wlr_scene_output_for_each_surface(struct wlr_scene_output *scene_output, | ||||
| 	wlr_surface_iterator_func_t iterator, void *user_data); | ||||
| /**
 | ||||
|  * Get a scene-graph output from a wlr_output. | ||||
|  * | ||||
|  * If the output hasn't been added to the scene-graph, returns NULL. | ||||
|  */ | ||||
| struct wlr_scene_output *wlr_scene_get_scene_output(struct wlr_scene *scene, | ||||
| 	struct wlr_output *output); | ||||
| 
 | ||||
| /**
 | ||||
|  * Attach an output layout to a scene. | ||||
|  |  | |||
|  | @ -828,6 +828,18 @@ void wlr_scene_output_destroy(struct wlr_scene_output *scene_output) { | |||
| 	free(scene_output); | ||||
| } | ||||
| 
 | ||||
| struct wlr_scene_output *wlr_scene_get_scene_output(struct wlr_scene *scene, | ||||
| 		struct wlr_output *output) { | ||||
| 	struct wlr_addon *addon = | ||||
| 		wlr_addon_find(&output->addons, scene, &output_addon_impl); | ||||
| 	if (addon == NULL) { | ||||
| 		return NULL; | ||||
| 	} | ||||
| 	struct wlr_scene_output *scene_output = | ||||
| 		wl_container_of(addon, scene_output, addon); | ||||
| 	return scene_output; | ||||
| } | ||||
| 
 | ||||
| void wlr_scene_output_set_position(struct wlr_scene_output *scene_output, | ||||
| 		int lx, int ly) { | ||||
| 	if (scene_output->x == lx && scene_output->y == ly) { | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue