From 135c2fa7124d80424755e8d6b951f2ded916d8b5d1fb695d4012911727d37848 Mon Sep 17 00:00:00 2001 From: Stefan Dirsch Date: Mon, 24 Oct 2022 14:06:45 +0000 Subject: [PATCH] - U_Do-not-ignore-leave-events.patch * fixes xwayland issue#1397, issue#1395 OBS-URL: https://build.opensuse.org/package/show/X11:XOrg/xwayland?expand=0&rev=34 --- U_Do-not-ignore-leave-events.patch | 48 ++++++++++++++++++++++++++++++ xwayland.changes | 6 ++++ xwayland.spec | 1 + 3 files changed, 55 insertions(+) create mode 100644 U_Do-not-ignore-leave-events.patch diff --git a/U_Do-not-ignore-leave-events.patch b/U_Do-not-ignore-leave-events.patch new file mode 100644 index 0000000..34d7124 --- /dev/null +++ b/U_Do-not-ignore-leave-events.patch @@ -0,0 +1,48 @@ +From bd39c17e2398f82910978ed55ac772c67d8f940a Mon Sep 17 00:00:00 2001 +From: Olivier Fourdan +Date: Mon, 24 Oct 2022 09:24:01 +0200 +Subject: [PATCH] xwayland/input: Do not ignore leave events + +Commit 8a5f3ddb2 ("set tag on our surface") introduced the use of tags +to differentiate our own surfaces, and commit a1d14aa8c ("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 +Fixes: 8a5f3ddb2 - "xwayland: set tag on our surface" +Closes: https://gitlab.freedesktop.org/xorg/xserver/-/issues/1395 +--- + hw/xwayland/xwayland-input.c | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/hw/xwayland/xwayland-input.c b/hw/xwayland/xwayland-input.c +index 240eb0139..9eda1ef71 100644 +--- a/hw/xwayland/xwayland-input.c ++++ b/hw/xwayland/xwayland-input.c +@@ -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) +-- +GitLab + diff --git a/xwayland.changes b/xwayland.changes index cf13145..aed5a1a 100644 --- a/xwayland.changes +++ b/xwayland.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Mon Oct 24 13:50:22 UTC 2022 - Stefan Dirsch + +- U_Do-not-ignore-leave-events.patch + * fixes xwayland issue#1397, issue#1395 + ------------------------------------------------------------------- Thu Oct 20 11:50:17 UTC 2022 - Stefan Dirsch diff --git a/xwayland.spec b/xwayland.spec index fef0e92..1271317 100644 --- a/xwayland.spec +++ b/xwayland.spec @@ -33,6 +33,7 @@ Group: System/X11/Servers/XF86_4 Source0: %{url}/archive/individual/xserver/%{name}-%{version}.tar.xz Source1: %{url}/archive/individual/xserver/%{name}-%{version}.tar.xz.sig Source2: xwayland.keyring +Patch0: U_Do-not-ignore-leave-events.patch BuildRequires: meson BuildRequires: ninja BuildRequires: pkgconfig