Home | History | Annotate | Line # | Download | only in src
      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