Fix XPutBackEvent() issues (#2161020)

This commit is contained in:
Peter Hutterer 2023-01-16 14:05:37 +10:00
parent 732d5381a6
commit 349f1f152d
2 changed files with 62 additions and 1 deletions

View File

@ -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

View File

@ -5,7 +5,7 @@
Summary: Core X11 protocol client library
Name: libX11
Version: 1.8.3
Release: 1%{?gitdate:.%{gitdate}git%{gitversion}}%{?dist}
Release: 2%{?gitdate:.%{gitdate}git%{gitversion}}%{?dist}
License: MIT
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
Patch3: 0001-Revert-Update-XPutBackEvent-to-support-clients-that-.patch
BuildRequires: make
BuildRequires: xorg-x11-util-macros >= 1.11
@ -122,6 +123,9 @@ make %{?_smp_mflags} check
%{_mandir}/man5/*.5*
%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
- libX11 1.8.3