xwayland: avoid race condition on new keymap
When the Wayland compositor notifies of a new keymap, for the first X11 client using the keyboard, the last slave keyboard used might still not be set (i.e. “lastSlave” is still NULL). As a result, the new keymap is not applied, and the first X11 window will have the wrong keymap set initially. Apply the new keymap to the master keyboard as long as there's one. Bugzilla: https://bugzilla.gnome.org/show_bug.cgi?id=791383 Signed-off-by: Olivier Fourdan <ofourdan@redhat.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
parent
c720495305
commit
170c959785
|
@ -710,7 +710,7 @@ keyboard_handle_keymap(void *data, struct wl_keyboard *keyboard,
|
|||
XkbDeviceApplyKeymap(xwl_seat->keyboard, xkb);
|
||||
|
||||
master = GetMaster(xwl_seat->keyboard, MASTER_KEYBOARD);
|
||||
if (master && master->lastSlave == xwl_seat->keyboard)
|
||||
if (master)
|
||||
XkbDeviceApplyKeymap(master, xkb);
|
||||
|
||||
XkbFreeKeyboard(xkb, XkbAllComponentsMask, TRUE);
|
||||
|
|
Loading…
Reference in New Issue
Block a user