diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2025-03-16 08:31:23 +0300 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2025-03-16 08:32:45 +0300 |
| commit | 287480b541e85b13ff6419d372f82fa8e42c603c (patch) | |
| tree | 0e89a447481d10d15291138de68c5bbe6b994aff /src/render_helpers | |
| parent | a022fedd51d00bbb9f3421f66e988a1b6697288d (diff) | |
| download | niri-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.rs | 13 |
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, |
