aboutsummaryrefslogtreecommitdiff
path: root/nx-X11/lib/X11/XlibInt.c
diff options
context:
space:
mode:
Diffstat (limited to 'nx-X11/lib/X11/XlibInt.c')
-rw-r--r--nx-X11/lib/X11/XlibInt.c54
1 files changed, 54 insertions, 0 deletions
diff --git a/nx-X11/lib/X11/XlibInt.c b/nx-X11/lib/X11/XlibInt.c
index 49535fe18..175f5b92f 100644
--- a/nx-X11/lib/X11/XlibInt.c
+++ b/nx-X11/lib/X11/XlibInt.c
@@ -2751,6 +2751,30 @@ void _XEatData(
#undef SCRATCHSIZE
}
+/*
+ Port from libXfixes commit
+ b031e3b60fa1af9e49449f23d4a84395868be3ab We need this here to
+ enable linking of current libXrender against libNX_X11 instead of
+ the system's libX11
+
+ The original implementation of this function (libX11 commit
+ 9f5d83706543696fc944c1835a403938c06f2cc5) uses xcb stuff which we
+ do not have in libNX_X11. So we take a workaround from another
+ lib. This workaround had been implemented temporarily in a couple
+ of X libs, see e.g. https://lists.x.org/archives/xorg-devel/2013-July/036763.html.
+*/
+#include <X11/Xmd.h> /* for LONG64 on 64-bit platforms */
+#include <limits.h>
+
+void _XEatDataWords(Display *dpy, unsigned long n)
+{
+#ifndef LONG64
+ if (n >= (ULONG_MAX >> 2))
+ _XIOError(dpy);
+#endif
+ _XEatData (dpy, n << 2);
+}
+
/*
* _XEnq - Place event packets on the display's queue.
@@ -3732,6 +3756,36 @@ Screen *_XScreenOfWindow (dpy, w)
return NULL;
}
+/*
+ * 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)