wayland: preserve xkb_state
on VT switch
On VT switch, the devices are removed, which means for Wayland disabling the keyboard. When the keyboard is disabled, the associated `xkb_state` is freed and recreated whenever the keyboard is re-enabled when switching back to the compositor VT. That means the `xkb_state` for Wayland is lost whereas the same for clutter is kept, which causes to a discrepancy with locked modifiers on VT switch. To avoid that issue, preserve the XKB info only to dispose it when the keyboard is eventually finalized. Closes: https://gitlab.gnome.org/GNOME/mutter/issues/344 https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1185
This commit is contained in:
parent
a5294ce55f
commit
5b30a52bbd
@ -603,7 +603,6 @@ meta_wayland_keyboard_disable (MetaWaylandKeyboard *keyboard)
|
||||
|
||||
meta_wayland_keyboard_end_grab (keyboard);
|
||||
meta_wayland_keyboard_set_focus (keyboard, NULL);
|
||||
meta_wayland_xkb_info_destroy (&keyboard->xkb_info);
|
||||
|
||||
wl_list_remove (&keyboard->resource_list);
|
||||
wl_list_init (&keyboard->resource_list);
|
||||
@ -917,7 +916,18 @@ meta_wayland_keyboard_init (MetaWaylandKeyboard *keyboard)
|
||||
keyboard_handle_focus_surface_destroy;
|
||||
}
|
||||
|
||||
static void
|
||||
meta_wayland_keyboard_finalize (GObject *object)
|
||||
{
|
||||
MetaWaylandKeyboard *keyboard = META_WAYLAND_KEYBOARD (object);
|
||||
|
||||
meta_wayland_xkb_info_destroy (&keyboard->xkb_info);
|
||||
}
|
||||
|
||||
static void
|
||||
meta_wayland_keyboard_class_init (MetaWaylandKeyboardClass *klass)
|
||||
{
|
||||
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||
|
||||
object_class->finalize = meta_wayland_keyboard_finalize;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user