- U_0001-xlibi18n-restore-parse_line1-for-WIN32-builds.patch
U_0002-Revert-imDefLkup-Commit-first-info-in-XimCommitInfo.patch U_0003-Revert-ximcp-Unmark-to-fabricate-key-events-with-XKe.patch * fix regressions in 1.8.8 (issues #204, #205, #206, #207, #208) OBS-URL: https://build.opensuse.org/package/show/X11:XOrg/libX11?expand=0&rev=115
This commit is contained in:
parent
cf7a0238a2
commit
6586cebbd2
62
U_0001-xlibi18n-restore-parse_line1-for-WIN32-builds.patch
Normal file
62
U_0001-xlibi18n-restore-parse_line1-for-WIN32-builds.patch
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
From 9afd55ada5d7a3c1d3ed23ff8451629a1d989a7f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||||
|
Date: Mon, 25 Mar 2024 11:51:03 -0700
|
||||||
|
Subject: [PATCH 1/3] xlibi18n: restore parse_line1 for WIN32 builds
|
||||||
|
|
||||||
|
Accidentally removed by __UNIXOS2__ cleanup
|
||||||
|
Closes: #204
|
||||||
|
Fixes: 225a4bbb ("unifdef __UNIXOS2__")
|
||||||
|
|
||||||
|
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||||
|
---
|
||||||
|
src/xlibi18n/lcFile.c | 34 ++++++++++++++++++++++++++++++++++
|
||||||
|
1 file changed, 34 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/xlibi18n/lcFile.c b/src/xlibi18n/lcFile.c
|
||||||
|
index 4e2b3212..b6cf93f2 100644
|
||||||
|
--- a/src/xlibi18n/lcFile.c
|
||||||
|
+++ b/src/xlibi18n/lcFile.c
|
||||||
|
@@ -88,6 +88,40 @@ parse_line(
|
||||||
|
return argc;
|
||||||
|
}
|
||||||
|
|
||||||
|
+#ifdef WIN32
|
||||||
|
+/* this is parse_line but skips drive letters at the beginning of the entry */
|
||||||
|
+static int
|
||||||
|
+parse_line1(
|
||||||
|
+ char *line,
|
||||||
|
+ char **argv,
|
||||||
|
+ int argsize)
|
||||||
|
+{
|
||||||
|
+ int argc = 0;
|
||||||
|
+ char *p = line;
|
||||||
|
+
|
||||||
|
+ while (argc < argsize) {
|
||||||
|
+ while (isspace(*p)) {
|
||||||
|
+ ++p;
|
||||||
|
+ }
|
||||||
|
+ if (*p == '\0') {
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ argv[argc++] = p;
|
||||||
|
+ if (isalpha(*p) && p[1] == ':') {
|
||||||
|
+ p+= 2; /* skip drive letters */
|
||||||
|
+ }
|
||||||
|
+ while (*p != ':' && *p != '\n' && *p != '\0') {
|
||||||
|
+ ++p;
|
||||||
|
+ }
|
||||||
|
+ if (*p == '\0') {
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ *p++ = '\0';
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return argc;
|
||||||
|
+}
|
||||||
|
+#endif /* WIN32 */
|
||||||
|
|
||||||
|
/* Splits a colon separated list of directories, and returns the constituent
|
||||||
|
paths (without trailing slash). At most argsize constituents are stored
|
||||||
|
--
|
||||||
|
2.35.3
|
||||||
|
|
146
U_0002-Revert-imDefLkup-Commit-first-info-in-XimCommitInfo.patch
Normal file
146
U_0002-Revert-imDefLkup-Commit-first-info-in-XimCommitInfo.patch
Normal file
@ -0,0 +1,146 @@
|
|||||||
|
From 3ea9f4f769fecbbc8c5210c5833ad83ab8d9e97e Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Hutterer <peter.hutterer@who-t.net>
|
||||||
|
Date: Fri, 5 Apr 2024 13:14:33 +1000
|
||||||
|
Subject: [PATCH 2/3] Revert "imDefLkup: Commit first info in XimCommitInfo"
|
||||||
|
|
||||||
|
This commit causes a regression, see #205, #206, #207, #208.
|
||||||
|
|
||||||
|
This reverts commit 041b5291f0956c5cda5054be2981c0d02b009a4c.
|
||||||
|
---
|
||||||
|
modules/im/ximcp/imDefLkup.c | 60 +++++++-----------------------------
|
||||||
|
1 file changed, 11 insertions(+), 49 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/modules/im/ximcp/imDefLkup.c b/modules/im/ximcp/imDefLkup.c
|
||||||
|
index 6ffe6f48..5192e8c1 100644
|
||||||
|
--- a/modules/im/ximcp/imDefLkup.c
|
||||||
|
+++ b/modules/im/ximcp/imDefLkup.c
|
||||||
|
@@ -640,47 +640,22 @@ _XimRegCommitInfo(
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
-_XimUnregRealCommitInfo(
|
||||||
|
- Xic ic,
|
||||||
|
- Bool reverse)
|
||||||
|
+_XimUnregCommitInfo(
|
||||||
|
+ Xic ic)
|
||||||
|
{
|
||||||
|
XimCommitInfo info;
|
||||||
|
- XimCommitInfo prev_info = NULL;
|
||||||
|
|
||||||
|
- info = ic->private.proto.commit_info;
|
||||||
|
- while (reverse && info) {
|
||||||
|
- if (!info->next)
|
||||||
|
- break;
|
||||||
|
- prev_info = info;
|
||||||
|
- info = info->next;
|
||||||
|
- }
|
||||||
|
- if (!info)
|
||||||
|
+ if (!(info = ic->private.proto.commit_info))
|
||||||
|
return;
|
||||||
|
|
||||||
|
+
|
||||||
|
Xfree(info->string);
|
||||||
|
Xfree(info->keysym);
|
||||||
|
- if (prev_info)
|
||||||
|
- prev_info->next = info->next;
|
||||||
|
- else
|
||||||
|
- ic->private.proto.commit_info = info->next;
|
||||||
|
+ ic->private.proto.commit_info = info->next;
|
||||||
|
Xfree(info);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
-static void
|
||||||
|
-_XimUnregCommitInfo(
|
||||||
|
- Xic ic)
|
||||||
|
-{
|
||||||
|
- _XimUnregRealCommitInfo(ic, False);
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
-static void
|
||||||
|
-_XimUnregFirstCommitInfo(
|
||||||
|
- Xic ic)
|
||||||
|
-{
|
||||||
|
- _XimUnregRealCommitInfo(ic, True);
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
void
|
||||||
|
_XimFreeCommitInfo(
|
||||||
|
Xic ic)
|
||||||
|
@@ -690,19 +665,6 @@ _XimFreeCommitInfo(
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
-static XimCommitInfo
|
||||||
|
-_XimFirstCommitInfo(
|
||||||
|
- Xic ic)
|
||||||
|
-{
|
||||||
|
- XimCommitInfo info = ic->private.proto.commit_info;
|
||||||
|
- while (info) {
|
||||||
|
- if (!info->next)
|
||||||
|
- break;
|
||||||
|
- info = info->next;
|
||||||
|
- }
|
||||||
|
- return info;
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
static Bool
|
||||||
|
_XimProcKeySym(
|
||||||
|
Xic ic,
|
||||||
|
@@ -1097,7 +1059,7 @@ _XimProtoMbLookupString(
|
||||||
|
state = &tmp_state;
|
||||||
|
|
||||||
|
if ((ev->type == KeyPress) && (ev->keycode == 0)) { /* Filter function */
|
||||||
|
- if (!(info = _XimFirstCommitInfo(ic))) {
|
||||||
|
+ if (!(info = ic->private.proto.commit_info)) {
|
||||||
|
*state = XLookupNone;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
@@ -1113,7 +1075,7 @@ _XimProtoMbLookupString(
|
||||||
|
else
|
||||||
|
*state = XLookupKeySym;
|
||||||
|
}
|
||||||
|
- _XimUnregFirstCommitInfo(ic);
|
||||||
|
+ _XimUnregCommitInfo(ic);
|
||||||
|
|
||||||
|
} else if (ev->type == KeyPress) {
|
||||||
|
ret = _XimLookupMBText(ic, ev, buffer, bytes, keysym, NULL);
|
||||||
|
@@ -1160,7 +1122,7 @@ _XimProtoWcLookupString(
|
||||||
|
state = &tmp_state;
|
||||||
|
|
||||||
|
if (ev->type == KeyPress && ev->keycode == 0) { /* Filter function */
|
||||||
|
- if (!(info = _XimFirstCommitInfo(ic))) {
|
||||||
|
+ if (!(info = ic->private.proto.commit_info)) {
|
||||||
|
*state = XLookupNone;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
@@ -1176,7 +1138,7 @@ _XimProtoWcLookupString(
|
||||||
|
else
|
||||||
|
*state = XLookupKeySym;
|
||||||
|
}
|
||||||
|
- _XimUnregFirstCommitInfo(ic);
|
||||||
|
+ _XimUnregCommitInfo(ic);
|
||||||
|
|
||||||
|
} else if (ev->type == KeyPress) {
|
||||||
|
ret = _XimLookupWCText(ic, ev, buffer, bytes, keysym, NULL);
|
||||||
|
@@ -1223,7 +1185,7 @@ _XimProtoUtf8LookupString(
|
||||||
|
state = &tmp_state;
|
||||||
|
|
||||||
|
if (ev->type == KeyPress && ev->keycode == 0) { /* Filter function */
|
||||||
|
- if (!(info = _XimFirstCommitInfo(ic))) {
|
||||||
|
+ if (!(info = ic->private.proto.commit_info)) {
|
||||||
|
*state = XLookupNone;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
@@ -1239,7 +1201,7 @@ _XimProtoUtf8LookupString(
|
||||||
|
else
|
||||||
|
*state = XLookupKeySym;
|
||||||
|
}
|
||||||
|
- _XimUnregFirstCommitInfo(ic);
|
||||||
|
+ _XimUnregCommitInfo(ic);
|
||||||
|
|
||||||
|
} else if (ev->type == KeyPress) {
|
||||||
|
ret = _XimLookupUTF8Text(ic, ev, buffer, bytes, keysym, NULL);
|
||||||
|
--
|
||||||
|
2.35.3
|
||||||
|
|
@ -0,0 +1,182 @@
|
|||||||
|
From 52a191ee096e93cf711f77b6a56c508b68afc0b6 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Hutterer <peter.hutterer@who-t.net>
|
||||||
|
Date: Fri, 5 Apr 2024 13:15:32 +1000
|
||||||
|
Subject: [PATCH 3/3] Revert "ximcp: Unmark to fabricate key events with
|
||||||
|
XKeyEvent serial"
|
||||||
|
|
||||||
|
This commit causes a regression, see #205, #206, #207, #208.
|
||||||
|
|
||||||
|
This reverts commit 024d229fdf88a7755577b01b46af6ef908d599e0.
|
||||||
|
---
|
||||||
|
modules/im/ximcp/imDefFlt.c | 8 ++---
|
||||||
|
modules/im/ximcp/imDefIm.c | 1 -
|
||||||
|
modules/im/ximcp/imDefLkup.c | 58 ++++--------------------------------
|
||||||
|
src/xlibi18n/XimintP.h | 17 -----------
|
||||||
|
4 files changed, 9 insertions(+), 75 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/modules/im/ximcp/imDefFlt.c b/modules/im/ximcp/imDefFlt.c
|
||||||
|
index 834b9db4..44cc6884 100644
|
||||||
|
--- a/modules/im/ximcp/imDefFlt.c
|
||||||
|
+++ b/modules/im/ximcp/imDefFlt.c
|
||||||
|
@@ -142,9 +142,9 @@ _XimProtoKeypressFilter(
|
||||||
|
{
|
||||||
|
Xim im = (Xim)ic->core.im;
|
||||||
|
|
||||||
|
- if (_XimIsFabricatedSerial(im, ev->serial)) {
|
||||||
|
+ if (IS_FABRICATED(im)) {
|
||||||
|
_XimPendingFilter(ic);
|
||||||
|
- _XimUnfabricateSerial(im, ev->serial);
|
||||||
|
+ UNMARK_FABRICATED(im);
|
||||||
|
return NOTFILTERD;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -203,9 +203,9 @@ _XimProtoKeyreleaseFilter(
|
||||||
|
{
|
||||||
|
Xim im = (Xim)ic->core.im;
|
||||||
|
|
||||||
|
- if (_XimIsFabricatedSerial(im, ev->serial)) {
|
||||||
|
+ if (IS_FABRICATED(im)) {
|
||||||
|
_XimPendingFilter(ic);
|
||||||
|
- _XimUnfabricateSerial(im, ev->serial);
|
||||||
|
+ UNMARK_FABRICATED(im);
|
||||||
|
return NOTFILTERD;
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/modules/im/ximcp/imDefIm.c b/modules/im/ximcp/imDefIm.c
|
||||||
|
index ac7f1195..fe4d18ba 100644
|
||||||
|
--- a/modules/im/ximcp/imDefIm.c
|
||||||
|
+++ b/modules/im/ximcp/imDefIm.c
|
||||||
|
@@ -430,7 +430,6 @@ _XimPreConnect(
|
||||||
|
return False;
|
||||||
|
|
||||||
|
im->private.proto.im_window = im_window;
|
||||||
|
- im->private.proto.fabricated_serial = 0;
|
||||||
|
return True;
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/modules/im/ximcp/imDefLkup.c b/modules/im/ximcp/imDefLkup.c
|
||||||
|
index 5192e8c1..dd1adf53 100644
|
||||||
|
--- a/modules/im/ximcp/imDefLkup.c
|
||||||
|
+++ b/modules/im/ximcp/imDefLkup.c
|
||||||
|
@@ -341,54 +341,6 @@ _XimForwardEvent(
|
||||||
|
return _XimForwardEventCore(ic, ev, sync);
|
||||||
|
}
|
||||||
|
|
||||||
|
-Bool
|
||||||
|
-_XimFabricateSerial(
|
||||||
|
- Xim im,
|
||||||
|
- unsigned long serial)
|
||||||
|
-{
|
||||||
|
- if (!serial)
|
||||||
|
- return False;
|
||||||
|
- if (serial == im->private.proto.fabricated_serial) {
|
||||||
|
- fprintf(stderr, "%s,%d: The key event is already fabricated.\n", __FILE__, __LINE__);
|
||||||
|
- return False;
|
||||||
|
- }
|
||||||
|
- if (im->private.proto.fabricated_serial)
|
||||||
|
- fprintf(stderr, "%s,%d: Tried to fabricate a wrong key event.\n", __FILE__, __LINE__);
|
||||||
|
-
|
||||||
|
- MARK_FABRICATED(im);
|
||||||
|
- im->private.proto.fabricated_serial = serial;
|
||||||
|
- return True;
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
-Bool
|
||||||
|
-_XimUnfabricateSerial(
|
||||||
|
- Xim im,
|
||||||
|
- unsigned long serial)
|
||||||
|
-{
|
||||||
|
- if (!serial)
|
||||||
|
- return False;
|
||||||
|
- if (!im->private.proto.fabricated_serial) {
|
||||||
|
- fprintf(stderr, "%s,%d: The key event is already unfabricated.\n", __FILE__, __LINE__);
|
||||||
|
- return False;
|
||||||
|
- }
|
||||||
|
- if (serial != im->private.proto.fabricated_serial)
|
||||||
|
- fprintf(stderr, "%s,%d: Tried to unfabricate a wrong key event.\n", __FILE__, __LINE__);
|
||||||
|
-
|
||||||
|
- im->private.proto.fabricated_serial = 0;
|
||||||
|
- UNMARK_FABRICATED(im);
|
||||||
|
- return True;
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
-Bool
|
||||||
|
-_XimIsFabricatedSerial(
|
||||||
|
- Xim im,
|
||||||
|
- unsigned long serial)
|
||||||
|
-{
|
||||||
|
- if (!serial)
|
||||||
|
- return False;
|
||||||
|
- return (serial == im->private.proto.fabricated_serial);
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
static void
|
||||||
|
_XimProcEvent(
|
||||||
|
Display *d,
|
||||||
|
@@ -403,7 +355,7 @@ _XimProcEvent(
|
||||||
|
ev->xany.serial |= serial << 16;
|
||||||
|
ev->xany.send_event = False;
|
||||||
|
ev->xany.display = d;
|
||||||
|
- _XimFabricateSerial((Xim)ic->core.im, ev->xany.serial);
|
||||||
|
+ MARK_FABRICATED(ic->core.im);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -752,6 +704,10 @@ _XimCommitRecv(
|
||||||
|
|
||||||
|
(void)_XimRespSyncReply(ic, flag);
|
||||||
|
|
||||||
|
+ if (ic->private.proto.registed_filter_event
|
||||||
|
+ & (KEYPRESS_MASK | KEYRELEASE_MASK))
|
||||||
|
+ MARK_FABRICATED(im);
|
||||||
|
+
|
||||||
|
bzero(&ev, sizeof(ev)); /* uninitialized : found when running kterm under valgrind */
|
||||||
|
|
||||||
|
ev.type = KeyPress;
|
||||||
|
@@ -763,10 +719,6 @@ _XimCommitRecv(
|
||||||
|
|
||||||
|
ev.time = 0L;
|
||||||
|
ev.serial = LastKnownRequestProcessed(im->core.display);
|
||||||
|
-
|
||||||
|
- if (ic->private.proto.registed_filter_event
|
||||||
|
- & (KEYPRESS_MASK | KEYRELEASE_MASK))
|
||||||
|
- _XimFabricateSerial(im, ev.serial);
|
||||||
|
/* FIXME :
|
||||||
|
I wish there were COMMENTs (!) about the data passed around.
|
||||||
|
*/
|
||||||
|
diff --git a/src/xlibi18n/XimintP.h b/src/xlibi18n/XimintP.h
|
||||||
|
index 2a51e2ed..674da029 100644
|
||||||
|
--- a/src/xlibi18n/XimintP.h
|
||||||
|
+++ b/src/xlibi18n/XimintP.h
|
||||||
|
@@ -149,8 +149,6 @@ typedef struct _XimProtoPrivateRec {
|
||||||
|
XimTransRegDispatcher register_dispatcher;
|
||||||
|
XimTransCallDispatcher call_dispatcher;
|
||||||
|
XPointer spec;
|
||||||
|
-
|
||||||
|
- unsigned long fabricated_serial;
|
||||||
|
} XimProtoPrivateRec;
|
||||||
|
|
||||||
|
/*
|
||||||
|
@@ -309,19 +307,4 @@ typedef struct _XicProtoPrivateRec {
|
||||||
|
#define XIM_MAXIMNAMELEN 64
|
||||||
|
#define XIM_MAXLCNAMELEN 64
|
||||||
|
|
||||||
|
-Bool
|
||||||
|
-_XimFabricateSerial(
|
||||||
|
- Xim im,
|
||||||
|
- unsigned long serial);
|
||||||
|
-
|
||||||
|
-Bool
|
||||||
|
-_XimUnfabricateSerial(
|
||||||
|
- Xim im,
|
||||||
|
- unsigned long serial);
|
||||||
|
-
|
||||||
|
-Bool
|
||||||
|
-_XimIsFabricatedSerial(
|
||||||
|
- Xim im,
|
||||||
|
- unsigned long serial);
|
||||||
|
-
|
||||||
|
#endif /* _XIMINTP_H */
|
||||||
|
--
|
||||||
|
2.35.3
|
||||||
|
|
@ -1,3 +1,11 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Apr 5 10:42:25 UTC 2024 - Stefan Dirsch <sndirsch@suse.com>
|
||||||
|
|
||||||
|
- U_0001-xlibi18n-restore-parse_line1-for-WIN32-builds.patch
|
||||||
|
U_0002-Revert-imDefLkup-Commit-first-info-in-XimCommitInfo.patch
|
||||||
|
U_0003-Revert-ximcp-Unmark-to-fabricate-key-events-with-XKe.patch
|
||||||
|
* fix regressions in 1.8.8 (issues #204, #205, #206, #207, #208)
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Mon Mar 25 01:45:51 UTC 2024 - Stefan Dirsch <sndirsch@suse.com>
|
Mon Mar 25 01:45:51 UTC 2024 - Stefan Dirsch <sndirsch@suse.com>
|
||||||
|
|
||||||
|
@ -32,6 +32,9 @@ Patch1: p_xlib_skip_ext_env.diff
|
|||||||
# PATCH-FIX-UPSTREAM en-locales.diff fdo#48596 bnc#388711 -- Add missing data for more en locales
|
# PATCH-FIX-UPSTREAM en-locales.diff fdo#48596 bnc#388711 -- Add missing data for more en locales
|
||||||
Patch2: en-locales.diff
|
Patch2: en-locales.diff
|
||||||
Patch3: u_no-longer-crash-in-XVisualIDFromVisual.patch
|
Patch3: u_no-longer-crash-in-XVisualIDFromVisual.patch
|
||||||
|
Patch11: U_0001-xlibi18n-restore-parse_line1-for-WIN32-builds.patch
|
||||||
|
Patch12: U_0002-Revert-imDefLkup-Commit-first-info-in-XimCommitInfo.patch
|
||||||
|
Patch13: U_0003-Revert-ximcp-Unmark-to-fabricate-key-events-with-XKe.patch
|
||||||
BuildRequires: fdupes
|
BuildRequires: fdupes
|
||||||
BuildRequires: libtool
|
BuildRequires: libtool
|
||||||
BuildRequires: pkgconfig
|
BuildRequires: pkgconfig
|
||||||
@ -121,6 +124,9 @@ test -f nls/ja.S90/XLC_LOCALE.pre && exit 1
|
|||||||
%patch -P 1
|
%patch -P 1
|
||||||
%patch -P 2
|
%patch -P 2
|
||||||
%patch -P 3 -p1
|
%patch -P 3 -p1
|
||||||
|
%patch -P 11 -p1
|
||||||
|
%patch -P 12 -p1
|
||||||
|
%patch -P 13 -p1
|
||||||
|
|
||||||
%build
|
%build
|
||||||
%configure \
|
%configure \
|
||||||
|
Loading…
Reference in New Issue
Block a user