mirror of
https://github.com/hyprwm/wlroots-hyprland.git
synced 2024-11-22 12:55:58 +01:00
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
2 changed files with 19 additions and 0 deletions
|
@ -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,
|
void wlr_scene_output_for_each_surface(struct wlr_scene_output *scene_output,
|
||||||
wlr_surface_iterator_func_t iterator, void *user_data);
|
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.
|
* 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);
|
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,
|
void wlr_scene_output_set_position(struct wlr_scene_output *scene_output,
|
||||||
int lx, int ly) {
|
int lx, int ly) {
|
||||||
if (scene_output->x == lx && scene_output->y == ly) {
|
if (scene_output->x == lx && scene_output->y == ly) {
|
||||||
|
|
Loading…
Reference in a new issue