aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/niri.rs21
1 files changed, 15 insertions, 6 deletions
diff --git a/src/niri.rs b/src/niri.rs
index cfe89532..6e3f54a3 100644
--- a/src/niri.rs
+++ b/src/niri.rs
@@ -1060,12 +1060,7 @@ impl Niri {
let size = output.current_mode().unwrap().size;
let elements = self.render(renderer, output);
-
- let mapping = render_and_download(renderer, size, &elements).context("error rendering")?;
- let copy = renderer
- .map_texture(&mapping)
- .context("error mapping texture")?;
- let pixels = copy.to_vec();
+ let pixels = render_to_vec(renderer, size, &elements)?;
let path = make_screenshot_path().context("error making screenshot path")?;
debug!("saving screenshot to {path:?}");
@@ -1145,6 +1140,20 @@ fn render_and_download(
Ok(mapping)
}
+fn render_to_vec(
+ renderer: &mut GlesRenderer,
+ size: Size<i32, Physical>,
+ elements: &[OutputRenderElements<GlesRenderer>],
+) -> anyhow::Result<Vec<u8>> {
+ let _span = tracy_client::span!("render_to_vec");
+
+ let mapping = render_and_download(renderer, size, elements).context("error rendering")?;
+ let copy = renderer
+ .map_texture(&mapping)
+ .context("error mapping texture")?;
+ Ok(copy.to_vec())
+}
+
fn render_to_dmabuf(
renderer: &mut GlesRenderer,
dmabuf: Dmabuf,