diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2025-02-27 08:09:44 +0300 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2025-02-27 10:38:36 +0300 |
| commit | 70dcd229cfaa54946163ccf0a1ea0ce595a35cc4 (patch) | |
| tree | 14eebd26cf0a5a500dedfe5b3097fa60769c4d00 /src | |
| parent | 26fe4a489a9141ec265b278bae15e8e3896d2a9c (diff) | |
| download | niri-70dcd229cfaa54946163ccf0a1ea0ce595a35cc4.tar.gz niri-70dcd229cfaa54946163ccf0a1ea0ce595a35cc4.tar.bz2 niri-70dcd229cfaa54946163ccf0a1ea0ce595a35cc4.zip | |
Extract encompassing_geo()
Diffstat (limited to 'src')
| -rw-r--r-- | src/niri.rs | 14 | ||||
| -rw-r--r-- | src/render_helpers/mod.rs | 16 |
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) }); |
