shell/element: Don't render decorations for dead windows

This commit is contained in:
Victoria Brekenfeld 2025-12-17 18:11:51 +01:00 • committed by Victoria Brekenfeld
parent 6d0f1b273f
commit 15bbada498
3 changed files with 32 additions and 18 deletions

View file

@ -606,6 +606,10 @@ impl CosmicMapped {
CosmicMappedRenderElement<R>: RenderElement<R>, CosmicMappedRenderElement<R>: RenderElement<R>,
C: From<CosmicMappedRenderElement<R>>, C: From<CosmicMappedRenderElement<R>>,
{ {
if !self.element.alive() {
return None;
}
match &self.element { match &self.element {
CosmicMappedInternal::Stack(s) => s CosmicMappedInternal::Stack(s) => s
.shadow_render_element::<R, CosmicMappedRenderElement<R>>( .shadow_render_element::<R, CosmicMappedRenderElement<R>>(

View file

@ -730,6 +730,13 @@ impl CosmicStack {
R::TextureId: Send + Clone + 'static, R::TextureId: Send + Clone + 'static,
C: From<CosmicStackRenderElement<R>>, C: From<CosmicStackRenderElement<R>>,
{ {
if !self
.0
.with_program(|p| p.override_alive.load(Ordering::Acquire))
{
return Vec::new();
}
let geometry = self let geometry = self
.0 .0
.with_program(|p| p.windows.lock().unwrap()[p.active.load(Ordering::SeqCst)].geometry()) .with_program(|p| p.windows.lock().unwrap()[p.active.load(Ordering::SeqCst)].geometry())

View file

@ -509,7 +509,7 @@ impl CosmicWindow {
elements.push(elem); elements.push(elem);
} }
elements.extend(self.0.with_program(|p| { let window_elements = self.0.with_program(|p| {
p.window p.window
.render_elements::<R, WaylandSurfaceRenderElement<R>>( .render_elements::<R, WaylandSurfaceRenderElement<R>>(
renderer, renderer,
@ -518,8 +518,12 @@ impl CosmicWindow {
alpha, alpha,
scanout_override, scanout_override,
) )
.into_iter() });
.map(|elem| { if window_elements.is_empty() {
return Vec::new();
}
elements.extend(window_elements.into_iter().map(|elem| {
if has_ssd { if has_ssd {
radii[1] = 0; radii[1] = 0;
radii[3] = 0; radii[3] = 0;
@ -534,7 +538,6 @@ impl CosmicWindow {
} else { } else {
CosmicWindowRenderElement::Window(elem) CosmicWindowRenderElement::Window(elem)
} }
})
})); }));
if has_ssd { if has_ssd {