xwayland/input: Do not ignore leave events
Commit8a5f3ddb2
("set tag on our surface") introduced the use of tags to differentiate our own surfaces, and commita1d14aa8c
("Clear the "xwl-window" tag on unrealize") removed the tags before the surfaces are actually destroyed. Xwayland would then rely on these tags on the surface to decide whether to ignore or to process the Wayland event in various places. However, in doing so, it also checked for the tag on keyboard leave events. As a result, if the keyboard leave events is received after the X11 window is unrealized, keyboard_handle_leave() would not queue the LeaveNotify events for the DIX to proceed, and the key repeat would kick in and repeat the key event indefinitely. To avoid the issue, process events regardless of the tag as before in keyboard_handle_leave(). Signed-off-by: Olivier Fourdan <ofourdan@redhat.com> Fixes:8a5f3ddb2
- "xwayland: set tag on our surface" Closes: https://gitlab.freedesktop.org/xorg/xserver/-/issues/1395 Tested-by: Renan Guilherme Lebre Ramos <japareaggae@gmail.com> Tested-by: Stefan Dirsch <sndirsch@suse.de> Acked-by: Michel Dänzer <mdaenzer@redhat.com>
This commit is contained in:
parent
e5b09f7a2c
commit
459e285573
|
@ -1147,9 +1147,6 @@ keyboard_handle_leave(void *data, struct wl_keyboard *keyboard,
|
|||
struct xwl_seat *xwl_seat = data;
|
||||
uint32_t *k;
|
||||
|
||||
if (surface != NULL && !is_surface_from_xwl_window(surface))
|
||||
return;
|
||||
|
||||
xwl_seat->xwl_screen->serial = serial;
|
||||
|
||||
wl_array_for_each(k, &xwl_seat->keys)
|
||||
|
|
Loading…
Reference in New Issue