mirror of
https://github.com/hyprwm/wlroots-hyprland.git
synced 2024-11-13 08:55:58 +01:00
screencopy: handle compositor not setting damage
Damage the full output if the compositor didn't submit damage but did submit a buffer.
This commit is contained in:
parent
90c8452959
commit
1477401acd
1 changed files with 14 additions and 3 deletions
|
@ -48,9 +48,20 @@ static void screencopy_damage_accumulate(struct screencopy_damage *damage) {
|
|||
return;
|
||||
}
|
||||
|
||||
pixman_region32_union(region, region, &output->pending.damage);
|
||||
pixman_region32_intersect_rect(region, region, 0, 0, output->width,
|
||||
output->height);
|
||||
// If the compositor did not submit damage but did submit a buffer,
|
||||
if (!(output->pending.committed & WLR_OUTPUT_STATE_DAMAGE) &&
|
||||
(output->pending.committed & WLR_OUTPUT_STATE_BUFFER)) {
|
||||
// damage everything
|
||||
int width, height;
|
||||
wlr_output_transformed_resolution(output, &width, &height);
|
||||
pixman_region32_union_rect(region, region, 0, 0, width, height);
|
||||
} else {
|
||||
// otherwise copy over the current damage
|
||||
pixman_region32_union(region, region, &output->pending.damage);
|
||||
pixman_region32_intersect_rect(region, region, 0, 0, output->width,
|
||||
output->height);
|
||||
}
|
||||
|
||||
damage->last_commit_seq = output->commit_seq;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue