From d77aac1afa0c61c26e39f36c5b38f026af884986 Mon Sep 17 00:00:00 2001 From: Ivan Molodetskikh Date: Sat, 27 Jan 2024 10:50:40 +0400 Subject: Fix damage when rendering to texture --- src/niri.rs | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) (limited to 'src') 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")?; -- cgit