tree: destroy layer shell surfaces when output is disconnected
This commit is contained in:
parent
ae991b9038
commit
d67eefdaf0
2 changed files with 11 additions and 2 deletions
|
|
@ -126,8 +126,7 @@ impl ZwlrLayerSurfaceV1 {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(dead_code)]
|
pub fn send_closed(&self) {
|
||||||
fn send_closed(&self) {
|
|
||||||
self.client.event(Closed { self_id: self.id });
|
self.client.event(Closed { self_id: self.id });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -228,6 +228,16 @@ impl ConnectorHandler {
|
||||||
self.data.connected.set(false);
|
self.data.connected.set(false);
|
||||||
self.state.outputs.remove(&self.id);
|
self.state.outputs.remove(&self.id);
|
||||||
on.lock_surface.take();
|
on.lock_surface.take();
|
||||||
|
{
|
||||||
|
let mut surfaces = vec!();
|
||||||
|
for layer in &on.layers {
|
||||||
|
surfaces.extend(layer.iter());
|
||||||
|
}
|
||||||
|
for surface in surfaces {
|
||||||
|
surface.destroy_node();
|
||||||
|
surface.send_closed();
|
||||||
|
}
|
||||||
|
}
|
||||||
let mut target_is_dummy = false;
|
let mut target_is_dummy = false;
|
||||||
let target = match self.state.outputs.lock().values().next() {
|
let target = match self.state.outputs.lock().values().next() {
|
||||||
Some(o) => o.node.clone(),
|
Some(o) => o.node.clone(),
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue