tiling: Don't block on dead surfaces

This commit is contained in:
Victoria Brekenfeld 2023-08-01 16:49:07 +02:00
parent 3df9f4b6a4
commit d50ad4e85c

View file

@ -1,7 +1,7 @@
use crate::shell::element::CosmicSurface; use crate::shell::element::CosmicSurface;
use smithay::{ use smithay::{
reexports::wayland_server::{backend::ClientId, Client, Resource}, reexports::wayland_server::{backend::ClientId, Client, Resource},
utils::Serial, utils::{IsAlive, Serial},
wayland::{ wayland::{
compositor::{Blocker, BlockerState}, compositor::{Blocker, BlockerState},
seat::WaylandFocus, seat::WaylandFocus,
@ -50,11 +50,12 @@ impl TilingBlocker {
|| self || self
.necessary_acks .necessary_acks
.iter() .iter()
.all(|(surf, serial)| surf.serial_acked(serial)) .all(|(surf, serial)| !surf.alive() || surf.serial_acked(serial))
} }
pub fn is_signaled(&self) -> bool { pub fn is_signaled(&self) -> bool {
self.signaled.load(Ordering::SeqCst) self.signaled.load(Ordering::SeqCst)
|| !self.necessary_acks.iter().any(|(surf, _)| surf.alive())
} }
#[must_use] #[must_use]