Merge pull request #1499 from Rmys/master

libx11 rebuild
This commit is contained in:
Rmys
2022-12-19 11:56:14 +03:00
committed by GitHub
7 changed files with 230 additions and 135 deletions
@@ -1,43 +0,0 @@
From e92efc63acd7b377faa9e534f4bf52aaa86be2a9 Mon Sep 17 00:00:00 2001
From: Peter Hutterer <peter.hutterer@who-t.net>
Date: Tue, 27 Jul 2021 11:46:19 +1000
Subject: [PATCH libX11] makekeys: handle the new _EVDEVK xorgproto symbols
These keys are all defined through a macro in the form:
#define XF86XK_BrightnessAuto _EVDEVK(0x0F4)
The _EVDEVK macro is simply an offset of 0x10081000.
Let's parse these lines correctly so those keysyms end up in our
hashtables.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
---
src/util/makekeys.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/src/util/makekeys.c b/src/util/makekeys.c
index e847ef4c..4896cc53 100644
--- a/src/util/makekeys.c
+++ b/src/util/makekeys.c
@@ -78,6 +78,18 @@ parse_line(const char *buf, char *key, KeySym *val, char *prefix)
return 1;
}
+ /* See if we can parse one of the _EVDEVK symbols */
+ i = sscanf(buf, "#define %127s _EVDEVK(0x%lx)", key, val);
+ if (i == 2 && (tmp = strstr(key, "XK_"))) {
+ memcpy(prefix, key, (size_t)(tmp - key));
+ prefix[tmp - key] = '\0';
+ tmp += 3;
+ memmove(key, tmp, strlen(tmp) + 1);
+
+ *val += 0x10081000;
+ return 1;
+ }
+
/* Now try to catch alias (XK_foo XK_bar) definitions, and resolve them
* immediately: if the target is in the form XF86XK_foo, we need to
* canonicalise this to XF86foo before we do the lookup. */
--
2.31.1
+189
View File
@@ -0,0 +1,189 @@
diff --git a/include/X11/Xlibint.h b/include/X11/Xlibint.h
index e20c4833c16c6d3518e4b7feb9bdbc606584bfcc..b570bd01c657f4d86f06b414a43e96da4319f729 100644
--- a/include/X11/Xlibint.h
+++ b/include/X11/Xlibint.h
@@ -43,6 +43,10 @@ from The Open Group.
#include <X11/Xproto.h> /* to declare xEvent */
#include <X11/XlibConf.h> /* for configured options like XTHREADS */
+#ifdef XTHREADS
+#include <X11/Xthreads.h>
+#endif
+
/* The Xlib structs are full of implicit padding to properly align members.
We can't clean that up without breaking ABI, so tell clang not to bother
complaining about it. */
@@ -207,7 +211,10 @@ struct _XDisplay
XIOErrorExitHandler exit_handler;
void *exit_handler_data;
- CARD32 in_ifevent;
+ CARD32 in_ifevent;
+#ifdef XTHREADS
+ xthread_t ifevent_thread;
+#endif
};
#define XAllocIDs(dpy,ids,n) (*(dpy)->idlist_alloc)(dpy,ids,n)
diff --git a/src/ChkIfEv.c b/src/ChkIfEv.c
index b32c2d3ebcb1aad0e704a3e5dce52dc31971afd2..666366966a0e81bf413a64e015a84da1fcf5cdf0 100644
--- a/src/ChkIfEv.c
+++ b/src/ChkIfEv.c
@@ -49,8 +49,11 @@ Bool XCheckIfEvent (
unsigned long qe_serial = 0;
int n; /* time through count */
- dpy->in_ifevent++;
LockDisplay(dpy);
+#ifdef XTHREADS
+ dpy->ifevent_thread = xthread_self();
+#endif
+ dpy->in_ifevent++;
prev = NULL;
for (n = 3; --n >= 0;) {
for (qelt = prev ? prev->next : dpy->head;
diff --git a/src/IfEvent.c b/src/IfEvent.c
index 54c37f0031b27f3d7eb629ec2ea16b615b29e734..35c592e3a54d89f1d2ac1efa40c43a04eab1c0c5 100644
--- a/src/IfEvent.c
+++ b/src/IfEvent.c
@@ -48,8 +48,11 @@ XIfEvent (
register _XQEvent *qelt, *prev;
unsigned long qe_serial = 0;
- dpy->in_ifevent++;
LockDisplay(dpy);
+#ifdef XTHREADS
+ dpy->ifevent_thread = xthread_self();
+#endif
+ dpy->in_ifevent++;
prev = NULL;
while (1) {
for (qelt = prev ? prev->next : dpy->head;
diff --git a/src/PeekIfEv.c b/src/PeekIfEv.c
index 68c028b70705968c6757c1e70a238886a94adecb..754749a77c0835c0ba3c1aa6edded15dab7fb478 100644
--- a/src/PeekIfEv.c
+++ b/src/PeekIfEv.c
@@ -49,8 +49,11 @@ XPeekIfEvent (
register _XQEvent *prev, *qelt;
unsigned long qe_serial = 0;
- dpy->in_ifevent++;
LockDisplay(dpy);
+#ifdef XTHREADS
+ dpy->ifevent_thread = xthread_self();
+#endif
+ dpy->in_ifevent++;
prev = NULL;
while (1) {
for (qelt = prev ? prev->next : dpy->head;
diff --git a/src/locking.c b/src/locking.c
index c550603e1f5d0601af3fa19c0b8486ef5b1bc30f..642cf9894268dfbbb79a104b42b4097cfd293d82 100644
--- a/src/locking.c
+++ b/src/locking.c
@@ -240,7 +240,9 @@ static void _XUnlockDisplay(
if (lock_hist_loc >= LOCK_HIST_SIZE)
lock_hist_loc = 0;
#endif /* XTHREADS_WARN */
- xmutex_unlock(dpy->lock->mutex);
+
+ if (dpy->in_ifevent == 0 || dpy->ifevent_thread != xthread_self())
+ xmutex_unlock(dpy->lock->mutex);
}
@@ -453,63 +455,24 @@ 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); */
-}
+ struct _XErrorThreadInfo *ti;
-static void _XInternalLockDisplay(
- Display *dpy,
- Bool wskip
- XTHREADS_FILE_LINE_ARGS
- );
+ if (dpy->in_ifevent && dpy->ifevent_thread == xthread_self())
+ return;
-static void _XIfEventInternalLockDisplay(
- Display *dpy,
- Bool wskip
- XTHREADS_FILE_LINE_ARGS
- )
-{
- /* assert(dpy->in_ifevent); */
-}
-
-static void _XIfEventUnlockDisplay(
- Display *dpy
- XTHREADS_FILE_LINE_ARGS
- )
-{
- if (dpy->in_ifevent == 0) {
- dpy->lock_fns->lock_display = _XLockDisplay;
- dpy->lock_fns->unlock_display = _XUnlockDisplay;
- dpy->lock->internal_lock_display = _XInternalLockDisplay;
- UnlockDisplay(dpy);
- } else
- return;
-}
-
-static void _XLockDisplay(
- Display *dpy
- XTHREADS_FILE_LINE_ARGS
- )
-{
-#ifdef XTHREADS
- struct _XErrorThreadInfo *ti;
-#endif
#ifdef XTHREADS_WARN
_XLockDisplayWarn(dpy, file, line);
#else
xmutex_lock(dpy->lock->mutex);
#endif
+
if (dpy->lock->locking_level > 0)
- _XDisplayLockWait(dpy);
-#ifdef XTHREADS
+ _XDisplayLockWait(dpy);
+
/*
* Skip the two function calls below which may generate requests
* when LockDisplay is called from within _XError.
@@ -517,14 +480,9 @@ static void _XLockDisplay(
for (ti = dpy->error_threads; ti; ti = ti->next)
if (ti->error_thread == xthread_self())
return;
-#endif
+
_XIDHandler(dpy);
_XSeqSyncFunction(dpy);
- if (dpy->in_ifevent) {
- dpy->lock_fns->lock_display = _XIfEventLockDisplay;
- dpy->lock_fns->unlock_display = _XIfEventUnlockDisplay;
- dpy->lock->internal_lock_display = _XIfEventInternalLockDisplay;
- }
}
/*
@@ -537,6 +495,9 @@ static void _XInternalLockDisplay(
XTHREADS_FILE_LINE_ARGS
)
{
+ if (dpy->in_ifevent && dpy->ifevent_thread == xthread_self())
+ return;
+
#ifdef XTHREADS_WARN
_XLockDisplayWarn(dpy, file, line);
#else
+32
View File
@@ -0,0 +1,32 @@
diff --git a/src/PutBEvent.c b/src/PutBEvent.c
index f7b74b31deeba41a47816a53bbccf5319810ffb3..b8273e1adca11f6a7cee0199729a0908c2888937 100644
--- a/src/PutBEvent.c
+++ b/src/PutBEvent.c
@@ -85,15 +85,20 @@ XPutBackEvent (
int type = event->type & 0177;
LockDisplay(dpy);
- fp = dpy->wire_vec[type];
- if (fp == NULL)
- fp = _XEventToWire;
- ret = (*fp)(dpy, event, &wire);
- if (ret)
+ if (type == GenericEvent)
+ ret = _XPutBackEvent(dpy, event);
+ else
{
- ret = (*dpy->event_vec[type])(dpy, &lib, &wire);
+ fp = dpy->wire_vec[type];
+ if (fp == NULL)
+ fp = _XEventToWire;
+ ret = (*fp)(dpy, event, &wire);
if (ret)
- ret = _XPutBackEvent(dpy, &lib);
+ {
+ ret = (*dpy->event_vec[type])(dpy, &lib, &wire);
+ if (ret)
+ ret = _XPutBackEvent(dpy, &lib);
+ }
}
UnlockDisplay(dpy);
return ret;
@@ -1,12 +0,0 @@
diff -Naur libX11-1.3.5//src/xlibi18n/ICWrap.c libX11-1.3.5.tpg//src/xlibi18n/ICWrap.c
--- libX11-1.3.5//src/xlibi18n/ICWrap.c 2010-08-10 04:59:44.000000000 +0000
+++ libX11-1.3.5.tpg//src/xlibi18n/ICWrap.c 2010-09-17 17:11:21.000000000 +0000
@@ -283,7 +283,7 @@
XIMArg *args;
char *ret;
- if (!ic->core.im)
+ if (!ic || !ic->core.im)
return (char *) NULL;
/*
@@ -1,50 +0,0 @@
Index: libX11-1.4.99.1/src/Xrm.c
===================================================================
--- libX11-1.4.99.1.orig/src/Xrm.c
+++ libX11-1.4.99.1/src/Xrm.c
@@ -2540,30 +2540,40 @@ Bool XrmQGetResource(
VClosureRec closure;
if (db && *names) {
- _XLockMutex(&db->linfo);
+ if ((_XLockMutex_fn) && db->linfo.lock ) {
+ _XLockMutex(&db->linfo);
+ }
closure.type = pType;
closure.value = pValue;
table = db->table;
if (names[1]) {
if (table && !table->leaf) {
if (GetNEntry(table, names, classes, &closure)) {
- _XUnlockMutex(&db->linfo);
+ if ((_XUnlockMutex_fn) && db->linfo.lock ) {
+ _XUnlockMutex(&db->linfo);
+ }
return True;
}
} else if (table && table->hasloose &&
GetLooseVEntry((LTable)table, names, classes, &closure)) {
- _XUnlockMutex (&db->linfo);
+ if ((_XUnlockMutex_fn) && db->linfo.lock ) {
+ _XUnlockMutex (&db->linfo);
+ }
return True;
}
} else {
if (table && !table->leaf)
table = table->next;
if (table && GetVEntry((LTable)table, names, classes, &closure)) {
- _XUnlockMutex(&db->linfo);
+ if ((_XUnlockMutex_fn) && db->linfo.lock ) {
+ _XUnlockMutex(&db->linfo);
+ }
return True;
}
}
- _XUnlockMutex(&db->linfo);
+ if ((_XUnlockMutex_fn) && db->linfo.lock ) {
+ _XUnlockMutex(&db->linfo);
+ }
}
*pType = NULLQUARK;
pValue->addr = (XPointer)NULL;
-27
View File
@@ -1,27 +0,0 @@
From 5dcb40f28d59587597d2ff6e6ac64c71cfe6ff7b Mon Sep 17 00:00:00 2001
From: James Cloos <cloos@jhcloos.com>
Date: Tue, 17 Sep 2013 16:50:42 +0000
Subject: nls/en_US.UTF-8/Compose.pre: Fix typo.
Fix typo added in 215ce6a67863, s/actute/acute/.
Fixes bug #69476. Reported by Jean Krohn.
Signed-off-by: James Cloos <cloos@jhcloos.com>
---
diff --git a/nls/en_US.UTF-8/Compose.pre b/nls/en_US.UTF-8/Compose.pre
index a741332..7314d7f 100644
--- a/nls/en_US.UTF-8/Compose.pre
+++ b/nls/en_US.UTF-8/Compose.pre
@@ -743,7 +743,7 @@ XCOMM Part 3
<Multi_key> <i> <quotedbl> : "ï" idiaeresis # LATIN SMALL LETTER I WITH DIAERESIS
<Multi_key> <diaeresis> <i> : "ï" idiaeresis # LATIN SMALL LETTER I WITH DIAERESIS
<Multi_key> <i> <diaeresis> : "ï" idiaeresis # LATIN SMALL LETTER I WITH DIAERESIS
-<dead_actute> <j> : "j́" # LATIN SMALL LETTER J U006A with COMBINING ACUTE ACCENT U0301
+<dead_acute> <j> : "j́" # LATIN SMALL LETTER J U006A with COMBINING ACUTE ACCENT U0301
<Multi_key> <apostrophe> <j> : "j́" # LATIN SMALL LETTER J U006A with COMBINING ACUTE ACCENT U0301
<Multi_key> <j> <apostrophe> : "j́" # LATIN SMALL LETTER J U006A with COMBINING ACUTE ACCENT U0301
<Multi_key> <acute> <j> : "j́" # LATIN SMALL LETTER J U006A with COMBINING ACUTE ACCENT U0301
--
cgit v0.9.0.2-2-gbebe
+9 -3
View File
@@ -22,9 +22,8 @@
<Dependency>xmlto</Dependency>
</BuildDependencies>
<Patches>
<!--<Patch level="1">fix_typo.diff</Patch>
<Patch level="1">fix-segfault.diff</Patch>-->
<!-- <Patch level="1">0001-makekeys-handle-the-new-_EVDEVK-xorgproto-symbols.patch</Patch> -->
<Patch level="1">176.diff</Patch>
<Patch level="1">177.diff</Patch>
</Patches>
</Source>
@@ -76,6 +75,13 @@
</Package>
<History>
<Update release="24">
<Date>2022-12-19</Date>
<Version>1.8.3</Version>
<Comment>Rebuild.</Comment>
<Name>Mustafa Cinasal</Name>
<Email>muscnsl@gmail.com</Email>
</Update>
<Update release="23">
<Date>2022-12-16</Date>
<Version>1.8.3</Version>