aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2025-02-27 08:09:44 +0300
committerIvan Molodetskikh <yalterz@gmail.com>2025-02-27 10:38:36 +0300
commit70dcd229cfaa54946163ccf0a1ea0ce595a35cc4 (patch)
tree14eebd26cf0a5a500dedfe5b3097fa60769c4d00
parent26fe4a489a9141ec265b278bae15e8e3896d2a9c (diff)
downloadniri-70dcd229cfaa54946163ccf0a1ea0ce595a35cc4.tar.gz
niri-70dcd229cfaa54946163ccf0a1ea0ce595a35cc4.tar.bz2
niri-70dcd229cfaa54946163ccf0a1ea0ce595a35cc4.zip
Extract encompassing_geo()
-rw-r--r--src/niri.rs14
-rw-r--r--src/render_helpers/mod.rs16
2 files changed, 15 insertions, 15 deletions
diff --git a/src/niri.rs b/src/niri.rs
index f3b6d3c2..bc8d1ad8 100644
--- a/src/niri.rs
+++ b/src/niri.rs
@@ -29,8 +29,7 @@ use smithay::backend::renderer::element::utils::{
select_dmabuf_feedback, Relocate, RelocateRenderElement,
};
use smithay::backend::renderer::element::{
- default_primary_scanout_output_compare, Element as _, Id, Kind, PrimaryScanoutOutput,
- RenderElementStates,
+ default_primary_scanout_output_compare, Id, Kind, PrimaryScanoutOutput, RenderElementStates,
};
use smithay::backend::renderer::gles::GlesRenderer;
use smithay::backend::renderer::sync::SyncPoint;
@@ -145,8 +144,8 @@ use crate::render_helpers::primary_gpu_texture::PrimaryGpuTextureRenderElement;
use crate::render_helpers::renderer::NiriRenderer;
use crate::render_helpers::texture::TextureBuffer;
use crate::render_helpers::{
- render_to_dmabuf, render_to_encompassing_texture, render_to_shm, render_to_texture,
- render_to_vec, shaders, RenderTarget, SplitElements,
+ encompassing_geo, render_to_dmabuf, render_to_encompassing_texture, render_to_shm,
+ render_to_texture, render_to_vec, shaders, RenderTarget, SplitElements,
};
use crate::ui::config_error_notification::ConfigErrorNotification;
use crate::ui::exit_confirm_dialog::ExitConfirmDialog;
@@ -4735,12 +4734,7 @@ impl Niri {
alpha,
RenderTarget::ScreenCapture,
);
- let geo = elements
- .iter()
- .map(|ele| ele.geometry(scale))
- .reduce(|a, b| a.merge(b))
- .unwrap_or_default();
-
+ let geo = encompassing_geo(scale, elements.iter());
let elements = elements.iter().rev().map(|elem| {
RelocateRenderElement::from_element(elem, geo.loc.upscale(-1), Relocate::Relative)
});
diff --git a/src/render_helpers/mod.rs b/src/render_helpers/mod.rs
index bf834d58..36df83dc 100644
--- a/src/render_helpers/mod.rs
+++ b/src/render_helpers/mod.rs
@@ -157,6 +157,16 @@ impl ToRenderElement for BakedBuffer<SolidColorBuffer> {
}
}
+pub fn encompassing_geo(
+ scale: Scale<f64>,
+ elements: impl Iterator<Item = impl RenderElement<GlesRenderer>>,
+) -> Rectangle<i32, Physical> {
+ elements
+ .map(|ele| ele.geometry(scale))
+ .reduce(|a, b| a.merge(b))
+ .unwrap_or_default()
+}
+
pub fn render_to_encompassing_texture(
renderer: &mut GlesRenderer,
scale: Scale<f64>,
@@ -164,11 +174,7 @@ pub fn render_to_encompassing_texture(
fourcc: Fourcc,
elements: &[impl RenderElement<GlesRenderer>],
) -> anyhow::Result<(GlesTexture, SyncPoint, Rectangle<i32, Physical>)> {
- let geo = elements
- .iter()
- .map(|ele| ele.geometry(scale))
- .reduce(|a, b| a.merge(b))
- .unwrap_or_default();
+ let geo = encompassing_geo(scale, elements.iter());
let elements = elements.iter().rev().map(|ele| {
RelocateRenderElement::from_element(ele, geo.loc.upscale(-1), Relocate::Relative)
});