Xxcbint.h revision d4a3aaf4
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
18typedef struct PendingRequest PendingRequest;
19struct PendingRequest {
20	PendingRequest *next;
21	uint64_t sequence;
22	unsigned reply_waiter;
23};
24
25typedef 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
47int _XConnectXCB(Display *dpy, _Xconst char *display, int *screenp);
48void _XFreeX11XCBStructure(Display *dpy);
49
50_X_HIDDEN
51unsigned long _XNextRequest(Display *dpy);
52
53#endif /* XXCBINT_H */
54