shell/element: Don't render decorations for dead windows
This commit is contained in:
parent
6d0f1b273f
commit
15bbada498
3 changed files with 32 additions and 18 deletions
|
|
@ -606,6 +606,10 @@ impl CosmicMapped {
|
|||
CosmicMappedRenderElement<R>: RenderElement<R>,
|
||||
C: From<CosmicMappedRenderElement<R>>,
|
||||
{
|
||||
if !self.element.alive() {
|
||||
return None;
|
||||
}
|
||||
|
||||
match &self.element {
|
||||
CosmicMappedInternal::Stack(s) => s
|
||||
.shadow_render_element::<R, CosmicMappedRenderElement<R>>(
|
||||
|
|
|
|||
|
|
@ -730,6 +730,13 @@ impl CosmicStack {
|
|||
R::TextureId: Send + Clone + 'static,
|
||||
C: From<CosmicStackRenderElement<R>>,
|
||||
{
|
||||
if !self
|
||||
.0
|
||||
.with_program(|p| p.override_alive.load(Ordering::Acquire))
|
||||
{
|
||||
return Vec::new();
|
||||
}
|
||||
|
||||
let geometry = self
|
||||
.0
|
||||
.with_program(|p| p.windows.lock().unwrap()[p.active.load(Ordering::SeqCst)].geometry())
|
||||
|
|
|
|||
|
|
@ -509,7 +509,7 @@ impl CosmicWindow {
|
|||
elements.push(elem);
|
||||
}
|
||||
|
||||
elements.extend(self.0.with_program(|p| {
|
||||
let window_elements = self.0.with_program(|p| {
|
||||
p.window
|
||||
.render_elements::<R, WaylandSurfaceRenderElement<R>>(
|
||||
renderer,
|
||||
|
|
@ -518,23 +518,26 @@ impl CosmicWindow {
|
|||
alpha,
|
||||
scanout_override,
|
||||
)
|
||||
.into_iter()
|
||||
.map(|elem| {
|
||||
if has_ssd {
|
||||
radii[1] = 0;
|
||||
radii[3] = 0;
|
||||
}
|
||||
if radii.iter().any(|x| *x != 0)
|
||||
&& clip
|
||||
&& ClippedSurfaceRenderElement::will_clip(&elem, scale, geo, radii)
|
||||
{
|
||||
CosmicWindowRenderElement::Clipped(ClippedSurfaceRenderElement::new(
|
||||
renderer, elem, scale, geo, radii,
|
||||
))
|
||||
} else {
|
||||
CosmicWindowRenderElement::Window(elem)
|
||||
}
|
||||
})
|
||||
});
|
||||
if window_elements.is_empty() {
|
||||
return Vec::new();
|
||||
}
|
||||
|
||||
elements.extend(window_elements.into_iter().map(|elem| {
|
||||
if has_ssd {
|
||||
radii[1] = 0;
|
||||
radii[3] = 0;
|
||||
}
|
||||
if radii.iter().any(|x| *x != 0)
|
||||
&& clip
|
||||
&& ClippedSurfaceRenderElement::will_clip(&elem, scale, geo, radii)
|
||||
{
|
||||
CosmicWindowRenderElement::Clipped(ClippedSurfaceRenderElement::new(
|
||||
renderer, elem, scale, geo, radii,
|
||||
))
|
||||
} else {
|
||||
CosmicWindowRenderElement::Window(elem)
|
||||
}
|
||||
}));
|
||||
|
||||
if has_ssd {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue