aboutsummaryrefslogtreecommitdiff
path: root/src/render_helpers
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2025-03-16 08:31:23 +0300
committerIvan Molodetskikh <yalterz@gmail.com>2025-03-16 08:32:45 +0300
commit287480b541e85b13ff6419d372f82fa8e42c603c (patch)
tree0e89a447481d10d15291138de68c5bbe6b994aff /src/render_helpers
parenta022fedd51d00bbb9f3421f66e988a1b6697288d (diff)
downloadniri-287480b541e85b13ff6419d372f82fa8e42c603c.tar.gz
niri-287480b541e85b13ff6419d372f82fa8e42c603c.tar.bz2
niri-287480b541e85b13ff6419d372f82fa8e42c603c.zip
Keep buffer size when switching dynamic cast to Nothing
Otherwise, we won't actually clear it because it'll become Pending.
Diffstat (limited to 'src/render_helpers')
-rw-r--r--src/render_helpers/mod.rs13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/render_helpers/mod.rs b/src/render_helpers/mod.rs
index 369ee5c2..d8799094 100644
--- a/src/render_helpers/mod.rs
+++ b/src/render_helpers/mod.rs
@@ -309,6 +309,19 @@ pub fn render_to_shm(
.context("expected shm buffer, but didn't get one")?
}
+pub fn clear_dmabuf(renderer: &mut GlesRenderer, mut dmabuf: Dmabuf) -> anyhow::Result<SyncPoint> {
+ let size = dmabuf.size();
+ let size = size.to_logical(1, Transform::Normal).to_physical(1);
+ let mut target = renderer.bind(&mut dmabuf).context("error binding dmabuf")?;
+ let mut frame = renderer
+ .render(&mut target, size, Transform::Normal)
+ .context("error starting frame")?;
+ frame
+ .clear(Color32F::TRANSPARENT, &[Rectangle::from_size(size)])
+ .context("error clearing")?;
+ frame.finish().context("error finishing frame")
+}
+
fn render_elements(
renderer: &mut GlesRenderer,
target: &mut GlesTarget,