mirror of
https://gitlab.freedesktop.org/wlroots/wlroots.git
synced 2025-11-19 06:59:48 -05:00
output: Change wlr_output_add_software_cursors_to_render_pass to take buffer coordinates
Since wlr_damage_ring now only works with buffer local coordinates, this creates an inpedance mismatch for compositors that want to use this function. Instead of compositors needing to the the conversion itself, change thu function to take buffer local coordinates directly.
This commit is contained in:
parent
1e949402b0
commit
402a862413
3 changed files with 10 additions and 24 deletions
|
|
@ -81,12 +81,6 @@ void wlr_output_add_software_cursors_to_render_pass(struct wlr_output *output,
|
|||
int width, height;
|
||||
wlr_output_transformed_resolution(output, &width, &height);
|
||||
|
||||
pixman_region32_t render_damage;
|
||||
pixman_region32_init_rect(&render_damage, 0, 0, width, height);
|
||||
if (damage != NULL) {
|
||||
pixman_region32_intersect(&render_damage, &render_damage, damage);
|
||||
}
|
||||
|
||||
struct wlr_output_cursor *cursor;
|
||||
wl_list_for_each(cursor, &output->cursors, link) {
|
||||
if (!cursor->enabled || !cursor->visible ||
|
||||
|
|
@ -101,20 +95,21 @@ void wlr_output_add_software_cursors_to_render_pass(struct wlr_output *output,
|
|||
|
||||
struct wlr_box box;
|
||||
output_cursor_get_box(cursor, &box);
|
||||
wlr_box_transform(&box, &box,
|
||||
wlr_output_transform_invert(output->transform), width, height);
|
||||
|
||||
pixman_region32_t cursor_damage;
|
||||
pixman_region32_init_rect(&cursor_damage, box.x, box.y, box.width, box.height);
|
||||
pixman_region32_intersect(&cursor_damage, &cursor_damage, &render_damage);
|
||||
pixman_region32_init_rect(&cursor_damage,
|
||||
box.x, box.y, box.width, box.height);
|
||||
if (damage != NULL) {
|
||||
pixman_region32_intersect(&cursor_damage, &cursor_damage, damage);
|
||||
}
|
||||
|
||||
if (!pixman_region32_not_empty(&cursor_damage)) {
|
||||
pixman_region32_fini(&cursor_damage);
|
||||
continue;
|
||||
}
|
||||
|
||||
enum wl_output_transform transform =
|
||||
wlr_output_transform_invert(output->transform);
|
||||
wlr_box_transform(&box, &box, transform, width, height);
|
||||
wlr_region_transform(&cursor_damage, &cursor_damage, transform, width, height);
|
||||
|
||||
wlr_render_pass_add_texture(render_pass, &(struct wlr_render_texture_options) {
|
||||
.texture = texture,
|
||||
.src_box = cursor->src_box,
|
||||
|
|
@ -125,8 +120,6 @@ void wlr_output_add_software_cursors_to_render_pass(struct wlr_output *output,
|
|||
|
||||
pixman_region32_fini(&cursor_damage);
|
||||
}
|
||||
|
||||
pixman_region32_fini(&render_damage);
|
||||
}
|
||||
|
||||
static void output_cursor_damage_whole(struct wlr_output_cursor *cursor) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue