Skip to content

Commit

Permalink
Extract encompassing_geo()
Browse files Browse the repository at this point in the history
  • Loading branch information
YaLTeR committed Feb 27, 2025
1 parent 26fe4a4 commit 70dcd22
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 15 deletions.
14 changes: 4 additions & 10 deletions src/niri.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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)
});
Expand Down
16 changes: 11 additions & 5 deletions src/render_helpers/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -157,18 +157,24 @@ 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>,
transform: Transform,
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)
});
Expand Down

0 comments on commit 70dcd22

Please sign in to comment.