diff options
| -rw-r--r-- | src/niri.rs | 13 | ||||
| -rw-r--r-- | src/render_helpers/mod.rs | 12 |
2 files changed, 15 insertions, 10 deletions
diff --git a/src/niri.rs b/src/niri.rs index 189a2b8b..d5b5b76e 100644 --- a/src/niri.rs +++ b/src/niri.rs @@ -2499,6 +2499,7 @@ impl Niri { // FIXME: Hidden / embedded / metadata cursor let elements = elements .get_or_insert_with(|| self.render::<GlesRenderer>(renderer, output, true)); + let elements = elements.iter().rev(); if let Err(err) = render_to_dmabuf(renderer, dmabuf, size, scale, elements) { error!("error rendering to dmabuf: {err:?}"); @@ -2577,8 +2578,9 @@ impl Niri { let scale = Scale::from(output.current_scale().fractional_scale()); let elements = self.render::<GlesRenderer>(renderer, &output, true); + let elements = elements.iter().rev(); - let res = render_to_texture(renderer, size, scale, Fourcc::Abgr8888, &elements); + let res = render_to_texture(renderer, size, scale, Fourcc::Abgr8888, elements); let screenshot = match res { Ok((texture, _)) => texture, Err(err) => { @@ -2607,7 +2609,8 @@ impl Niri { let scale = Scale::from(output.current_scale().fractional_scale()); let elements = self.render::<GlesRenderer>(renderer, output, true); - let pixels = render_to_vec(renderer, size, scale, Fourcc::Abgr8888, &elements)?; + let elements = elements.iter().rev(); + let pixels = render_to_vec(renderer, size, scale, Fourcc::Abgr8888, elements)?; self.save_screenshot(size, pixels) .context("error saving screenshot") @@ -2632,7 +2635,8 @@ impl Niri { scale, 1., ); - let pixels = render_to_vec(renderer, size, scale, Fourcc::Abgr8888, &elements)?; + let elements = elements.iter().rev(); + let pixels = render_to_vec(renderer, size, scale, Fourcc::Abgr8888, elements)?; self.save_screenshot(size, pixels) .context("error saving screenshot") @@ -2730,12 +2734,13 @@ impl Niri { let size = transform.transform_size(size); let elements = self.render::<GlesRenderer>(renderer, &output, include_pointer); + let elements = elements.iter().rev(); let pixels = render_to_vec( renderer, size, Scale::from(f64::from(output_scale)), Fourcc::Abgr8888, - &elements, + elements, )?; let path = make_screenshot_path(&self.config.borrow()) diff --git a/src/render_helpers/mod.rs b/src/render_helpers/mod.rs index 3bf6d618..dbcd1542 100644 --- a/src/render_helpers/mod.rs +++ b/src/render_helpers/mod.rs @@ -15,7 +15,7 @@ pub fn render_to_texture( size: Size<i32, Physical>, scale: Scale<f64>, fourcc: Fourcc, - elements: &[impl RenderElement<GlesRenderer>], + elements: impl Iterator<Item = impl RenderElement<GlesRenderer>>, ) -> anyhow::Result<(GlesTexture, SyncPoint)> { let _span = tracy_client::span!(); @@ -34,7 +34,7 @@ pub fn render_to_texture( .render(size, Transform::Normal) .context("error starting frame")?; - for element in elements.iter().rev() { + for element in elements { let src = element.src(); let dst = element.geometry(scale); @@ -55,7 +55,7 @@ pub fn render_and_download( size: Size<i32, Physical>, scale: Scale<f64>, fourcc: Fourcc, - elements: &[impl RenderElement<GlesRenderer>], + elements: impl Iterator<Item = impl RenderElement<GlesRenderer>>, ) -> anyhow::Result<GlesMapping> { let _span = tracy_client::span!(); @@ -74,7 +74,7 @@ pub fn render_to_vec( size: Size<i32, Physical>, scale: Scale<f64>, fourcc: Fourcc, - elements: &[impl RenderElement<GlesRenderer>], + elements: impl Iterator<Item = impl RenderElement<GlesRenderer>>, ) -> anyhow::Result<Vec<u8>> { let _span = tracy_client::span!(); @@ -92,7 +92,7 @@ pub fn render_to_dmabuf( dmabuf: smithay::backend::allocator::dmabuf::Dmabuf, size: Size<i32, Physical>, scale: Scale<f64>, - elements: &[impl RenderElement<GlesRenderer>], + elements: impl Iterator<Item = impl RenderElement<GlesRenderer>>, ) -> anyhow::Result<()> { let _span = tracy_client::span!(); @@ -103,7 +103,7 @@ pub fn render_to_dmabuf( .render(size, Transform::Normal) .context("error starting frame")?; - for element in elements.iter().rev() { + for element in elements { let src = element.src(); let dst = element.geometry(scale); |
