From df0ee996ee0c70d4fb0fb853535e1563da3c0d09 Mon Sep 17 00:00:00 2001 From: Ivan Molodetskikh Date: Sun, 5 May 2024 11:14:46 +0400 Subject: Don't unwrap client If Smithay posts an error, client will become None immediately, even while the surface may still receive events. --- src/handlers/compositor.rs | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) (limited to 'src') 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); + } } } } -- cgit