1 /* Copyright (C) 2003-2006 Jamey Sharp, Josh Triplett 2 * This file is licensed under the MIT license. See the file COPYING. */ 3 4 #ifndef XXCBINT_H 5 #define XXCBINT_H 6 7 #include <assert.h> 8 #include <stdint.h> 9 #include <X11/Xlibint.h> 10 #ifdef WIN32 11 #include <X11/Xwindows.h> 12 #endif 13 #include <X11/Xlib-xcb.h> 14 #include "locking.h" 15 16 #define XLIB_SEQUENCE_COMPARE(a,op,b) (((int64_t) (a) - (int64_t) (b)) op 0) 17 18 typedef struct PendingRequest PendingRequest; 19 struct PendingRequest { 20 PendingRequest *next; 21 uint64_t sequence; 22 unsigned reply_waiter; 23 }; 24 25 typedef struct _X11XCBPrivate { 26 xcb_connection_t *connection; 27 PendingRequest *pending_requests; 28 PendingRequest *pending_requests_tail; 29 xcb_generic_event_t *next_event; 30 void *next_response; 31 char *real_bufmax; 32 char *reply_data; 33 int reply_length; 34 int reply_consumed; 35 uint64_t last_flushed; 36 enum XEventQueueOwner event_owner; 37 XID next_xid; 38 39 /* handle simultaneous threads waiting for responses */ 40 xcondition_t event_notify; 41 int event_waiter; 42 xcondition_t reply_notify; 43 } _X11XCBPrivate; 44 45 /* xcb_disp.c */ 46 47 int _XConnectXCB(Display *dpy, _Xconst char *display, int *screenp); 48 void _XFreeX11XCBStructure(Display *dpy); 49 50 _X_HIDDEN 51 unsigned long _XNextRequest(Display *dpy); 52 53 #endif /* XXCBINT_H */ 54