summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--revert-update-xputbackevent.patch57
-rw-r--r--xorg-lib-libX11.spec4
2 files changed, 60 insertions, 1 deletions
diff --git a/revert-update-xputbackevent.patch b/revert-update-xputbackevent.patch
new file mode 100644
index 0000000..d249457
--- /dev/null
+++ b/revert-update-xputbackevent.patch
@@ -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] 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;
+ }
+--
+GitLab
+
diff --git a/xorg-lib-libX11.spec b/xorg-lib-libX11.spec
index 8d6a24b..61f2672 100644
--- a/xorg-lib-libX11.spec
+++ b/xorg-lib-libX11.spec
@@ -6,13 +6,14 @@ Summary: Core X11 protocol client library
Summary(pl.UTF-8): Podstawowa biblioteka kliencka protokołu X11
Name: xorg-lib-libX11
Version: 1.8.3
-Release: 1
+Release: 2
License: MIT
Group: X11/Libraries
Source0: https://xorg.freedesktop.org/releases/individual/lib/libX11-%{version}.tar.xz
# Source0-md5: f4855944f068d8a623c82c4162747fa3
# sync locales and their encodings with glibc
Patch0: %{name}-glibc-locale_sync.patch
+Patch1: revert-update-xputbackevent.patch
URL: https://xorg.freedesktop.org/
BuildRequires: autoconf >= 2.60
BuildRequires: automake
@@ -104,6 +105,7 @@ Pakiet zawiera statyczną bibliotekę libX11.
# do we need this patch for anything? (aka is any pld user in need for these new locales)
# https://bugs.freedesktop.org/show_bug.cgi?id=7415
%patch0 -p1
+%patch1 -p1
# support __libmansuffix__ and __filemansuffix__ with "x" suffix (per FHS 2.3)
%{__sed} -i -e 's,\.so man__libmansuffix__/,.so man3/,' \