diff options
Diffstat (limited to 'meta')
-rw-r--r-- | meta/recipes-graphics/xorg-lib/libx11-1.4.4/0001-Add-_XGetRequest-as-substitute-for-GetReq-GetReqExtr.patch | 137 | ||||
-rw-r--r-- | meta/recipes-graphics/xorg-lib/libx11_1.4.4.bb | 3 |
2 files changed, 140 insertions, 0 deletions
diff --git a/meta/recipes-graphics/xorg-lib/libx11-1.4.4/0001-Add-_XGetRequest-as-substitute-for-GetReq-GetReqExtr.patch b/meta/recipes-graphics/xorg-lib/libx11-1.4.4/0001-Add-_XGetRequest-as-substitute-for-GetReq-GetReqExtr.patch new file mode 100644 index 0000000000..aedb5c4366 --- /dev/null +++ b/meta/recipes-graphics/xorg-lib/libx11-1.4.4/0001-Add-_XGetRequest-as-substitute-for-GetReq-GetReqExtr.patch | |||
@@ -0,0 +1,137 @@ | |||
1 | From 4a060f993bf676cf21ad9784e010f54134da7b40 Mon Sep 17 00:00:00 2001 | ||
2 | From: Peter Hutterer <peter.hutterer@who-t.net> | ||
3 | Date: Mon, 17 Oct 2011 09:45:15 +1000 | ||
4 | Subject: [PATCH] Add _XGetRequest as substitute for GetReq/GetReqExtra | ||
5 | |||
6 | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> | ||
7 | Reviewed-by: Jamey Sharp <jamey@minilop.net> | ||
8 | --- | ||
9 | include/X11/Xlibint.h | 49 ++++++++++++++++--------------------------------- | ||
10 | src/XlibInt.c | 31 +++++++++++++++++++++++++++++++ | ||
11 | 2 files changed, 47 insertions(+), 33 deletions(-) | ||
12 | |||
13 | Upstream-Status: Backport | ||
14 | |||
15 | diff --git a/include/X11/Xlibint.h b/include/X11/Xlibint.h | ||
16 | index 2ce356d..43d1f2a 100644 | ||
17 | --- a/include/X11/Xlibint.h | ||
18 | +++ b/include/X11/Xlibint.h | ||
19 | @@ -420,6 +420,18 @@ extern LockInfoPtr _Xglobal_lock; | ||
20 | #define WORD64ALIGN | ||
21 | #endif /* WORD64 */ | ||
22 | |||
23 | +/** | ||
24 | + * Return a len-sized request buffer for the request type. This function may | ||
25 | + * flush the output queue. | ||
26 | + * | ||
27 | + * @param dpy The display connection | ||
28 | + * @param type The request type | ||
29 | + * @param len Length of the request in bytes | ||
30 | + * | ||
31 | + * @returns A pointer to the request buffer with a few default values | ||
32 | + * initialized. | ||
33 | + */ | ||
34 | +extern void *_XGetRequest(Display *dpy, CARD8 type, size_t len); | ||
35 | |||
36 | /* | ||
37 | * GetReq - Get the next available X request packet in the buffer and | ||
38 | @@ -432,25 +444,10 @@ extern LockInfoPtr _Xglobal_lock; | ||
39 | |||
40 | #if !defined(UNIXCPP) || defined(ANSICPP) | ||
41 | #define GetReq(name, req) \ | ||
42 | - WORD64ALIGN\ | ||
43 | - if ((dpy->bufptr + SIZEOF(x##name##Req)) > dpy->bufmax)\ | ||
44 | - _XFlush(dpy);\ | ||
45 | - req = (x##name##Req *)(dpy->last_req = dpy->bufptr);\ | ||
46 | - req->reqType = X_##name;\ | ||
47 | - req->length = (SIZEOF(x##name##Req))>>2;\ | ||
48 | - dpy->bufptr += SIZEOF(x##name##Req);\ | ||
49 | - dpy->request++ | ||
50 | - | ||
51 | + req = (x##name##Req *) _XGetRequest(dpy, X_##name, SIZEOF(x##name##Req)) | ||
52 | #else /* non-ANSI C uses empty comment instead of "##" for token concatenation */ | ||
53 | #define GetReq(name, req) \ | ||
54 | - WORD64ALIGN\ | ||
55 | - if ((dpy->bufptr + SIZEOF(x/**/name/**/Req)) > dpy->bufmax)\ | ||
56 | - _XFlush(dpy);\ | ||
57 | - req = (x/**/name/**/Req *)(dpy->last_req = dpy->bufptr);\ | ||
58 | - req->reqType = X_/**/name;\ | ||
59 | - req->length = (SIZEOF(x/**/name/**/Req))>>2;\ | ||
60 | - dpy->bufptr += SIZEOF(x/**/name/**/Req);\ | ||
61 | - dpy->request++ | ||
62 | + req = (x/**/name/**/Req *) _XGetRequest(dpy, X_/**/name, SIZEOF(x/**/name/**/Req)) | ||
63 | #endif | ||
64 | |||
65 | /* GetReqExtra is the same as GetReq, but allocates "n" additional | ||
66 | @@ -458,24 +455,10 @@ extern LockInfoPtr _Xglobal_lock; | ||
67 | |||
68 | #if !defined(UNIXCPP) || defined(ANSICPP) | ||
69 | #define GetReqExtra(name, n, req) \ | ||
70 | - WORD64ALIGN\ | ||
71 | - if ((dpy->bufptr + SIZEOF(x##name##Req) + n) > dpy->bufmax)\ | ||
72 | - _XFlush(dpy);\ | ||
73 | - req = (x##name##Req *)(dpy->last_req = dpy->bufptr);\ | ||
74 | - req->reqType = X_##name;\ | ||
75 | - req->length = (SIZEOF(x##name##Req) + n)>>2;\ | ||
76 | - dpy->bufptr += SIZEOF(x##name##Req) + n;\ | ||
77 | - dpy->request++ | ||
78 | + req = (x##name##Req *) _XGetRequest(dpy, X_##name, SIZEOF(x##name##Req) + n) | ||
79 | #else | ||
80 | #define GetReqExtra(name, n, req) \ | ||
81 | - WORD64ALIGN\ | ||
82 | - if ((dpy->bufptr + SIZEOF(x/**/name/**/Req) + n) > dpy->bufmax)\ | ||
83 | - _XFlush(dpy);\ | ||
84 | - req = (x/**/name/**/Req *)(dpy->last_req = dpy->bufptr);\ | ||
85 | - req->reqType = X_/**/name;\ | ||
86 | - req->length = (SIZEOF(x/**/name/**/Req) + n)>>2;\ | ||
87 | - dpy->bufptr += SIZEOF(x/**/name/**/Req) + n;\ | ||
88 | - dpy->request++ | ||
89 | + req = (x/**/name/**/Req *) _XGetRequest(dpy, X_/**/name, SIZEOF(x/**/name/**/Req) + n) | ||
90 | #endif | ||
91 | |||
92 | |||
93 | diff --git a/src/XlibInt.c b/src/XlibInt.c | ||
94 | index 3db151e..a8f5d08 100644 | ||
95 | --- a/src/XlibInt.c | ||
96 | +++ b/src/XlibInt.c | ||
97 | @@ -1956,6 +1956,37 @@ Screen *_XScreenOfWindow(Display *dpy, Window w) | ||
98 | } | ||
99 | |||
100 | |||
101 | +/* | ||
102 | + * WARNING: This implementation's pre-conditions and post-conditions | ||
103 | + * must remain compatible with the old macro-based implementations of | ||
104 | + * GetReq, GetReqExtra, GetResReq, and GetEmptyReq. The portions of the | ||
105 | + * Display structure affected by those macros are part of libX11's | ||
106 | + * ABI. | ||
107 | + */ | ||
108 | +void *_XGetRequest(Display *dpy, CARD8 type, size_t len) | ||
109 | +{ | ||
110 | + xReq *req; | ||
111 | + | ||
112 | + WORD64ALIGN | ||
113 | + | ||
114 | + if (dpy->bufptr + len > dpy->bufmax) | ||
115 | + _XFlush(dpy); | ||
116 | + | ||
117 | + if (len % 4) | ||
118 | + fprintf(stderr, | ||
119 | + "Xlib: request %d length %zd not a multiple of 4.\n", | ||
120 | + type, len); | ||
121 | + | ||
122 | + dpy->last_req = dpy->bufptr; | ||
123 | + | ||
124 | + req = (xReq*)dpy->bufptr; | ||
125 | + req->reqType = type; | ||
126 | + req->length = len / 4; | ||
127 | + dpy->bufptr += len; | ||
128 | + dpy->request++; | ||
129 | + return req; | ||
130 | +} | ||
131 | + | ||
132 | #if defined(WIN32) | ||
133 | |||
134 | /* | ||
135 | -- | ||
136 | 1.7.8.3 | ||
137 | |||
diff --git a/meta/recipes-graphics/xorg-lib/libx11_1.4.4.bb b/meta/recipes-graphics/xorg-lib/libx11_1.4.4.bb index 823b3dcbea..ee1d919b22 100644 --- a/meta/recipes-graphics/xorg-lib/libx11_1.4.4.bb +++ b/meta/recipes-graphics/xorg-lib/libx11_1.4.4.bb | |||
@@ -1,6 +1,8 @@ | |||
1 | require libx11.inc | 1 | require libx11.inc |
2 | inherit gettext | 2 | inherit gettext |
3 | 3 | ||
4 | PR = "r1" | ||
5 | |||
4 | BBCLASSEXTEND = "native nativesdk" | 6 | BBCLASSEXTEND = "native nativesdk" |
5 | 7 | ||
6 | EXTRA_OECONF += "--with-keysymdefdir=${STAGING_INCDIR}/X11" | 8 | EXTRA_OECONF += "--with-keysymdefdir=${STAGING_INCDIR}/X11" |
@@ -12,6 +14,7 @@ DEPENDS += "util-macros xtrans libxdmcp libxau \ | |||
12 | 14 | ||
13 | SRC_URI += " file://keysymdef_include.patch \ | 15 | SRC_URI += " file://keysymdef_include.patch \ |
14 | file://x11_disable_makekeys.patch \ | 16 | file://x11_disable_makekeys.patch \ |
17 | file://0001-Add-_XGetRequest-as-substitute-for-GetReq-GetReqExtr.patch \ | ||
15 | " | 18 | " |
16 | 19 | ||
17 | SRC_URI[md5sum] = "ed7c382cbf8c13425b6a66bcac0ca5d9" | 20 | SRC_URI[md5sum] = "ed7c382cbf8c13425b6a66bcac0ca5d9" |