Fix XPutBackEvent() issues (#2161020)
This commit is contained in:
parent
732d5381a6
commit
349f1f152d
@ -0,0 +1,57 @@
|
|||||||
|
From 88399e01be679bfcc9a5e8922ffe2c47f0e56dee Mon Sep 17 00:00:00 2001
|
||||||
|
From: Yuxuan Shui <yshuiv7@gmail.com>
|
||||||
|
Date: Tue, 3 Jan 2023 15:09:28 +0000
|
||||||
|
Subject: [PATCH libX11] Revert "Update XPutBackEvent() to support clients that
|
||||||
|
put back unpadded events"
|
||||||
|
|
||||||
|
This reverts commit d6d6cba90215d323567fef13d6565756c9956f60.
|
||||||
|
|
||||||
|
The reverted commit intended to fix the problem where an unpadded X
|
||||||
|
event struct is passed into XPutBackEvent, by creating a padded struct
|
||||||
|
with _XEventToWire and _XWireToEvent. However, _XWireToEvent updates the
|
||||||
|
last sequence number in Display, which may cause xlib to complain about
|
||||||
|
lost sequence numbers.
|
||||||
|
|
||||||
|
IMO, the problem that commit tried to solve is a bug in the client
|
||||||
|
library, and workaround it inside Xlib is bad practice, especially given
|
||||||
|
the problem it caused. Plus, the offender cited in the original commit
|
||||||
|
message, freeglut, has already fixed this problem.
|
||||||
|
|
||||||
|
Fixes: #176 #174
|
||||||
|
|
||||||
|
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
|
||||||
|
---
|
||||||
|
src/PutBEvent.c | 15 +--------------
|
||||||
|
1 file changed, 1 insertion(+), 14 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/PutBEvent.c b/src/PutBEvent.c
|
||||||
|
index f7b74b31..0f9df342 100644
|
||||||
|
--- a/src/PutBEvent.c
|
||||||
|
+++ b/src/PutBEvent.c
|
||||||
|
@@ -79,22 +79,9 @@ XPutBackEvent (
|
||||||
|
register XEvent *event)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
- xEvent wire = {0};
|
||||||
|
- XEvent lib = {0};
|
||||||
|
- Status (*fp)(Display *, XEvent *, xEvent *);
|
||||||
|
- int type = event->type & 0177;
|
||||||
|
|
||||||
|
LockDisplay(dpy);
|
||||||
|
- fp = dpy->wire_vec[type];
|
||||||
|
- if (fp == NULL)
|
||||||
|
- fp = _XEventToWire;
|
||||||
|
- ret = (*fp)(dpy, event, &wire);
|
||||||
|
- if (ret)
|
||||||
|
- {
|
||||||
|
- ret = (*dpy->event_vec[type])(dpy, &lib, &wire);
|
||||||
|
- if (ret)
|
||||||
|
- ret = _XPutBackEvent(dpy, &lib);
|
||||||
|
- }
|
||||||
|
+ ret = _XPutBackEvent(dpy, event);
|
||||||
|
UnlockDisplay(dpy);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.39.0
|
||||||
|
|
@ -5,7 +5,7 @@
|
|||||||
Summary: Core X11 protocol client library
|
Summary: Core X11 protocol client library
|
||||||
Name: libX11
|
Name: libX11
|
||||||
Version: 1.8.3
|
Version: 1.8.3
|
||||||
Release: 1%{?gitdate:.%{gitdate}git%{gitversion}}%{?dist}
|
Release: 2%{?gitdate:.%{gitdate}git%{gitversion}}%{?dist}
|
||||||
License: MIT
|
License: MIT
|
||||||
URL: http://www.x.org
|
URL: http://www.x.org
|
||||||
|
|
||||||
@ -19,6 +19,7 @@ Source0: https://xorg.freedesktop.org/archive/individual/lib/%{name}-%{version}.
|
|||||||
|
|
||||||
|
|
||||||
Patch2: dont-forward-keycode-0.patch
|
Patch2: dont-forward-keycode-0.patch
|
||||||
|
Patch3: 0001-Revert-Update-XPutBackEvent-to-support-clients-that-.patch
|
||||||
|
|
||||||
BuildRequires: make
|
BuildRequires: make
|
||||||
BuildRequires: xorg-x11-util-macros >= 1.11
|
BuildRequires: xorg-x11-util-macros >= 1.11
|
||||||
@ -122,6 +123,9 @@ make %{?_smp_mflags} check
|
|||||||
%{_mandir}/man5/*.5*
|
%{_mandir}/man5/*.5*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon Jan 16 2023 Peter Hutterer <peter.hutterer@redhat.com> - 1.8.3-2
|
||||||
|
- Fix XPutBackEvent() issues (#2161020)
|
||||||
|
|
||||||
* Fri Jan 06 2023 Peter Hutterer <peter.hutterer@redhat.com> - 1.8.3-1
|
* Fri Jan 06 2023 Peter Hutterer <peter.hutterer@redhat.com> - 1.8.3-1
|
||||||
- libX11 1.8.3
|
- libX11 1.8.3
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user