Commit 02dad70a authored by Peter Hutterer's avatar Peter Hutterer Committed by Ulrich Sibiller

Add _XGetRequest as substitute for GetReq/GetReqExtra

parent 1871ff03
...@@ -437,6 +437,19 @@ extern LockInfoPtr _Xglobal_lock; ...@@ -437,6 +437,19 @@ extern LockInfoPtr _Xglobal_lock;
* X Protocol packetizing macros. * X Protocol packetizing macros.
*/ */
/**
* 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 * GetReq - Get the next available X request packet in the buffer and
* return it. * return it.
...@@ -448,23 +461,10 @@ extern LockInfoPtr _Xglobal_lock; ...@@ -448,23 +461,10 @@ extern LockInfoPtr _Xglobal_lock;
#if !defined(UNIXCPP) || defined(ANSICPP) #if !defined(UNIXCPP) || defined(ANSICPP)
#define GetReq(name, req) \ #define GetReq(name, req) \
if ((dpy->bufptr + SIZEOF(x##name##Req)) > dpy->bufmax)\ req = (x##name##Req *) _XGetRequest(dpy, X_##name, SIZEOF(x##name##Req))
_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++
#else /* non-ANSI C uses empty comment instead of "##" for token concatenation */ #else /* non-ANSI C uses empty comment instead of "##" for token concatenation */
#define GetReq(name, req) \ #define GetReq(name, req) \
if ((dpy->bufptr + SIZEOF(x/**/name/**/Req)) > dpy->bufmax)\ req = (x/**/name/**/Req *) _XGetRequest(dpy, X_/**/name, SIZEOF(x/**/name/**/Req))
_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++
#endif #endif
/* GetReqExtra is the same as GetReq, but allocates "n" additional /* GetReqExtra is the same as GetReq, but allocates "n" additional
...@@ -472,22 +472,10 @@ extern LockInfoPtr _Xglobal_lock; ...@@ -472,22 +472,10 @@ extern LockInfoPtr _Xglobal_lock;
#if !defined(UNIXCPP) || defined(ANSICPP) #if !defined(UNIXCPP) || defined(ANSICPP)
#define GetReqExtra(name, n, req) \ #define GetReqExtra(name, n, req) \
if ((dpy->bufptr + SIZEOF(x##name##Req) + n) > dpy->bufmax)\ req = (x##name##Req *) _XGetRequest(dpy, X_##name, SIZEOF(x##name##Req) + n)
_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++
#else #else
#define GetReqExtra(name, n, req) \ #define GetReqExtra(name, n, req) \
if ((dpy->bufptr + SIZEOF(x/**/name/**/Req) + n) > dpy->bufmax)\ req = (x/**/name/**/Req *) _XGetRequest(dpy, X_/**/name, SIZEOF(x/**/name/**/Req) + n)
_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++
#endif #endif
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment