diff --git a/input-capture/src/wayland.rs b/input-capture/src/wayland.rs index 6f2e498..22e588e 100644 --- a/input-capture/src/wayland.rs +++ b/input-capture/src/wayland.rs @@ -648,10 +648,16 @@ impl Dispatch for State { capabilities: WEnum::Value(capabilities), } = event { - if capabilities.contains(wl_seat::Capability::Pointer) && state.pointer.is_none() { + if capabilities.contains(wl_seat::Capability::Pointer) { + if let Some(p) = state.pointer.take() { + p.release(); + } state.pointer.replace(seat.get_pointer(qh, ())); } - if capabilities.contains(wl_seat::Capability::Keyboard) && state.keyboard.is_none() { + if capabilities.contains(wl_seat::Capability::Keyboard) { + if let Some(k) = state.keyboard.take() { + k.release(); + } seat.get_keyboard(qh, ()); } }