mirror of
https://github.com/niri-wm/niri.git
synced 2026-06-24 02:01:18 +07:00
Change render functions to accept iterators
This commit is contained in:
+9
-4
@@ -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())
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user