aboutsummaryrefslogtreecommitdiff
path: root/src/backend/tty.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/tty.rs')
-rw-r--r--src/backend/tty.rs18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/backend/tty.rs b/src/backend/tty.rs
index 81f56102..07b5cd3f 100644
--- a/src/backend/tty.rs
+++ b/src/backend/tty.rs
@@ -402,10 +402,24 @@ impl Tty {
}
let mut device = self.output_device.take().unwrap();
- niri.dmabuf_state
- .destroy_global::<State>(&niri.display_handle, self.dmabuf_global.take().unwrap());
device.gles.unbind_wl_display();
+ let global = self.dmabuf_global.take().unwrap();
+ niri.dmabuf_state
+ .disable_global::<State>(&niri.display_handle, &global);
+ niri.event_loop
+ .insert_source(
+ Timer::from_duration(Duration::from_secs(10)),
+ move |_, _, state| {
+ state
+ .niri
+ .dmabuf_state
+ .destroy_global::<State>(&state.niri.display_handle, global);
+ TimeoutAction::Drop
+ },
+ )
+ .unwrap();
+
niri.event_loop.remove(device.token);
}