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>,
|
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>>(
|
||||||
|
|
|
||||||
|
|
@ -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())
|
||||||
|
|
|
||||||
|
|
@ -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,23 +518,26 @@ impl CosmicWindow {
|
||||||
alpha,
|
alpha,
|
||||||
scanout_override,
|
scanout_override,
|
||||||
)
|
)
|
||||||
.into_iter()
|
});
|
||||||
.map(|elem| {
|
if window_elements.is_empty() {
|
||||||
if has_ssd {
|
return Vec::new();
|
||||||
radii[1] = 0;
|
}
|
||||||
radii[3] = 0;
|
|
||||||
}
|
elements.extend(window_elements.into_iter().map(|elem| {
|
||||||
if radii.iter().any(|x| *x != 0)
|
if has_ssd {
|
||||||
&& clip
|
radii[1] = 0;
|
||||||
&& ClippedSurfaceRenderElement::will_clip(&elem, scale, geo, radii)
|
radii[3] = 0;
|
||||||
{
|
}
|
||||||
CosmicWindowRenderElement::Clipped(ClippedSurfaceRenderElement::new(
|
if radii.iter().any(|x| *x != 0)
|
||||||
renderer, elem, scale, geo, radii,
|
&& clip
|
||||||
))
|
&& ClippedSurfaceRenderElement::will_clip(&elem, scale, geo, radii)
|
||||||
} else {
|
{
|
||||||
CosmicWindowRenderElement::Window(elem)
|
CosmicWindowRenderElement::Clipped(ClippedSurfaceRenderElement::new(
|
||||||
}
|
renderer, elem, scale, geo, radii,
|
||||||
})
|
))
|
||||||
|
} else {
|
||||||
|
CosmicWindowRenderElement::Window(elem)
|
||||||
|
}
|
||||||
}));
|
}));
|
||||||
|
|
||||||
if has_ssd {
|
if has_ssd {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue