aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/niri.rs13
-rw-r--r--src/render_helpers/mod.rs12
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);