1fa1a4d73ae9de710f54efcdf736203caa7a064d
[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 #include <X11/Xlib-xcb.h>
11 #include "locking.h"
12
13 #define XLIB_SEQUENCE_COMPARE(a,op,b)   (((long) (a) - (long) (b)) op 0)
14
15 typedef struct PendingRequest PendingRequest;
16 struct PendingRequest {
17         PendingRequest *next;
18         unsigned long sequence;
19         unsigned reply_waiter;
20 };
21
22 typedef struct _X11XCBPrivate {
23         xcb_connection_t *connection;
24         PendingRequest *pending_requests;
25         PendingRequest *pending_requests_tail;
26         xcb_generic_event_t *next_event;
27         char *real_bufmax;
28         char *reply_data;
29         int reply_length;
30         int reply_consumed;
31         uint64_t last_flushed;
32         enum XEventQueueOwner event_owner;
33         XID next_xid;
34
35         /* handle simultaneous threads waiting for responses */
36         xcondition_t event_notify;
37         int event_waiter;
38         xcondition_t reply_notify;
39 } _X11XCBPrivate;
40
41 /* xcb_disp.c */
42
43 int _XConnectXCB(Display *dpy, _Xconst char *display, int *screenp);
44 void _XFreeX11XCBStructure(Display *dpy);
45
46 #endif /* XXCBINT_H */