]> git.pld-linux.org Git - packages/xorg-lib-libX11.git/blobdiff - revert-update-xputbackevent.patch
upstream revert for change causing regressions; rel 2
[packages/xorg-lib-libX11.git] / revert-update-xputbackevent.patch
diff --git a/revert-update-xputbackevent.patch b/revert-update-xputbackevent.patch
new file mode 100644 (file)
index 0000000..d249457
--- /dev/null
@@ -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
+
This page took 0.105785 seconds and 4 git commands to generate.