element: Refactor element acquisition to be push based

This commit is contained in:
Victoria Brekenfeld 2026-03-04 18:57:37 +01:00 • committed by Victoria Brekenfeld
parent 178c6593dc
commit e4c0716951
18 changed files with 1096 additions and 1137 deletions

View file

@ -14,7 +14,7 @@ use smithay::{
use tracing::warn;
use crate::{
backend::render::{RendererRef, element::AsGlowRenderer, wayland::SurfaceRenderElement},
backend::render::{RendererRef, element::AsGlowRenderer},
shell::element::CosmicSurface,
state::{State, advertised_node_for_surface},
};
@ -27,7 +27,8 @@ pub fn screenshot_window(state: &mut State, surface: &CosmicSurface) {
R::Error: Send + Sync + 'static,
{
let bbox = bbox_from_surface_tree(&window.wl_surface().unwrap(), (0, 0));
let elements = window.render_elements::<R, SurfaceRenderElement<R>>(
let mut elements = Vec::new();
window.push_render_elements(
renderer,
(-bbox.loc.x, -bbox.loc.y).into(),
Scale::from(1.0),
@ -36,6 +37,8 @@ pub fn screenshot_window(state: &mut State, surface: &CosmicSurface) {
None,
false,
[0; 4],
&mut |elem| elements.push(elem),
None,
);
// TODO: 10-bit