a8c9a670b4a0668765f7108788201eddb338ccc7
[framework/uifw/xorg/lib/libx11.git] / src / Xxcbint.h
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)   (((long) (a) - (long) (b)) op 0)
17
18 typedef struct PendingRequest PendingRequest;
19 struct PendingRequest {
20         PendingRequest *next;
21         unsigned long 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         char *real_bufmax;
31         char *reply_data;
32         int reply_length;
33         int reply_consumed;
34         uint64_t last_flushed;
35         enum XEventQueueOwner event_owner;
36         XID next_xid;
37
38         /* handle simultaneous threads waiting for responses */
39         xcondition_t event_notify;
40         int event_waiter;
41         xcondition_t reply_notify;
42 } _X11XCBPrivate;
43
44 /* xcb_disp.c */
45
46 int _XConnectXCB(Display *dpy, _Xconst char *display, int *screenp);
47 void _XFreeX11XCBStructure(Display *dpy);
48
49 #endif /* XXCBINT_H */