aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2024-05-05 11:14:46 +0400
committerIvan Molodetskikh <yalterz@gmail.com>2024-05-05 11:14:46 +0400
commitdf0ee996ee0c70d4fb0fb853535e1563da3c0d09 (patch)
treee46aac85c0a700a72930789fe33f6e69e42f898c
parent65b9c74f624b4a78c2247135bf1a96dcac0bd009 (diff)
downloadniri-df0ee996ee0c70d4fb0fb853535e1563da3c0d09.tar.gz
niri-df0ee996ee0c70d4fb0fb853535e1563da3c0d09.tar.bz2
niri-df0ee996ee0c70d4fb0fb853535e1563da3c0d09.zip
Don't unwrap client
If Smithay posts an error, client will become None immediately, even while the surface may still receive events.
-rw-r--r--src/handlers/compositor.rs26
1 files changed, 14 insertions, 12 deletions
diff --git a/src/handlers/compositor.rs b/src/handlers/compositor.rs
index 37903a20..0bdd7690 100644
--- a/src/handlers/compositor.rs
+++ b/src/handlers/compositor.rs
@@ -59,19 +59,21 @@ impl CompositorHandler for State {
});
if let Some(dmabuf) = maybe_dmabuf {
if let Ok((blocker, source)) = dmabuf.generate_blocker(Interest::READ) {
- let client = surface.client().unwrap();
- let res = state
- .niri
- .event_loop
- .insert_source(source, move |_, _, state| {
- let display_handle = state.niri.display_handle.clone();
+ if let Some(client) = surface.client() {
+ let res =
state
- .client_compositor_state(&client)
- .blocker_cleared(state, &display_handle);
- Ok(())
- });
- if res.is_ok() {
- add_blocker(surface, blocker);
+ .niri
+ .event_loop
+ .insert_source(source, move |_, _, state| {
+ let display_handle = state.niri.display_handle.clone();
+ state
+ .client_compositor_state(&client)
+ .blocker_cleared(state, &display_handle);
+ Ok(())
+ });
+ if res.is_ok() {
+ add_blocker(surface, blocker);
+ }
}
}
}