mirror of
https://github.com/niri-wm/niri.git
synced 2026-06-21 02:01:55 +07:00
Extract encompassing_geo()
This commit is contained in:
+4
-10
@@ -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)
|
||||
});
|
||||
|
||||
@@ -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)
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user