diff options
author | V3n3RiX <venerix@koprulu.sector> | 2022-09-09 21:01:27 +0100 |
---|---|---|
committer | V3n3RiX <venerix@koprulu.sector> | 2022-09-09 21:01:27 +0100 |
commit | 154652ae6a64843d4551cef2f58544f38e5100eb (patch) | |
tree | 94e98a5ea906fcc52fe917c9e87178675f9cc66d /x11-libs | |
parent | d674e773afec7568a84545d10eb3e4100aaf4d9f (diff) |
Revert "x11-libs/libX11 : bugfix ( https://gitlab.freedesktop.org/xorg/lib/libx11/-/issues/157 )"
This reverts commit d674e773afec7568a84545d10eb3e4100aaf4d9f.
Diffstat (limited to 'x11-libs')
-rw-r--r-- | x11-libs/libX11/Manifest | 1 | ||||
-rw-r--r-- | x11-libs/libX11/files/150.patch | 175 | ||||
-rw-r--r-- | x11-libs/libX11/libX11-1.8.1-r10.ebuild | 46 |
3 files changed, 0 insertions, 222 deletions
diff --git a/x11-libs/libX11/Manifest b/x11-libs/libX11/Manifest deleted file mode 100644 index 5a548468..00000000 --- a/x11-libs/libX11/Manifest +++ /dev/null @@ -1 +0,0 @@ -DIST libX11-1.8.1.tar.xz 1818460 BLAKE2B 7602b4d8c65ea3160f81096b4e022b5462e49d96b36dee70fe06e972329dc9d70bbd462e2079da03ba5647d7a72bf03e29aab23c60bcc206c95d770655622226 SHA512 2e36d2c47519e0cb2697f588c0ccdf73fbe75c2163f0855c78f7052dc9e920bca081f9d5e39c707a14067f101faef74fc758c8862eeba675b1535b43119d533a diff --git a/x11-libs/libX11/files/150.patch b/x11-libs/libX11/files/150.patch deleted file mode 100644 index 1c3b6bd7..00000000 --- a/x11-libs/libX11/files/150.patch +++ /dev/null @@ -1,175 +0,0 @@ -From 8808d16b0bc53e6c1e235d2fc714145b9adcf626 Mon Sep 17 00:00:00 2001 -From: Adam Jackson <ajax@redhat.com> -Date: Fri, 5 Aug 2022 15:19:08 -0400 -Subject: [PATCH] Allow X*IfEvent() to reenter libX11 - -The documentation for this family of functions very clearly says not to -call into xlib in your predicate function, but historically single -threaded apps could get away with it just fine, and now that we've -forced thread-safety on the world such apps will now deadlock instead. -That's not an acceptable regression even if the app is technically -broken. This has been reported with XFCE and FVWM, and Motif's -cut-and-paste code has the same bug by inspection, so this does need to -be addressed. - -This change nerfs LockDisplay/UnlockDisplay while inside the critical -bit of an IfEvent function. This is still safe in the sense that the -display remains locked and no other thread should be able to change it -from under us, but the loop that scans the event queue might not be -robust against it being modified as a side effect of protocol emitted by -the predicate callback. But that's not new, non-XInitThreads'd xlib -would have the same caveat. - -Closes: xorg/lib/libx11#157 ---- - include/X11/Xlibint.h | 1 + - src/ChkIfEv.c | 3 +++ - src/IfEvent.c | 2 ++ - src/OpenDis.c | 1 + - src/PeekIfEv.c | 2 ++ - src/locking.c | 30 ++++++++++++++++++++++++++++++ - 6 files changed, 39 insertions(+) - -diff --git a/include/X11/Xlibint.h b/include/X11/Xlibint.h -index 6d880a65..46c9ac11 100644 ---- a/include/X11/Xlibint.h -+++ b/include/X11/Xlibint.h -@@ -207,6 +207,7 @@ struct _XDisplay - - XIOErrorExitHandler exit_handler; - void *exit_handler_data; -+ Bool in_ifevent; - }; - - #define XAllocIDs(dpy,ids,n) (*(dpy)->idlist_alloc)(dpy,ids,n) -diff --git a/src/ChkIfEv.c b/src/ChkIfEv.c -index 876a850e..327b5eaf 100644 ---- a/src/ChkIfEv.c -+++ b/src/ChkIfEv.c -@@ -50,6 +50,7 @@ Bool XCheckIfEvent ( - int n; /* time through count */ - - LockDisplay(dpy); -+ dpy->in_ifevent = True; - prev = NULL; - for (n = 3; --n >= 0;) { - for (qelt = prev ? prev->next : dpy->head; -@@ -60,6 +61,7 @@ Bool XCheckIfEvent ( - *event = qelt->event; - _XDeq(dpy, prev, qelt); - _XStoreEventCookie(dpy, event); -+ dpy->in_ifevent = False; - UnlockDisplay(dpy); - return True; - } -@@ -78,6 +80,7 @@ Bool XCheckIfEvent ( - /* another thread has snatched this event */ - prev = NULL; - } -+ dpy->in_ifevent = False; - UnlockDisplay(dpy); - return False; - } -diff --git a/src/IfEvent.c b/src/IfEvent.c -index ead93dca..a0aed7e3 100644 ---- a/src/IfEvent.c -+++ b/src/IfEvent.c -@@ -49,6 +49,7 @@ XIfEvent ( - unsigned long qe_serial = 0; - - LockDisplay(dpy); -+ dpy->in_ifevent = True; - prev = NULL; - while (1) { - for (qelt = prev ? prev->next : dpy->head; -@@ -59,6 +60,7 @@ XIfEvent ( - *event = qelt->event; - _XDeq(dpy, prev, qelt); - _XStoreEventCookie(dpy, event); -+ dpy->in_ifevent = False; - UnlockDisplay(dpy); - return 0; - } -diff --git a/src/OpenDis.c b/src/OpenDis.c -index 5017b040..e1bc2a30 100644 ---- a/src/OpenDis.c -+++ b/src/OpenDis.c -@@ -189,6 +189,7 @@ XOpenDisplay ( - dpy->xcmisc_opcode = 0; - dpy->xkb_info = NULL; - dpy->exit_handler_data = NULL; -+ dpy->in_ifevent = False; - - /* - * Setup other information in this display structure. -diff --git a/src/PeekIfEv.c b/src/PeekIfEv.c -index 207cd119..c4e8af0d 100644 ---- a/src/PeekIfEv.c -+++ b/src/PeekIfEv.c -@@ -50,6 +50,7 @@ XPeekIfEvent ( - unsigned long qe_serial = 0; - - LockDisplay(dpy); -+ dpy->in_ifevent = True; - prev = NULL; - while (1) { - for (qelt = prev ? prev->next : dpy->head; -@@ -63,6 +64,7 @@ XPeekIfEvent ( - _XStoreEventCookie(dpy, ©); - *event = copy; - } -+ dpy->in_ifevent = False; - UnlockDisplay(dpy); - return 0; - } -diff --git a/src/locking.c b/src/locking.c -index ea5000e1..36530691 100644 ---- a/src/locking.c -+++ b/src/locking.c -@@ -452,6 +452,32 @@ static void _XDisplayLockWait( - } - } - -+static void _XLockDisplay( -+ Display *dpy -+ XTHREADS_FILE_LINE_ARGS -+ ); -+ -+static void _XIfEventLockDisplay( -+ Display *dpy -+ XTHREADS_FILE_LINE_ARGS -+ ) -+{ -+ /* assert(dpy->in_ifevent); */ -+} -+ -+static void _XIfEventUnlockDisplay( -+ Display *dpy -+ XTHREADS_FILE_LINE_ARGS -+ ) -+{ -+ if (dpy->in_ifevent) -+ return; -+ -+ dpy->lock_fns->lock_display = _XLockDisplay; -+ dpy->lock_fns->unlock_display = _XUnlockDisplay; -+ UnlockDisplay(dpy); -+} -+ - static void _XLockDisplay( - Display *dpy - XTHREADS_FILE_LINE_ARGS -@@ -478,6 +504,10 @@ static void _XLockDisplay( - #endif - _XIDHandler(dpy); - _XSeqSyncFunction(dpy); -+ if (dpy->in_ifevent) { -+ dpy->lock_fns->lock_display = _XIfEventLockDisplay; -+ dpy->lock_fns->unlock_display = _XIfEventUnlockDisplay; -+ } - } - - /* --- -GitLab - diff --git a/x11-libs/libX11/libX11-1.8.1-r10.ebuild b/x11-libs/libX11/libX11-1.8.1-r10.ebuild deleted file mode 100644 index 7e1cbddf..00000000 --- a/x11-libs/libX11/libX11-1.8.1-r10.ebuild +++ /dev/null @@ -1,46 +0,0 @@ -# Copyright 1999-2022 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=7 - -XORG_DOC=doc -XORG_MULTILIB=yes -XORG_TARBALL_SUFFIX=xz -inherit toolchain-funcs xorg-3 - -# Note: please bump this with x11-misc/compose-tables -DESCRIPTION="X.Org X11 library" - -KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos" -IUSE="test" -RESTRICT="!test? ( test )" - -RDEPEND=" - >=x11-libs/libxcb-1.11.1[${MULTILIB_USEDEP}] - x11-misc/compose-tables - - !<xfce-base/xfce4-settings-4.16.3 -" -DEPEND="${RDEPEND} - x11-base/xorg-proto - x11-libs/xtrans -" -BDEPEND="test? ( dev-lang/perl )" - -PATCHES=( "${FILESDIR}"/150.patch ) - -src_configure() { - local XORG_CONFIGURE_OPTIONS=( - $(use_with doc xmlto) - $(use_enable doc specs) - --enable-ipv6 - --without-fop - CPP="$(tc-getPROG CPP cpp)" - ) - xorg-3_src_configure -} - -src_install() { - xorg-3_src_install - rm -rf "${ED}"/usr/share/X11/locale || die -} |