[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

libx11: Changes to 'upstream-experimental'



 Makefile.am                         |    1 
 configure.ac                        |  183 ++---
 docbook.am                          |  107 +++
 include/X11/Xlib.h                  |    1 
 include/X11/Xlibint.h               |  112 +--
 include/X11/Xutil.h                 |    2 
 man/DisplayOfCCC.man                |    2 
 man/Makefile.am                     |    2 
 man/XChangeKeyboardMapping.man      |    2 
 man/XFreeModifierMap.man            |    1 
 man/XFreeModifiermap.man            |    1 
 man/XGrabKey.man                    |    2 
 man/xkb/XkbComputeShapeTop.man      |    2 
 man/xkb/XkbPtrActionX.man           |    2 
 man/xkb/XkbPtrActionY.man           |    2 
 man/xkb/XkbSetPtrActionX.man        |    2 
 man/xkb/XkbSetPtrActionY.man        |    2 
 modules/im/ximcp/imCallbk.c         |    2 
 modules/im/ximcp/imDefFlt.c         |   16 
 modules/im/ximcp/imDefIc.c          |   11 
 modules/im/ximcp/imDefIm.c          |   51 -
 modules/im/ximcp/imDefLkup.c        |   16 
 modules/im/ximcp/imExten.c          |    2 
 modules/im/ximcp/imInt.c            |    9 
 modules/im/ximcp/imLcFlt.c          |   34 
 modules/im/ximcp/imLcIc.c           |    5 
 modules/im/ximcp/imLcIm.c           |    5 
 modules/im/ximcp/imLcLkup.c         |   26 
 modules/im/ximcp/imLcPrs.c          |    5 
 modules/im/ximcp/imRm.c             |   59 -
 modules/im/ximcp/imRmAttr.c         |   37 -
 modules/im/ximcp/imThaiFlt.c        |   11 
 modules/im/ximcp/imThaiIc.c         |    3 
 modules/im/ximcp/imTrX.c            |   36 -
 modules/im/ximcp/imTrans.c          |    7 
 modules/lc/def/lcDefConv.c          |    2 
 modules/lc/gen/lcGenConv.c          |   14 
 modules/lc/xlocale/lcJis.c          |    3 
 modules/om/generic/omGeneric.c      |   99 +-
 nls/Makefile.am                     |   99 --
 nls/compose-chart.pl                |  389 -----------
 nls/en_US.UTF-8/Compose.pre         |   23 
 nls/iso8859-1/Compose.pre           |    2 
 nls/locale.alias.pre                |   19 
 nls/pt_BR.UTF-8/Compose.pre         |    2 
 specs/.gitignore                    |    1 
 specs/XIM/Makefile.am               |   37 -
 specs/XIM/xim.xml                   |   84 +-
 specs/XKB/Makefile.am               |   37 -
 specs/XKB/ch01.xml                  |   22 
 specs/XKB/ch02.xml                  |   16 
 specs/XKB/ch03.xml                  |   12 
 specs/XKB/ch04.xml                  |   12 
 specs/XKB/ch05.xml                  |   14 
 specs/XKB/ch06.xml                  |   10 
 specs/XKB/ch07.xml                  |   16 
 specs/XKB/ch08.xml                  |   40 -
 specs/XKB/ch09.xml                  |   16 
 specs/XKB/ch10.xml                  |   78 +-
 specs/XKB/ch11.xml                  |   30 
 specs/XKB/ch12.xml                  |   12 
 specs/XKB/ch13.xml                  |   26 
 specs/XKB/ch14.xml                  |   26 
 specs/XKB/ch15.xml                  |   44 -
 specs/XKB/ch16.xml                  |   56 -
 specs/XKB/ch17.xml                  |   22 
 specs/XKB/ch18.xml                  |   16 
 specs/XKB/ch19.xml                  |    2 
 specs/XKB/ch20.xml                  |   10 
 specs/XKB/ch21.xml                  |   17 
 specs/XKB/ch22.xml                  |    2 
 specs/XKB/xkblib.xml                |   19 
 specs/i18n/Makefile.am              |    2 
 specs/i18n/compose/.gitignore       |    2 
 specs/i18n/compose/Makefile.am      |   20 
 specs/i18n/compose/compose-chart.pl |  388 +++++++++++
 specs/i18n/compose/docbook-nl.am    |  128 +++
 specs/i18n/framework/Makefile.am    |   36 -
 specs/i18n/framework/framework.xml  |  180 ++---
 specs/i18n/localedb/Makefile.am     |   33 
 specs/i18n/localedb/localedb.xml    |   26 
 specs/i18n/trans/Makefile.am        |   33 
 specs/i18n/trans/trans.xml          |   62 +
 specs/libX11/AppA.xml               |  986 ++++++++++++++--------------
 specs/libX11/AppB.xml               |    2 
 specs/libX11/AppC.xml               |  373 +++++-----
 specs/libX11/AppD.xml               |  235 +++---
 specs/libX11/CH01.xml               |   29 
 specs/libX11/CH02.xml               |  320 ++++-----
 specs/libX11/CH03.xml               |  418 ++++++------
 specs/libX11/CH04.xml               |  248 +++----
 specs/libX11/CH05.xml               |   90 +-
 specs/libX11/CH06.xml               |  588 ++++++++---------
 specs/libX11/CH07.xml               |  365 +++++-----
 specs/libX11/CH08.xml               |  563 ++++++++--------
 specs/libX11/CH09.xml               |  295 ++++----
 specs/libX11/CH10.xml               |  297 +++-----
 specs/libX11/CH11.xml               |  443 ++++++-------
 specs/libX11/CH12.xml               |  412 ++++++------
 specs/libX11/CH13.xml               | 1225 +++++++++++++++++-------------------
 specs/libX11/CH14.xml               |  687 ++++++++++----------
 specs/libX11/CH15.xml               |  314 ++++-----
 specs/libX11/CH16.xml               |  492 +++++++-------
 specs/libX11/Makefile.am            |   78 --
 specs/libX11/credits.xml            |   32 
 specs/libX11/glossary.xml           |   30 
 specs/libX11/libX11.xml             |   39 -
 specs/xmlrules.in                   |   67 -
 src/FSWrap.c                        |    5 
 src/Font.c                          |    2 
 src/GetProp.c                       |    2 
 src/ImUtil.c                        |    1 
 src/InitExt.c                       |    3 
 src/KeyBind.c                       |    3 
 src/KeysymStr.c                     |    3 
 src/Makefile.am                     |    1 
 src/Quarks.c                        |    3 
 src/RdBitF.c                        |    5 
 src/Region.c                        |   13 
 src/SetLocale.c                     |    3 
 src/XlibInt.c                       |   57 +
 src/Xresinternal.h                  |    4 
 src/Xrm.c                           |   21 
 src/XrmI.h                          |   46 -
 src/util/Makefile.am                |    3 
 src/util/makekeys.c                 |    5 
 src/xcb_io.c                        |  111 ++-
 src/xcms/LRGB.c                     |   31 
 src/xcms/PrOfId.c                   |   11 
 src/xcms/cmsColNm.c                 |    4 
 src/xcms/cmsProp.c                  |   17 
 src/xkb/XKB.c                       |    2 
 src/xkb/XKBGAlloc.c                 |   17 
 src/xkb/XKBGeom.c                   |    4 
 src/xkb/XKBList.c                   |    2 
 src/xkb/XKBMisc.c                   |    2 
 src/xlibi18n/XDefaultIMIF.c         |    6 
 src/xlibi18n/XDefaultOMIF.c         |   51 -
 src/xlibi18n/XimintP.h              |   40 -
 src/xlibi18n/XlcDL.c                |   40 -
 src/xlibi18n/XlcSL.c                |    6 
 src/xlibi18n/lcCharSet.c            |    3 
 src/xlibi18n/lcDB.c                 |   18 
 src/xlibi18n/lcFile.c               |   22 
 src/xlibi18n/lcGeneric.c            |   35 -
 src/xlibi18n/lcPublic.c             |    9 
 146 files changed, 6066 insertions(+), 6173 deletions(-)

New commits:
commit bf2d7c8c6d70539c72560b1921e18df2610acf29
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Fri Nov 11 14:56:36 2011 +1000

    libX11 1.4.99.1
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

diff --git a/configure.ac b/configure.ac
index 71662b8..c1f64b6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,7 +1,7 @@
 
 # Initialize Autoconf
 AC_PREREQ([2.60])
-AC_INIT([libX11], [1.4.4],
+AC_INIT([libX11], [1.4.99.1],
         [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], [libX11])
 AC_CONFIG_SRCDIR([Makefile.am])
 AC_CONFIG_HEADERS([src/config.h include/X11/XlibConf.h])

commit 24283d40b1e4314c6647dda49d2a159833341a8b
Author: Derek Buitenhuis <derek.buitenhuis@gmail.com>
Date:   Thu Sep 22 18:44:13 2011 -0400

    makekeys: Fix build/target word size mismatch when cross-compiling
    
    Since makekeys is built using build environment's gcc and
    runs natively, we have to make sure that the size of the
    Signature type is the same on both the native environment
    and the target, otherwise we get mismatches upon running X,
    and some LSB test failures (xts5).
    
    Use an unsigned 32-bit integer on all platforms. Also,
    eliminate the redundant multiple typedefs for the
    Signature type.
    
    Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
    Reviewed-by: Daniel Stone <daniel@fooishbar.org>

diff --git a/src/KeysymStr.c b/src/KeysymStr.c
index 486b5d1..101f297 100644
--- a/src/KeysymStr.c
+++ b/src/KeysymStr.c
@@ -31,11 +31,10 @@ in this Software without prior written authorization from The Open Group.
 #include "Xlibint.h"
 #include <X11/Xresource.h>
 #include <X11/keysymdef.h>
+#include "Xresinternal.h"
 
 #include <stdio.h> /* sprintf */
 
-typedef unsigned long Signature;
-
 #define NEEDVTABLE
 #include "ks_tables.h"
 #include "Key.h"
diff --git a/src/Xresinternal.h b/src/Xresinternal.h
index b4b1b00..c2f355f 100644
--- a/src/Xresinternal.h
+++ b/src/Xresinternal.h
@@ -2,8 +2,10 @@
 #ifndef _XRESINTERNAL_H_
 #define _XRESINTERNAL_H_
 
+#include <inttypes.h>
+
 /* type defines */
-typedef unsigned long Signature;
+typedef uint32_t Signature;
 
 /* prototypes */
 extern XrmQuark _XrmInternalStringToQuark(
diff --git a/src/util/Makefile.am b/src/util/Makefile.am
index 3b100e0..dfe91f1 100644
--- a/src/util/Makefile.am
+++ b/src/util/Makefile.am
@@ -5,6 +5,9 @@ makekeys_CFLAGS = \
 	$(X11_CFLAGS) \
 	$(CWARNFLAGS)
 
+makekeys_CPPFLAGS = \
+	-I$(top_srcdir)/include
+
 CC = @CC_FOR_BUILD@
 CPPFLAGS = @CPPFLAGS_FOR_BUILD@
 CFLAGS = @CFLAGS_FOR_BUILD@
diff --git a/src/util/makekeys.c b/src/util/makekeys.c
index 8f88beb..36d4d4b 100644
--- a/src/util/makekeys.c
+++ b/src/util/makekeys.c
@@ -30,11 +30,12 @@ from The Open Group.
 
 #include <X11/X.h>
 #include <X11/Xos.h>
+#include <X11/Xresource.h>
 #include <X11/keysymdef.h>
 #include <stdio.h>
 #include <stdlib.h>
 
-typedef unsigned long Signature;
+#include "../Xresinternal.h"
 
 #define KTNUM 4000
 
@@ -212,7 +213,7 @@ next1:	;
 	offsets[j] = k;
 	indexes[i] = k;
 	val = info[i].val;
-	printf("0x%.2lx, 0x%.2lx, 0x%.2lx, 0x%.2lx, 0x%.2lx, 0x%.2lx, ",
+	printf("0x%.2"PRIx32", 0x%.2"PRIx32", 0x%.2lx, 0x%.2lx, 0x%.2lx, 0x%.2lx, ",
 	       (sig >> 8) & 0xff, sig & 0xff,
 	       (val >> 24) & 0xff, (val >> 16) & 0xff,
 	       (val >> 8) & 0xff, val & 0xff);

commit 1c41f3b9b86b5eeedfa3bff92e519d45aa097587
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date:   Wed Nov 9 21:00:36 2011 -0800

    XlcSL.c: convert old-style function definitions to ANSI C89 style
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>

diff --git a/src/xlibi18n/XlcSL.c b/src/xlibi18n/XlcSL.c
index 574e4c0..b8b3967 100644
--- a/src/xlibi18n/XlcSL.c
+++ b/src/xlibi18n/XlcSL.c
@@ -71,8 +71,7 @@ extern XIM _XDefaultOpenIM(
 			   );
 
 Bool
-_XInitDefaultIM(lcd)
-XLCd lcd;
+_XInitDefaultIM(XLCd lcd)
 {
     if(lcd == (XLCd)NULL)
 	return False;
@@ -88,8 +87,7 @@ extern XOM _XDefaultOpenOM(
 			   );
 
 Bool
-_XInitDefaultOM(lcd)
-    XLCd lcd;
+_XInitDefaultOM(XLCd lcd)
 {
     lcd->methods->open_om = _XDefaultOpenOM;
     return True;

commit f6dad6aaa384bf836baa28ccb72b476a85c40eff
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Thu Oct 27 13:53:22 2011 +1000

    Use GetReqSized for GetReq and GetReqExtra
    
    GetEmptyReq and GetResReq cannot do this due to the final typecast -
    typically requests that need either of those do not have their own typedef
    in the protocol headers.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Jamey Sharp <jamey@minilop.net>

diff --git a/include/X11/Xlibint.h b/include/X11/Xlibint.h
index 9d75d06..80edeec 100644
--- a/include/X11/Xlibint.h
+++ b/include/X11/Xlibint.h
@@ -456,10 +456,10 @@ extern void *_XGetRequest(Display *dpy, CARD8 type, size_t len);
 
 #if !defined(UNIXCPP) || defined(ANSICPP)
 #define GetReq(name, req) \
-	req = (x##name##Req *) _XGetRequest(dpy, X_##name, SIZEOF(x##name##Req))
+	GetReqSized(name, SIZEOF(x##name##Req), req)
 #else  /* non-ANSI C uses empty comment instead of "##" for token concatenation */
 #define GetReq(name, req) \
-	req = (x/**/name/**/Req *) _XGetRequest(dpy, X_/**/name, SIZEOF(x/**/name/**/Req))
+	GetReqSized(name, SIZEOF(x/**/name/**/Req), req)
 #endif
 
 /* GetReqExtra is the same as GetReq, but allocates "n" additional
@@ -467,10 +467,10 @@ extern void *_XGetRequest(Display *dpy, CARD8 type, size_t len);
 
 #if !defined(UNIXCPP) || defined(ANSICPP)
 #define GetReqExtra(name, n, req) \
-	req = (x##name##Req *) _XGetRequest(dpy, X_##name, SIZEOF(x##name##Req) + n)
+        GetReqSized(name, SIZEOF(x##name##Req) + n, req)
 #else
 #define GetReqExtra(name, n, req) \
-	req = (x/**/name/**/Req *) _XGetRequest(dpy, X_/**/name, SIZEOF(x/**/name/**/Req) + n)
+        GetReqSized(name, SIZEOF(x/**/name/**/Req) + n, req)
 #endif
 
 

commit c9c99058b9d98789c0b2d7e78a23443c2b57a047
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Fri Oct 14 14:51:06 2011 +1000

    include: Add GetReqSized() for request buffers of specific size
    
    Some XI2 requests change in size over different versions and libXi would
    need to hack around GetReq and GetReqExtra. Add a new GetReqSized so the
    library can explicitly specify the size of the request in 4-byte units.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Jamey Sharp <jamey@minilop.net>

diff --git a/include/X11/Xlibint.h b/include/X11/Xlibint.h
index 01087b8..9d75d06 100644
--- a/include/X11/Xlibint.h
+++ b/include/X11/Xlibint.h
@@ -433,6 +433,18 @@ extern LockInfoPtr _Xglobal_lock;
  */
 extern void *_XGetRequest(Display *dpy, CARD8 type, size_t len);
 
+/* GetReqSized is the same as GetReq but allows the caller to specify the
+ * size in bytes. 'sz' must be a multiple of 4! */
+
+#if !defined(UNIXCPP) || defined(ANSICPP)
+#define GetReqSized(name, sz, req) \
+	req = (x##name##Req *) _XGetRequest(dpy, X_##name, sz)
+#else
+#define GetReqSized(name, sz, req) \
+	req = (x/**/name/**/Req *) _XGetRequest(dpy, X_/**/name, sz)
+#endif
+
+
 /*
  * GetReq - Get the next available X request packet in the buffer and
  * return it.

commit ba8a7a19165e30d14bc165f43f67c19b6a115585
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Thu Oct 27 13:24:10 2011 +1000

    Switch GetEmptyReq and GetResReq to call _XGetRequest
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Jamey Sharp <jamey@minilop.net>

diff --git a/include/X11/Xlibint.h b/include/X11/Xlibint.h
index 43d1f2a..01087b8 100644
--- a/include/X11/Xlibint.h
+++ b/include/X11/Xlibint.h
@@ -470,26 +470,12 @@ extern void *_XGetRequest(Display *dpy, CARD8 type, size_t len);
 
 #if !defined(UNIXCPP) || defined(ANSICPP)
 #define GetResReq(name, rid, req) \
-        WORD64ALIGN\
-	if ((dpy->bufptr + SIZEOF(xResourceReq)) > dpy->bufmax)\
-	    _XFlush(dpy);\
-	req = (xResourceReq *) (dpy->last_req = dpy->bufptr);\
-	req->reqType = X_##name;\
-	req->length = 2;\
-	req->id = (rid);\
-	dpy->bufptr += SIZEOF(xResourceReq);\
-	dpy->request++
+	req = (xResourceReq *) _XGetRequest(dpy, X_##name, SIZEOF(xResourceReq)); \
+	req->id = (rid)
 #else
 #define GetResReq(name, rid, req) \
-        WORD64ALIGN\
-	if ((dpy->bufptr + SIZEOF(xResourceReq)) > dpy->bufmax)\
-	    _XFlush(dpy);\
-	req = (xResourceReq *) (dpy->last_req = dpy->bufptr);\
-	req->reqType = X_/**/name;\
-	req->length = 2;\
-	req->id = (rid);\
-	dpy->bufptr += SIZEOF(xResourceReq);\
-	dpy->request++
+	req = (xResourceReq *) _XGetRequest(dpy, X_/**/name, SIZEOF(xResourceReq)); \
+	req->id = (rid)
 #endif
 
 /*
@@ -498,24 +484,10 @@ extern void *_XGetRequest(Display *dpy, CARD8 type, size_t len);
  */
 #if !defined(UNIXCPP) || defined(ANSICPP)
 #define GetEmptyReq(name, req) \
-        WORD64ALIGN\
-	if ((dpy->bufptr + SIZEOF(xReq)) > dpy->bufmax)\
-	    _XFlush(dpy);\
-	req = (xReq *) (dpy->last_req = dpy->bufptr);\
-	req->reqType = X_##name;\
-	req->length = 1;\
-	dpy->bufptr += SIZEOF(xReq);\
-	dpy->request++
+	req = (xReq *) _XGetRequest(dpy, X_##name, SIZEOF(xReq))
 #else
 #define GetEmptyReq(name, req) \
-        WORD64ALIGN\
-	if ((dpy->bufptr + SIZEOF(xReq)) > dpy->bufmax)\
-	    _XFlush(dpy);\
-	req = (xReq *) (dpy->last_req = dpy->bufptr);\
-	req->reqType = X_/**/name;\
-	req->length = 1;\
-	dpy->bufptr += SIZEOF(xReq);\
-	dpy->request++
+	req = (xReq *) _XGetRequest(dpy, X_/**/name, SIZEOF(xReq))
 #endif
 
 #ifdef WORD64

commit 4a060f993bf676cf21ad9784e010f54134da7b40
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Mon Oct 17 09:45:15 2011 +1000

    Add _XGetRequest as substitute for GetReq/GetReqExtra
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Jamey Sharp <jamey@minilop.net>

diff --git a/include/X11/Xlibint.h b/include/X11/Xlibint.h
index 2ce356d..43d1f2a 100644
--- a/include/X11/Xlibint.h
+++ b/include/X11/Xlibint.h
@@ -420,6 +420,18 @@ extern LockInfoPtr _Xglobal_lock;
 #define WORD64ALIGN
 #endif /* WORD64 */
 
+/**
+ * Return a len-sized request buffer for the request type. This function may
+ * flush the output queue.
+ *
+ * @param dpy The display connection
+ * @param type The request type
+ * @param len Length of the request in bytes
+ *
+ * @returns A pointer to the request buffer with a few default values
+ * initialized.
+ */
+extern void *_XGetRequest(Display *dpy, CARD8 type, size_t len);
 
 /*
  * GetReq - Get the next available X request packet in the buffer and
@@ -432,25 +444,10 @@ extern LockInfoPtr _Xglobal_lock;
 
 #if !defined(UNIXCPP) || defined(ANSICPP)
 #define GetReq(name, req) \
-        WORD64ALIGN\
-	if ((dpy->bufptr + SIZEOF(x##name##Req)) > dpy->bufmax)\
-		_XFlush(dpy);\
-	req = (x##name##Req *)(dpy->last_req = dpy->bufptr);\
-	req->reqType = X_##name;\
-	req->length = (SIZEOF(x##name##Req))>>2;\
-	dpy->bufptr += SIZEOF(x##name##Req);\
-	dpy->request++
-
+	req = (x##name##Req *) _XGetRequest(dpy, X_##name, SIZEOF(x##name##Req))
 #else  /* non-ANSI C uses empty comment instead of "##" for token concatenation */
 #define GetReq(name, req) \
-        WORD64ALIGN\
-	if ((dpy->bufptr + SIZEOF(x/**/name/**/Req)) > dpy->bufmax)\
-		_XFlush(dpy);\
-	req = (x/**/name/**/Req *)(dpy->last_req = dpy->bufptr);\
-	req->reqType = X_/**/name;\
-	req->length = (SIZEOF(x/**/name/**/Req))>>2;\
-	dpy->bufptr += SIZEOF(x/**/name/**/Req);\
-	dpy->request++
+	req = (x/**/name/**/Req *) _XGetRequest(dpy, X_/**/name, SIZEOF(x/**/name/**/Req))
 #endif
 
 /* GetReqExtra is the same as GetReq, but allocates "n" additional
@@ -458,24 +455,10 @@ extern LockInfoPtr _Xglobal_lock;
 
 #if !defined(UNIXCPP) || defined(ANSICPP)
 #define GetReqExtra(name, n, req) \
-        WORD64ALIGN\
-	if ((dpy->bufptr + SIZEOF(x##name##Req) + n) > dpy->bufmax)\
-		_XFlush(dpy);\
-	req = (x##name##Req *)(dpy->last_req = dpy->bufptr);\
-	req->reqType = X_##name;\
-	req->length = (SIZEOF(x##name##Req) + n)>>2;\
-	dpy->bufptr += SIZEOF(x##name##Req) + n;\
-	dpy->request++
+	req = (x##name##Req *) _XGetRequest(dpy, X_##name, SIZEOF(x##name##Req) + n)
 #else
 #define GetReqExtra(name, n, req) \
-        WORD64ALIGN\
-	if ((dpy->bufptr + SIZEOF(x/**/name/**/Req) + n) > dpy->bufmax)\
-		_XFlush(dpy);\
-	req = (x/**/name/**/Req *)(dpy->last_req = dpy->bufptr);\
-	req->reqType = X_/**/name;\
-	req->length = (SIZEOF(x/**/name/**/Req) + n)>>2;\
-	dpy->bufptr += SIZEOF(x/**/name/**/Req) + n;\
-	dpy->request++
+	req = (x/**/name/**/Req *) _XGetRequest(dpy, X_/**/name, SIZEOF(x/**/name/**/Req) + n)
 #endif
 
 
diff --git a/src/XlibInt.c b/src/XlibInt.c
index 3db151e..a8f5d08 100644
--- a/src/XlibInt.c
+++ b/src/XlibInt.c
@@ -1956,6 +1956,37 @@ Screen *_XScreenOfWindow(Display *dpy, Window w)
 }
 
 
+/*
+ * WARNING: This implementation's pre-conditions and post-conditions
+ * must remain compatible with the old macro-based implementations of
+ * GetReq, GetReqExtra, GetResReq, and GetEmptyReq. The portions of the
+ * Display structure affected by those macros are part of libX11's
+ * ABI.
+ */
+void *_XGetRequest(Display *dpy, CARD8 type, size_t len)
+{
+    xReq *req;
+
+    WORD64ALIGN
+
+    if (dpy->bufptr + len > dpy->bufmax)
+	_XFlush(dpy);
+
+    if (len % 4)
+	fprintf(stderr,
+		"Xlib: request %d length %zd not a multiple of 4.\n",
+		type, len);
+
+    dpy->last_req = dpy->bufptr;
+
+    req = (xReq*)dpy->bufptr;
+    req->reqType = type;
+    req->length = len / 4;
+    dpy->bufptr += len;
+    dpy->request++;
+    return req;
+}
+
 #if defined(WIN32)
 
 /*

commit d8956520deb79c1cbb5e974c175bf8493859b22b
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date:   Fri Oct 14 17:53:00 2011 -0700

    Fix "nomal" -> "normal" typo in several comments
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>

diff --git a/modules/lc/gen/lcGenConv.c b/modules/lc/gen/lcGenConv.c
index 4a3a6fc..42d63c5 100644
--- a/modules/lc/gen/lcGenConv.c
+++ b/modules/lc/gen/lcGenConv.c
@@ -1869,7 +1869,7 @@ output:
 	return -1;
     }
 
-    /* nomal end */
+    /* normal end */
     *from = (XPointer) inbufptr;
     *to = (XPointer) outbufptr;
 
@@ -2168,7 +2168,7 @@ end:
         return -1;
     }
 
-    /* nomal end */
+    /* normal end */
     *from = (XPointer) inbufptr;
     *to = (XPointer) outbufptr;
 
@@ -2222,7 +2222,7 @@ end:
 	return -1;
     }
 
-    /* nomal end */
+    /* normal end */
     *from = (XPointer) src;
     *from_left = src_left;
 

commit 002b36e308a26a152504f9b40aa08a0dce9a7991
Author: Xue Wei <Wei.Xue@Sun.COM>
Date:   Fri Oct 14 17:39:21 2011 -0700

    mbtocs should not truncate input
    
    Fixes pasting more than 1024 bytes into xterm, as described in
    https://bugs.freedesktop.org/show_bug.cgi?id=25209
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>

diff --git a/modules/lc/gen/lcGenConv.c b/modules/lc/gen/lcGenConv.c
index 7a113a7..4a3a6fc 100644
--- a/modules/lc/gen/lcGenConv.c
+++ b/modules/lc/gen/lcGenConv.c
@@ -1784,9 +1784,6 @@ mbtocs(
         return( 0 );
     }
 
-    if (*from_left > *to_left)
-        *from_left = *to_left;
-
     while (*from_left && *to_left) {
 
 	ch = *inbufptr++;

commit 9b8d8c9e5b27273e8856a3851ba9b68022bed3cd
Author: Marko Myllynen <myllynen@redhat.com>
Date:   Mon Oct 10 09:41:13 2011 +0300

    Add new compose sequences
    
    This patch adds few new compose sequences to the en_US map, ligatures
    common in typesetting and sequences already in use in the fi_FI map.
    
    https://bugs.freedesktop.org/show_bug.cgi?id=30621
    https://bugs.freedesktop.org/show_bug.cgi?id=34523
    
    Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com>

diff --git a/nls/en_US.UTF-8/Compose.pre b/nls/en_US.UTF-8/Compose.pre
index 907720e..d5b01b1 100644
--- a/nls/en_US.UTF-8/Compose.pre
+++ b/nls/en_US.UTF-8/Compose.pre
@@ -110,6 +110,14 @@ XCOMM Spaces
 <Multi_key> <O> <E>              	: "Œ"   OE # LATIN CAPITAL LIGATURE OE
 <Multi_key> <a> <e>              	: "æ"   ae # LATIN SMALL LETTER AE
 <Multi_key> <A> <E>              	: "Æ"   AE # LATIN CAPITAL LETTER AE
+<Multi_key> <f> <f>              	: "ff"   Ufb00 # LATIN SMALL LIGATURE FF
+<Multi_key> <f> <i>              	: "fi"   Ufb01 # LATIN SMALL LIGATURE FI
+<Multi_key> <f> <l>              	: "fl"   Ufb02 # LATIN SMALL LIGATURE FL
+<Multi_key> <F> <i>              	: "ffi"   Ufb03 # LATIN SMALL LIGATURE FFI
+<Multi_key> <F> <l>              	: "ffl"   Ufb04 # LATIN SMALL LIGATURE FFL
+<Multi_key> <I> <J>              	: "IJ"   U0132 # LATIN CAPITAL LIGATURE IJ
+<Multi_key> <I> <j>              	: "IJ"   U0132 # LATIN CAPITAL LIGATURE IJ
+<Multi_key> <i> <j>              	: "ij"   U0133 # LATIN SMALL LIGATURE IJ
 
 <Multi_key> <o> <o>              	: "°"   degree # DEGREE SIGN
 
@@ -193,6 +201,8 @@ XCOMM "₵" U20b5 CEDI SIGN
 XCOMM Long S
 <Multi_key> <f> <s>              	: "ſ"   U017f # LATIN SMALL LETTER LONG S
 <Multi_key> <f> <S>              	: "ſ"   U017f # LATIN SMALL LETTER LONG S
+<dead_abovedot> <Multi_key> <f> <s>	: "ẛ"   U1e9b # LATIN SMALL LETTER LONG S WITH DOT ABOVE
+<Multi_key> <dead_abovedot> <f> <s>	: "ẛ"   U1e9b # LATIN SMALL LETTER LONG S WITH DOT ABOVE
 
 XCOMM Dashes
 <Multi_key> <minus> <minus> <period> 	: "–"   U2013 # EN DASH
@@ -4173,6 +4183,7 @@ XCOMM Part 3
 <Multi_key> <less> <minus> 	: "←" U2190 # LEFTWARDS ARROW
 <Multi_key> <minus> <greater> 	: "→" U2192 # RIGHTWARDS ARROW
 <Multi_key> <U2203> <U0338> 	: "∄"   U2204 # THERE DOES NOT EXIST
+<Multi_key> <braceleft> <braceright>	: "∅"   U2205 # EMPTY SET
 <Multi_key> <U2208> <U0338> 	: "∉"   U2209 # NOT AN ELEMENT OF
 <Multi_key> <U220B> <U0338> 	: "∌"   U220C # DOES NOT CONTAIN AS MEMBER
 <Multi_key> <U2223> <U0338> 	: "∤"   U2224 # DOES NOT DIVIDE
@@ -4219,6 +4230,7 @@ XCOMM Part 3
 <Multi_key> <U22B3> <U0338> 	: "⋫"   U22EB # DOES NOT CONTAIN AS NORMAL SUBGROUP
 <Multi_key> <U22B4> <U0338> 	: "⋬"   U22EC # NOT NORMAL SUBGROUP OF OR EQUAL TO
 <Multi_key> <U22B5> <U0338> 	: "⋭"   U22ED # DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL
+<Multi_key> <d> <i>		: "⌀"   U2300 # DIAMETER SIGN
 <Multi_key> <parenleft> <1> <parenright> 	: "①"   U2460 # CIRCLED DIGIT ONE
 <Multi_key> <parenleft> <KP_1> <parenright> 	: "①"   U2460 # CIRCLED DIGIT ONE
 <Multi_key> <parenleft> <2> <parenright> 	: "②"   U2461 # CIRCLED DIGIT TWO
@@ -4972,6 +4984,7 @@ XCOMM
 <dead_hook> <p> 		      : "ƥ"   U01A5               # LATIN SMALL LETTER P WITH HOOK
 <dead_hook> <q> 		      : "ʠ"   U02A0               # LATIN SMALL LETTER Q WITH HOOK
 <dead_hook> <U025C> 		      : "ɝ"   U025D               # LATIN SMALL LETTER REVERSED OPEN E WITH HOOK
+<dead_hook> <r> 		      : "ɼ"   U027C               # LATIN SMALL LETTER R WITH LONG LEG
 <dead_hook> <s> 		      : "ʂ"   U0282               # LATIN SMALL LETTER S WITH HOOK
 <dead_hook> <schwa> 		      : "ɚ"   U025A               # LATIN SMALL LETTER SCHWA WITH HOOK
 <dead_hook> <T> 		      : "Ƭ"   U01AC               # LATIN CAPITAL LETTER T WITH HOOK

commit 738f7b867341c1da87ee667d48815822715c3e75
Author: Choe Hwanjin <choe.hwanjin@gmail.com>
Date:   Thu Oct 13 07:58:02 2011 +0900

    XIM: Make Xim handle NEED_SYNC_REPLY flag
    
    NEED_SYNC_REPLY flag should be in Xim not in Xic.
    Because the focused Xic can be changed before sending sync reply.
    After focused Xic changed, the new Xic doesn't have NEED_SYNC_REPLY
    flag enabled, so libX11 doesn't send XIM_SYNC_REPLY packet.
    
    This patch adds sync reply flag to Xim and removes sync reply
    from Xic.
    
    Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=7869
    
    Signed-off-by: Choe Hwanjin <choe.hwanjin@gmail.com>
    Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com>

diff --git a/modules/im/ximcp/imDefFlt.c b/modules/im/ximcp/imDefFlt.c
index ee304c8..1e4f389 100644
--- a/modules/im/ximcp/imDefFlt.c
+++ b/modules/im/ximcp/imDefFlt.c
@@ -128,9 +128,9 @@ _XimPendingFilter(
 {
     Xim          im = (Xim)ic->core.im;
 
-    if (IS_NEED_SYNC_REPLY(ic)) {
+    if (IS_NEED_SYNC_REPLY(im)) {
 	(void)_XimProcSyncReply(im, ic);
-	UNMARK_NEED_SYNC_REPLY(ic);
+	UNMARK_NEED_SYNC_REPLY(im);
     }
     return;
 }
@@ -140,13 +140,11 @@ _XimProtoKeypressFilter(
     Xic		 ic,
     XKeyEvent	*ev)
 {
-#ifdef XIM_CONNECTABLE
     Xim		im = (Xim)ic->core.im;
-#endif
 
-    if (IS_FABLICATED(ic)) {
+    if (IS_FABRICATED(im)) {
 	_XimPendingFilter(ic);
-	UNMARK_FABLICATED(ic);
+	UNMARK_FABRICATED(im);
 	return NOTFILTERD;
     }
 
@@ -203,13 +201,11 @@ _XimProtoKeyreleaseFilter(
     Xic		 ic,
     XKeyEvent	*ev)
 {
-#ifdef XIM_CONNECTABLE
     Xim		im = (Xim)ic->core.im;
-#endif
 
-    if (IS_FABLICATED(ic)) {
+    if (IS_FABRICATED(im)) {
 	_XimPendingFilter(ic);
-	UNMARK_FABLICATED(ic);
+	UNMARK_FABRICATED(im);
 	return NOTFILTERD;
     }
 
diff --git a/modules/im/ximcp/imDefIc.c b/modules/im/ximcp/imDefIc.c
index a962c1b..a06f6a7 100644
--- a/modules/im/ximcp/imDefIc.c
+++ b/modules/im/ximcp/imDefIc.c
@@ -968,8 +968,6 @@ _XimProtoSetFocus(
     (void)_XimWrite(im, len, (XPointer)buf);
     _XimFlush(im);
 
-    MARK_FOCUSED(ic);
-
     _XimRegisterFilter(ic);
     return;
 }
@@ -1015,8 +1013,6 @@ _XimProtoUnsetFocus(
     (void)_XimWrite(im, len, (XPointer)buf);
     _XimFlush(im);
 
-    UNMARK_FOCUSED(ic);
-
     _XimUnregisterFilter(ic);
     return;
 }
diff --git a/modules/im/ximcp/imDefLkup.c b/modules/im/ximcp/imDefLkup.c
index 996d36a..cf75919 100644
--- a/modules/im/ximcp/imDefLkup.c
+++ b/modules/im/ximcp/imDefLkup.c
@@ -213,12 +213,8 @@ _XimRespSyncReply(
     Xic		 ic,
     BITMASK16	 mode)
 {
-    if (mode & XimSYNCHRONUS) /* SYNC Request */ {
-	if (IS_FOCUSED(ic))
-	    MARK_NEED_SYNC_REPLY(ic);
-	else
-	    _XimProcSyncReply((Xim)ic->core.im, ic);
-    }
+    if (mode & XimSYNCHRONUS) /* SYNC Request */
+	MARK_NEED_SYNC_REPLY(ic->core.im);
 
     return True;
 }
@@ -356,7 +352,7 @@ _XimProcEvent(
     ev->xany.serial |= serial << 16;
     ev->xany.send_event = False;
     ev->xany.display = d;
-    MARK_FABLICATED(ic);
+    MARK_FABRICATED(ic->core.im);
     return;
 }
 
@@ -708,7 +704,7 @@ _XimCommitRecv(
 
     (void)_XimRespSyncReply(ic, flag);
 
-    MARK_FABLICATED(ic);
+    MARK_FABRICATED(im);
 
     ev.type = KeyPress;
     ev.send_event = False;
diff --git a/modules/im/ximcp/imExten.c b/modules/im/ximcp/imExten.c
index 946d780..65e59bc 100644
--- a/modules/im/ximcp/imExten.c
+++ b/modules/im/ximcp/imExten.c
@@ -159,7 +159,7 @@ _XimProcExtForwardKeyEvent(
     XPutBackEvent(im->core.display, &ev);
 
     _XimRespSyncReply(ic, buf_s[0]);
-    MARK_FABLICATED(ic);
+    MARK_FABRICATED(im);
 
     return True;
 }
diff --git a/src/xlibi18n/XimintP.h b/src/xlibi18n/XimintP.h
index 0e384ab..14a7e6d 100644
--- a/src/xlibi18n/XimintP.h
+++ b/src/xlibi18n/XimintP.h
@@ -161,6 +161,8 @@ typedef struct _XimProtoPrivateRec {
 #define DELAYBINDABLE		(1L << 3)
 #define RECONNECTABLE		(1L << 4)
 #endif /* XIM_CONNECTABLE */
+#define FABRICATED		(1L << 5)
+#define NEED_SYNC_REPLY		(1L << 6)
 
 /*
  * macro for the flag of XIMPrivateRec
@@ -199,6 +201,20 @@ typedef struct _XimProtoPrivateRec {
     (((Xim)im)->private.proto.flag &= ~(DELAYBINDABLE|RECONNECTABLE))
 #endif /* XIM_CONNECTABLE */
 
+#define IS_FABRICATED(im) \
+		(((Xim)im)->private.proto.flag & FABRICATED)
+#define MARK_FABRICATED(im) \
+		(((Xim)im)->private.proto.flag |= FABRICATED)
+#define UNMARK_FABRICATED(im) \
+		(((Xim)im)->private.proto.flag &= ~FABRICATED)
+
+#define IS_NEED_SYNC_REPLY(im) \
+		(((Xim)im)->private.proto.flag & NEED_SYNC_REPLY)
+#define MARK_NEED_SYNC_REPLY(im) \
+		(((Xim)im)->private.proto.flag |= NEED_SYNC_REPLY)
+#define UNMARK_NEED_SYNC_REPLY(im) \
+		(((Xim)im)->private.proto.flag &= ~NEED_SYNC_REPLY)
+
 /*
  * bit mask for the register_filter_event of XIMPrivateRec/XICPrivateRec
  */
@@ -259,9 +275,6 @@ typedef struct _XicProtoPrivateRec {
  * bit mask for the flag of XICPrivateRec
  */
 #define IC_CONNECTED		(1L)
-#define FABLICATED		(1L << 1)
-#define	NEED_SYNC_REPLY		(1L << 2)
-#define FOCUSED			(1L << 3)
 
 /*
  * macro for the flag of XICPrivateRec
@@ -273,27 +286,6 @@ typedef struct _XicProtoPrivateRec {
 #define	UNMARK_IC_CONNECTED(ic) \
 		(((Xic)ic)->private.proto.flag &= ~IC_CONNECTED)
 
-#define IS_FABLICATED(ic) \
-		(((Xic)ic)->private.proto.flag & FABLICATED)
-#define MARK_FABLICATED(ic) \
-		(((Xic)ic)->private.proto.flag |= FABLICATED)
-#define UNMARK_FABLICATED(ic) \
-		(((Xic)ic)->private.proto.flag &= ~FABLICATED)
-
-#define	IS_NEED_SYNC_REPLY(ic) \
-		(((Xic)ic)->private.proto.flag & NEED_SYNC_REPLY)
-#define	MARK_NEED_SYNC_REPLY(ic) \
-		(((Xic)ic)->private.proto.flag |= NEED_SYNC_REPLY)
-#define	UNMARK_NEED_SYNC_REPLY(ic) \
-		(((Xic)ic)->private.proto.flag &= ~NEED_SYNC_REPLY)
-
-#define IS_FOCUSED(ic) \
-		(((Xic)ic)->private.proto.flag & FOCUSED)
-#define MARK_FOCUSED(ic) \
-		(((Xic)ic)->private.proto.flag |= FOCUSED)
-#define UNMARK_FOCUSED(ic) \
-		(((Xic)ic)->private.proto.flag &= ~FOCUSED)
-
 /*
  * macro for the filter_event_mask of XICPrivateRec
  */

commit 50e15379331c436851abb194251cde96999e67b3
Author: Bodo Graumann <mail@bodograumann.de>
Date:   Mon Oct 10 16:40:52 2011 +0200

    libX11: Fixing modifier key range in Xutil.h (Bug #21910)
    
    IsModifierKey, defined in include/X11/Xutil.h, is a macro determining,
    which keys are regarded as modifiers. The constants ISO_Level5_Shift,
    ISO_Level5_Latch and ISO_Level5_Lock where excluded previously, leaving
    some Neo2 modifiers functionless in combination with compose.
    This patch adjusts the range to include the correct, full range of
    modifier constants.
    
    Neo2 Bug 277 <http://wiki.neo-layout.org/ticket/277>
    
    X.Org Bug 21910 <http://bugs.freedesktop.org/show_bug.cgi?id=21910>
    
    Signed-off-by: Bodo Graumann <mail@bodograumann.de>
    Reviewed-by: Daniel Stone <daniel@fooishbar.org>

diff --git a/include/X11/Xutil.h b/include/X11/Xutil.h
index 702823f..8cab50e 100644
--- a/include/X11/Xutil.h
+++ b/include/X11/Xutil.h
@@ -250,7 +250,7 @@ typedef struct _XComposeStatus {
 #define IsModifierKey(keysym) \
   ((((KeySym)(keysym) >= XK_Shift_L) && ((KeySym)(keysym) <= XK_Hyper_R)) \
    || (((KeySym)(keysym) >= XK_ISO_Lock) && \
-       ((KeySym)(keysym) <= XK_ISO_Last_Group_Lock)) \
+       ((KeySym)(keysym) <= XK_ISO_Level5_Lock)) \
    || ((KeySym)(keysym) == XK_Mode_switch) \
    || ((KeySym)(keysym) == XK_Num_Lock))
 #else

commit b5a108624331fabf393223c0891914cc54d4caf4
Author: Yann Droneaud <yann@droneaud.fr>
Date:   Tue Oct 11 17:27:59 2011 +0200

    Return name instead of False in XSetICValues()
    
    In case of error, XSetICValues() must return the first argument
    that failed to be set.
    
    But in some error paths, it returns False, which is converted to NULL,
    so the function returns OK in case of error.
    
    Signed-off-by: Yann Droneaud <yann@droneaud.fr>
    Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com>

diff --git a/modules/im/ximcp/imRm.c b/modules/im/ximcp/imRm.c
index 53b2458..01e74c2 100644
--- a/modules/im/ximcp/imRm.c
+++ b/modules/im/ximcp/imRm.c
@@ -2885,13 +2885,13 @@ _XimSetICValueData(
 
 	    if(mode & XIM_PREEDIT_ATTR) {
 		if (!_XimEncodeLocalPreeditValue(ic, res, (XPointer)p))
-	    	    return False;
+		    return p->name;
     	    } else if(mode & XIM_STATUS_ATTR) {
 		if (!_XimEncodeLocalStatusValue(ic, res, (XPointer)p))
-	    	    return False;
+		    return p->name;
     	    } else {
 		if (!_XimEncodeLocalTopValue(ic, res, (XPointer)p, flag))
-	    	    return False;
+		    return p->name;
     	    }
 	    if(_XimEncodeLocalICAttr(ic, res, top, p, mode) == False) {
 		return p->name;

commit 10992cb8dc5e4d938e7e5a633b68a81b5875f3ba
Author: Yann Droneaud <yann@droneaud.fr>
Date:   Sun Oct 9 17:56:45 2011 +0200


Reply to: