aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2024-01-27 10:50:40 +0400
committerIvan Molodetskikh <yalterz@gmail.com>2024-01-27 10:50:40 +0400
commitd77aac1afa0c61c26e39f36c5b38f026af884986 (patch)
tree2038cf5a630e86ccebd1e4f9927a93422c231139 /src
parent837a0a20fbc6d6461a2f22799eab45472a1816f0 (diff)
downloadniri-d77aac1afa0c61c26e39f36c5b38f026af884986.tar.gz
niri-d77aac1afa0c61c26e39f36c5b38f026af884986.tar.bz2
niri-d77aac1afa0c61c26e39f36c5b38f026af884986.zip
Fix damage when rendering to texture
Diffstat (limited to 'src')
-rw-r--r--src/niri.rs20
1 files changed, 14 insertions, 6 deletions
diff --git a/src/niri.rs b/src/niri.rs
index 600f1e1f..97bbd498 100644
--- a/src/niri.rs
+++ b/src/niri.rs
@@ -2848,9 +2848,13 @@ fn render_to_texture(
for element in elements.iter().rev() {
let src = element.src();
let dst = element.geometry(scale);
- element
- .draw(&mut frame, src, dst, &[output_rect])
- .context("error drawing element")?;
+
+ if let Some(mut damage) = output_rect.intersection(dst) {
+ damage.loc -= dst.loc;
+ element
+ .draw(&mut frame, src, dst, &[damage])
+ .context("error drawing element")?;
+ }
}
let sync_point = frame.finish().context("error finishing frame")?;
@@ -2913,9 +2917,13 @@ fn render_to_dmabuf(
for element in elements.iter().rev() {
let src = element.src();
let dst = element.geometry(scale);
- element
- .draw(&mut frame, src, dst, &[output_rect])
- .context("error drawing element")?;
+
+ if let Some(mut damage) = output_rect.intersection(dst) {
+ damage.loc -= dst.loc;
+ element
+ .draw(&mut frame, src, dst, &[damage])
+ .context("error drawing element")?;
+ }
}
let _sync_point = frame.finish().context("error finishing frame")?;