linux: Fix crash when NoKeymap event is received on Wayland (#24379)

Closes #24139

For weird reasons, Sway on few linux distoros sends `NoKeymap` event when
switching windows. Zed crashes due to assertion on this event to be `XkbV1`.

To fix this, we ignore `NoKeymap` event instead crashing Zed.

Release Notes:

- Fixed a crash in Wayland-based compositors like Sway when switching windows via the keyboard.
This commit is contained in:
smit 2025-02-07 07:01:46 +00:00 committed by GitHub
parent 5ffacb9ca5
commit 6534e0bafd
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1132,11 +1132,10 @@ impl Dispatch<wl_keyboard::WlKeyboard, ()> for WaylandClientStatePtr {
size,
..
} => {
assert_eq!(
format,
wl_keyboard::KeymapFormat::XkbV1,
"Unsupported keymap format"
);
if format != wl_keyboard::KeymapFormat::XkbV1 {
log::error!("Received keymap format {:?}, expected XkbV1", format);
return;
}
let xkb_context = xkb::Context::new(xkb::CONTEXT_NO_FLAGS);
let keymap = unsafe {
xkb::Keymap::new_from_fd(