mirror of
https://github.com/hyprwm/wlroots-hyprland.git
synced 2024-11-12 16:35:58 +01:00
wlr_scene: Make wlr_scene_render_output private
This function sidesteps damage tracking and output awareness on buffers/surfaces. This function isn't a great fit for the API. Let's also inline the function and simplify it.
This commit is contained in:
parent
933ff0e60c
commit
7e383c6a6a
2 changed files with 9 additions and 35 deletions
|
@ -225,14 +225,6 @@ struct wlr_scene_node *wlr_scene_node_at(struct wlr_scene_node *node,
|
|||
* Create a new scene-graph.
|
||||
*/
|
||||
struct wlr_scene *wlr_scene_create(void);
|
||||
/**
|
||||
* Manually render the scene-graph on an output. The compositor needs to call
|
||||
* wlr_renderer_begin before and wlr_renderer_end after calling this function.
|
||||
* Damage is given in output-buffer-local coordinates and can be set to NULL to
|
||||
* disable damage tracking.
|
||||
*/
|
||||
void wlr_scene_render_output(struct wlr_scene *scene, struct wlr_output *output,
|
||||
int lx, int ly, pixman_region32_t *damage);
|
||||
/**
|
||||
* Handle presentation feedback for all surfaces in the scene, assuming that
|
||||
* scene outputs and the scene rendering functions are used.
|
||||
|
|
|
@ -945,31 +945,6 @@ static void scene_node_for_each_node(struct wlr_scene_node *node,
|
|||
}
|
||||
}
|
||||
|
||||
void wlr_scene_render_output(struct wlr_scene *scene, struct wlr_output *output,
|
||||
int lx, int ly, pixman_region32_t *damage) {
|
||||
pixman_region32_t full_region;
|
||||
pixman_region32_init_rect(&full_region, 0, 0, output->width, output->height);
|
||||
if (damage == NULL) {
|
||||
damage = &full_region;
|
||||
}
|
||||
|
||||
struct wlr_renderer *renderer = output->renderer;
|
||||
assert(renderer);
|
||||
|
||||
if (output->enabled && pixman_region32_not_empty(damage)) {
|
||||
struct render_data data = {
|
||||
.output = output,
|
||||
.damage = damage,
|
||||
.presentation = scene->presentation,
|
||||
};
|
||||
scene_node_for_each_node(&scene->node, -lx, -ly,
|
||||
render_node_iterator, &data);
|
||||
wlr_renderer_scissor(renderer, NULL);
|
||||
}
|
||||
|
||||
pixman_region32_fini(&full_region);
|
||||
}
|
||||
|
||||
static void scene_handle_presentation_destroy(struct wl_listener *listener,
|
||||
void *data) {
|
||||
struct wlr_scene *scene =
|
||||
|
@ -1254,8 +1229,15 @@ bool wlr_scene_output_commit(struct wlr_scene_output *scene_output) {
|
|||
wlr_renderer_clear(renderer, (float[4]){ 0.0, 0.0, 0.0, 1.0 });
|
||||
}
|
||||
|
||||
wlr_scene_render_output(scene_output->scene, output,
|
||||
scene_output->x, scene_output->y, &damage);
|
||||
struct render_data data = {
|
||||
.output = output,
|
||||
.damage = &damage,
|
||||
.presentation = scene_output->scene->presentation,
|
||||
};
|
||||
scene_node_for_each_node(&scene_output->scene->node,
|
||||
-scene_output->x, -scene_output->y,
|
||||
render_node_iterator, &data);
|
||||
wlr_renderer_scissor(renderer, NULL);
|
||||
wlr_output_render_software_cursors(output, &damage);
|
||||
|
||||
wlr_renderer_end(renderer);
|
||||
|
|
Loading…
Reference in a new issue