diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/niri.rs | 20 |
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")?; |
