xref: /aosp_15_r20/external/swiftshader/include/xcb/xcb.h (revision 03ce13f70fcc45d86ee91b7ee4cab1936a95046e)
1*03ce13f7SAndroid Build Coastguard Worker /*
2*03ce13f7SAndroid Build Coastguard Worker  * Copyright (C) 2001-2006 Bart Massey, Jamey Sharp, and Josh Triplett.
3*03ce13f7SAndroid Build Coastguard Worker  * All Rights Reserved.
4*03ce13f7SAndroid Build Coastguard Worker  *
5*03ce13f7SAndroid Build Coastguard Worker  * Permission is hereby granted, free of charge, to any person obtaining a
6*03ce13f7SAndroid Build Coastguard Worker  * copy of this software and associated documentation files (the "Software"),
7*03ce13f7SAndroid Build Coastguard Worker  * to deal in the Software without restriction, including without limitation
8*03ce13f7SAndroid Build Coastguard Worker  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9*03ce13f7SAndroid Build Coastguard Worker  * and/or sell copies of the Software, and to permit persons to whom the
10*03ce13f7SAndroid Build Coastguard Worker  * Software is furnished to do so, subject to the following conditions:
11*03ce13f7SAndroid Build Coastguard Worker  *
12*03ce13f7SAndroid Build Coastguard Worker  * The above copyright notice and this permission notice shall be included in
13*03ce13f7SAndroid Build Coastguard Worker  * all copies or substantial portions of the Software.
14*03ce13f7SAndroid Build Coastguard Worker  *
15*03ce13f7SAndroid Build Coastguard Worker  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16*03ce13f7SAndroid Build Coastguard Worker  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17*03ce13f7SAndroid Build Coastguard Worker  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18*03ce13f7SAndroid Build Coastguard Worker  * AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
19*03ce13f7SAndroid Build Coastguard Worker  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20*03ce13f7SAndroid Build Coastguard Worker  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21*03ce13f7SAndroid Build Coastguard Worker  *
22*03ce13f7SAndroid Build Coastguard Worker  * Except as contained in this notice, the names of the authors or their
23*03ce13f7SAndroid Build Coastguard Worker  * institutions shall not be used in advertising or otherwise to promote the
24*03ce13f7SAndroid Build Coastguard Worker  * sale, use or other dealings in this Software without prior written
25*03ce13f7SAndroid Build Coastguard Worker  * authorization from the authors.
26*03ce13f7SAndroid Build Coastguard Worker  */
27*03ce13f7SAndroid Build Coastguard Worker 
28*03ce13f7SAndroid Build Coastguard Worker #ifndef __XCB_H__
29*03ce13f7SAndroid Build Coastguard Worker #define __XCB_H__
30*03ce13f7SAndroid Build Coastguard Worker #include <sys/types.h>
31*03ce13f7SAndroid Build Coastguard Worker 
32*03ce13f7SAndroid Build Coastguard Worker #if defined(__solaris__)
33*03ce13f7SAndroid Build Coastguard Worker #include <inttypes.h>
34*03ce13f7SAndroid Build Coastguard Worker #else
35*03ce13f7SAndroid Build Coastguard Worker #include <stdint.h>
36*03ce13f7SAndroid Build Coastguard Worker #endif
37*03ce13f7SAndroid Build Coastguard Worker 
38*03ce13f7SAndroid Build Coastguard Worker #ifndef _WIN32
39*03ce13f7SAndroid Build Coastguard Worker #include <sys/uio.h>
40*03ce13f7SAndroid Build Coastguard Worker #else
41*03ce13f7SAndroid Build Coastguard Worker #include "xcb_windefs.h"
42*03ce13f7SAndroid Build Coastguard Worker #endif
43*03ce13f7SAndroid Build Coastguard Worker #include <pthread.h>
44*03ce13f7SAndroid Build Coastguard Worker 
45*03ce13f7SAndroid Build Coastguard Worker 
46*03ce13f7SAndroid Build Coastguard Worker #ifdef __cplusplus
47*03ce13f7SAndroid Build Coastguard Worker extern "C" {
48*03ce13f7SAndroid Build Coastguard Worker #endif
49*03ce13f7SAndroid Build Coastguard Worker 
50*03ce13f7SAndroid Build Coastguard Worker /**
51*03ce13f7SAndroid Build Coastguard Worker  * @file xcb.h
52*03ce13f7SAndroid Build Coastguard Worker  */
53*03ce13f7SAndroid Build Coastguard Worker 
54*03ce13f7SAndroid Build Coastguard Worker #ifdef __GNUC__
55*03ce13f7SAndroid Build Coastguard Worker #define XCB_PACKED __attribute__((__packed__))
56*03ce13f7SAndroid Build Coastguard Worker #else
57*03ce13f7SAndroid Build Coastguard Worker #define XCB_PACKED
58*03ce13f7SAndroid Build Coastguard Worker #endif
59*03ce13f7SAndroid Build Coastguard Worker 
60*03ce13f7SAndroid Build Coastguard Worker /**
61*03ce13f7SAndroid Build Coastguard Worker  * @defgroup XCB_Core_API XCB Core API
62*03ce13f7SAndroid Build Coastguard Worker  * @brief Core API of the XCB library.
63*03ce13f7SAndroid Build Coastguard Worker  *
64*03ce13f7SAndroid Build Coastguard Worker  * @{
65*03ce13f7SAndroid Build Coastguard Worker  */
66*03ce13f7SAndroid Build Coastguard Worker 
67*03ce13f7SAndroid Build Coastguard Worker /* Pre-defined constants */
68*03ce13f7SAndroid Build Coastguard Worker 
69*03ce13f7SAndroid Build Coastguard Worker /** Current protocol version */
70*03ce13f7SAndroid Build Coastguard Worker #define X_PROTOCOL 11
71*03ce13f7SAndroid Build Coastguard Worker 
72*03ce13f7SAndroid Build Coastguard Worker /** Current minor version */
73*03ce13f7SAndroid Build Coastguard Worker #define X_PROTOCOL_REVISION 0
74*03ce13f7SAndroid Build Coastguard Worker 
75*03ce13f7SAndroid Build Coastguard Worker /** X_TCP_PORT + display number = server port for TCP transport */
76*03ce13f7SAndroid Build Coastguard Worker #define X_TCP_PORT 6000
77*03ce13f7SAndroid Build Coastguard Worker 
78*03ce13f7SAndroid Build Coastguard Worker /** xcb connection errors because of socket, pipe and other stream errors. */
79*03ce13f7SAndroid Build Coastguard Worker #define XCB_CONN_ERROR 1
80*03ce13f7SAndroid Build Coastguard Worker 
81*03ce13f7SAndroid Build Coastguard Worker /** xcb connection shutdown because of extension not supported */
82*03ce13f7SAndroid Build Coastguard Worker #define XCB_CONN_CLOSED_EXT_NOTSUPPORTED 2
83*03ce13f7SAndroid Build Coastguard Worker 
84*03ce13f7SAndroid Build Coastguard Worker /** malloc(), calloc() and realloc() error upon failure, for eg ENOMEM */
85*03ce13f7SAndroid Build Coastguard Worker #define XCB_CONN_CLOSED_MEM_INSUFFICIENT 3
86*03ce13f7SAndroid Build Coastguard Worker 
87*03ce13f7SAndroid Build Coastguard Worker /** Connection closed, exceeding request length that server accepts. */
88*03ce13f7SAndroid Build Coastguard Worker #define XCB_CONN_CLOSED_REQ_LEN_EXCEED 4
89*03ce13f7SAndroid Build Coastguard Worker 
90*03ce13f7SAndroid Build Coastguard Worker /** Connection closed, error during parsing display string. */
91*03ce13f7SAndroid Build Coastguard Worker #define XCB_CONN_CLOSED_PARSE_ERR 5
92*03ce13f7SAndroid Build Coastguard Worker 
93*03ce13f7SAndroid Build Coastguard Worker /** Connection closed because the server does not have a screen matching the display. */
94*03ce13f7SAndroid Build Coastguard Worker #define XCB_CONN_CLOSED_INVALID_SCREEN 6
95*03ce13f7SAndroid Build Coastguard Worker 
96*03ce13f7SAndroid Build Coastguard Worker /** Connection closed because some FD passing operation failed */
97*03ce13f7SAndroid Build Coastguard Worker #define XCB_CONN_CLOSED_FDPASSING_FAILED 7
98*03ce13f7SAndroid Build Coastguard Worker 
99*03ce13f7SAndroid Build Coastguard Worker #define XCB_TYPE_PAD(T,I) (-(I) & (sizeof(T) > 4 ? 3 : sizeof(T) - 1))
100*03ce13f7SAndroid Build Coastguard Worker 
101*03ce13f7SAndroid Build Coastguard Worker /* Opaque structures */
102*03ce13f7SAndroid Build Coastguard Worker 
103*03ce13f7SAndroid Build Coastguard Worker /**
104*03ce13f7SAndroid Build Coastguard Worker  * @brief XCB Connection structure.
105*03ce13f7SAndroid Build Coastguard Worker  *
106*03ce13f7SAndroid Build Coastguard Worker  * A structure that contain all data that  XCB needs to communicate with an X server.
107*03ce13f7SAndroid Build Coastguard Worker  */
108*03ce13f7SAndroid Build Coastguard Worker typedef struct xcb_connection_t xcb_connection_t;  /**< Opaque structure containing all data that  XCB needs to communicate with an X server. */
109*03ce13f7SAndroid Build Coastguard Worker 
110*03ce13f7SAndroid Build Coastguard Worker 
111*03ce13f7SAndroid Build Coastguard Worker /* Other types */
112*03ce13f7SAndroid Build Coastguard Worker 
113*03ce13f7SAndroid Build Coastguard Worker /**
114*03ce13f7SAndroid Build Coastguard Worker  * @brief Generic iterator.
115*03ce13f7SAndroid Build Coastguard Worker  *
116*03ce13f7SAndroid Build Coastguard Worker  * A generic iterator structure.
117*03ce13f7SAndroid Build Coastguard Worker  */
118*03ce13f7SAndroid Build Coastguard Worker typedef struct {
119*03ce13f7SAndroid Build Coastguard Worker     void *data;   /**< Data of the current iterator */
120*03ce13f7SAndroid Build Coastguard Worker     int rem;    /**< remaining elements */
121*03ce13f7SAndroid Build Coastguard Worker     int index;  /**< index of the current iterator */
122*03ce13f7SAndroid Build Coastguard Worker } xcb_generic_iterator_t;
123*03ce13f7SAndroid Build Coastguard Worker 
124*03ce13f7SAndroid Build Coastguard Worker /**
125*03ce13f7SAndroid Build Coastguard Worker  * @brief Generic reply.
126*03ce13f7SAndroid Build Coastguard Worker  *
127*03ce13f7SAndroid Build Coastguard Worker  * A generic reply structure.
128*03ce13f7SAndroid Build Coastguard Worker  */
129*03ce13f7SAndroid Build Coastguard Worker typedef struct {
130*03ce13f7SAndroid Build Coastguard Worker     uint8_t   response_type;  /**< Type of the response */
131*03ce13f7SAndroid Build Coastguard Worker     uint8_t  pad0;           /**< Padding */
132*03ce13f7SAndroid Build Coastguard Worker     uint16_t sequence;       /**< Sequence number */
133*03ce13f7SAndroid Build Coastguard Worker     uint32_t length;         /**< Length of the response */
134*03ce13f7SAndroid Build Coastguard Worker } xcb_generic_reply_t;
135*03ce13f7SAndroid Build Coastguard Worker 
136*03ce13f7SAndroid Build Coastguard Worker /**
137*03ce13f7SAndroid Build Coastguard Worker  * @brief Generic event.
138*03ce13f7SAndroid Build Coastguard Worker  *
139*03ce13f7SAndroid Build Coastguard Worker  * A generic event structure.
140*03ce13f7SAndroid Build Coastguard Worker  */
141*03ce13f7SAndroid Build Coastguard Worker typedef struct {
142*03ce13f7SAndroid Build Coastguard Worker     uint8_t   response_type;  /**< Type of the response */
143*03ce13f7SAndroid Build Coastguard Worker     uint8_t  pad0;           /**< Padding */
144*03ce13f7SAndroid Build Coastguard Worker     uint16_t sequence;       /**< Sequence number */
145*03ce13f7SAndroid Build Coastguard Worker     uint32_t pad[7];         /**< Padding */
146*03ce13f7SAndroid Build Coastguard Worker     uint32_t full_sequence;  /**< full sequence */
147*03ce13f7SAndroid Build Coastguard Worker } xcb_generic_event_t;
148*03ce13f7SAndroid Build Coastguard Worker 
149*03ce13f7SAndroid Build Coastguard Worker /**
150*03ce13f7SAndroid Build Coastguard Worker  * @brief Raw Generic event.
151*03ce13f7SAndroid Build Coastguard Worker  *
152*03ce13f7SAndroid Build Coastguard Worker  * A generic event structure as used on the wire, i.e., without the full_sequence field
153*03ce13f7SAndroid Build Coastguard Worker  */
154*03ce13f7SAndroid Build Coastguard Worker typedef struct {
155*03ce13f7SAndroid Build Coastguard Worker     uint8_t   response_type;  /**< Type of the response */
156*03ce13f7SAndroid Build Coastguard Worker     uint8_t  pad0;           /**< Padding */
157*03ce13f7SAndroid Build Coastguard Worker     uint16_t sequence;       /**< Sequence number */
158*03ce13f7SAndroid Build Coastguard Worker     uint32_t pad[7];         /**< Padding */
159*03ce13f7SAndroid Build Coastguard Worker } xcb_raw_generic_event_t;
160*03ce13f7SAndroid Build Coastguard Worker 
161*03ce13f7SAndroid Build Coastguard Worker /**
162*03ce13f7SAndroid Build Coastguard Worker  * @brief GE event
163*03ce13f7SAndroid Build Coastguard Worker  *
164*03ce13f7SAndroid Build Coastguard Worker  * An event as sent by the XGE extension. The length field specifies the
165*03ce13f7SAndroid Build Coastguard Worker  * number of 4-byte blocks trailing the struct.
166*03ce13f7SAndroid Build Coastguard Worker  *
167*03ce13f7SAndroid Build Coastguard Worker  * @deprecated Since some fields in this struct have unfortunate names, it is
168*03ce13f7SAndroid Build Coastguard Worker  * recommended to use xcb_ge_generic_event_t instead.
169*03ce13f7SAndroid Build Coastguard Worker  */
170*03ce13f7SAndroid Build Coastguard Worker typedef struct {
171*03ce13f7SAndroid Build Coastguard Worker     uint8_t  response_type;  /**< Type of the response */
172*03ce13f7SAndroid Build Coastguard Worker     uint8_t  pad0;           /**< Padding */
173*03ce13f7SAndroid Build Coastguard Worker     uint16_t sequence;       /**< Sequence number */
174*03ce13f7SAndroid Build Coastguard Worker     uint32_t length;
175*03ce13f7SAndroid Build Coastguard Worker     uint16_t event_type;
176*03ce13f7SAndroid Build Coastguard Worker     uint16_t pad1;
177*03ce13f7SAndroid Build Coastguard Worker     uint32_t pad[5];         /**< Padding */
178*03ce13f7SAndroid Build Coastguard Worker     uint32_t full_sequence;  /**< full sequence */
179*03ce13f7SAndroid Build Coastguard Worker } xcb_ge_event_t;
180*03ce13f7SAndroid Build Coastguard Worker 
181*03ce13f7SAndroid Build Coastguard Worker /**
182*03ce13f7SAndroid Build Coastguard Worker  * @brief Generic error.
183*03ce13f7SAndroid Build Coastguard Worker  *
184*03ce13f7SAndroid Build Coastguard Worker  * A generic error structure.
185*03ce13f7SAndroid Build Coastguard Worker  */
186*03ce13f7SAndroid Build Coastguard Worker typedef struct {
187*03ce13f7SAndroid Build Coastguard Worker     uint8_t   response_type;  /**< Type of the response */
188*03ce13f7SAndroid Build Coastguard Worker     uint8_t   error_code;     /**< Error code */
189*03ce13f7SAndroid Build Coastguard Worker     uint16_t sequence;       /**< Sequence number */
190*03ce13f7SAndroid Build Coastguard Worker     uint32_t resource_id;     /** < Resource ID for requests with side effects only */
191*03ce13f7SAndroid Build Coastguard Worker     uint16_t minor_code;      /** < Minor opcode of the failed request */
192*03ce13f7SAndroid Build Coastguard Worker     uint8_t major_code;       /** < Major opcode of the failed request */
193*03ce13f7SAndroid Build Coastguard Worker     uint8_t pad0;
194*03ce13f7SAndroid Build Coastguard Worker     uint32_t pad[5];         /**< Padding */
195*03ce13f7SAndroid Build Coastguard Worker     uint32_t full_sequence;  /**< full sequence */
196*03ce13f7SAndroid Build Coastguard Worker } xcb_generic_error_t;
197*03ce13f7SAndroid Build Coastguard Worker 
198*03ce13f7SAndroid Build Coastguard Worker /**
199*03ce13f7SAndroid Build Coastguard Worker  * @brief Generic cookie.
200*03ce13f7SAndroid Build Coastguard Worker  *
201*03ce13f7SAndroid Build Coastguard Worker  * A generic cookie structure.
202*03ce13f7SAndroid Build Coastguard Worker  */
203*03ce13f7SAndroid Build Coastguard Worker typedef struct {
204*03ce13f7SAndroid Build Coastguard Worker     unsigned int sequence;  /**< Sequence number */
205*03ce13f7SAndroid Build Coastguard Worker } xcb_void_cookie_t;
206*03ce13f7SAndroid Build Coastguard Worker 
207*03ce13f7SAndroid Build Coastguard Worker 
208*03ce13f7SAndroid Build Coastguard Worker /* Include the generated xproto header. */
209*03ce13f7SAndroid Build Coastguard Worker #include "xproto.h"
210*03ce13f7SAndroid Build Coastguard Worker 
211*03ce13f7SAndroid Build Coastguard Worker 
212*03ce13f7SAndroid Build Coastguard Worker /** XCB_NONE is the universal null resource or null atom parameter value for many core X requests */
213*03ce13f7SAndroid Build Coastguard Worker #define XCB_NONE 0L
214*03ce13f7SAndroid Build Coastguard Worker 
215*03ce13f7SAndroid Build Coastguard Worker /** XCB_COPY_FROM_PARENT can be used for many xcb_create_window parameters */
216*03ce13f7SAndroid Build Coastguard Worker #define XCB_COPY_FROM_PARENT 0L
217*03ce13f7SAndroid Build Coastguard Worker 
218*03ce13f7SAndroid Build Coastguard Worker /** XCB_CURRENT_TIME can be used in most requests that take an xcb_timestamp_t */
219*03ce13f7SAndroid Build Coastguard Worker #define XCB_CURRENT_TIME 0L
220*03ce13f7SAndroid Build Coastguard Worker 
221*03ce13f7SAndroid Build Coastguard Worker /** XCB_NO_SYMBOL fills in unused entries in xcb_keysym_t tables */
222*03ce13f7SAndroid Build Coastguard Worker #define XCB_NO_SYMBOL 0L
223*03ce13f7SAndroid Build Coastguard Worker 
224*03ce13f7SAndroid Build Coastguard Worker 
225*03ce13f7SAndroid Build Coastguard Worker /* xcb_auth.c */
226*03ce13f7SAndroid Build Coastguard Worker 
227*03ce13f7SAndroid Build Coastguard Worker /**
228*03ce13f7SAndroid Build Coastguard Worker  * @brief Container for authorization information.
229*03ce13f7SAndroid Build Coastguard Worker  *
230*03ce13f7SAndroid Build Coastguard Worker  * A container for authorization information to be sent to the X server.
231*03ce13f7SAndroid Build Coastguard Worker  */
232*03ce13f7SAndroid Build Coastguard Worker typedef struct xcb_auth_info_t {
233*03ce13f7SAndroid Build Coastguard Worker     int   namelen;  /**< Length of the string name (as returned by strlen). */
234*03ce13f7SAndroid Build Coastguard Worker     char *name;     /**< String containing the authentication protocol name, such as "MIT-MAGIC-COOKIE-1" or "XDM-AUTHORIZATION-1". */
235*03ce13f7SAndroid Build Coastguard Worker     int   datalen;  /**< Length of the data member. */
236*03ce13f7SAndroid Build Coastguard Worker     char *data;   /**< Data interpreted in a protocol-specific manner. */
237*03ce13f7SAndroid Build Coastguard Worker } xcb_auth_info_t;
238*03ce13f7SAndroid Build Coastguard Worker 
239*03ce13f7SAndroid Build Coastguard Worker 
240*03ce13f7SAndroid Build Coastguard Worker /* xcb_out.c */
241*03ce13f7SAndroid Build Coastguard Worker 
242*03ce13f7SAndroid Build Coastguard Worker /**
243*03ce13f7SAndroid Build Coastguard Worker  * @brief Forces any buffered output to be written to the server.
244*03ce13f7SAndroid Build Coastguard Worker  * @param c The connection to the X server.
245*03ce13f7SAndroid Build Coastguard Worker  * @return > @c 0 on success, <= @c 0 otherwise.
246*03ce13f7SAndroid Build Coastguard Worker  *
247*03ce13f7SAndroid Build Coastguard Worker  * Forces any buffered output to be written to the server. Blocks
248*03ce13f7SAndroid Build Coastguard Worker  * until the write is complete.
249*03ce13f7SAndroid Build Coastguard Worker  */
250*03ce13f7SAndroid Build Coastguard Worker int xcb_flush(xcb_connection_t *c);
251*03ce13f7SAndroid Build Coastguard Worker 
252*03ce13f7SAndroid Build Coastguard Worker /**
253*03ce13f7SAndroid Build Coastguard Worker  * @brief Returns the maximum request length that this server accepts.
254*03ce13f7SAndroid Build Coastguard Worker  * @param c The connection to the X server.
255*03ce13f7SAndroid Build Coastguard Worker  * @return The maximum request length field.
256*03ce13f7SAndroid Build Coastguard Worker  *
257*03ce13f7SAndroid Build Coastguard Worker  * In the absence of the BIG-REQUESTS extension, returns the
258*03ce13f7SAndroid Build Coastguard Worker  * maximum request length field from the connection setup data, which
259*03ce13f7SAndroid Build Coastguard Worker  * may be as much as 65535. If the server supports BIG-REQUESTS, then
260*03ce13f7SAndroid Build Coastguard Worker  * the maximum request length field from the reply to the
261*03ce13f7SAndroid Build Coastguard Worker  * BigRequestsEnable request will be returned instead.
262*03ce13f7SAndroid Build Coastguard Worker  *
263*03ce13f7SAndroid Build Coastguard Worker  * Note that this length is measured in four-byte units, making the
264*03ce13f7SAndroid Build Coastguard Worker  * theoretical maximum lengths roughly 256kB without BIG-REQUESTS and
265*03ce13f7SAndroid Build Coastguard Worker  * 16GB with.
266*03ce13f7SAndroid Build Coastguard Worker  */
267*03ce13f7SAndroid Build Coastguard Worker uint32_t xcb_get_maximum_request_length(xcb_connection_t *c);
268*03ce13f7SAndroid Build Coastguard Worker 
269*03ce13f7SAndroid Build Coastguard Worker /**
270*03ce13f7SAndroid Build Coastguard Worker  * @brief Prefetch the maximum request length without blocking.
271*03ce13f7SAndroid Build Coastguard Worker  * @param c The connection to the X server.
272*03ce13f7SAndroid Build Coastguard Worker  *
273*03ce13f7SAndroid Build Coastguard Worker  * Without blocking, does as much work as possible toward computing
274*03ce13f7SAndroid Build Coastguard Worker  * the maximum request length accepted by the X server.
275*03ce13f7SAndroid Build Coastguard Worker  *
276*03ce13f7SAndroid Build Coastguard Worker  * Invoking this function may cause a call to xcb_big_requests_enable,
277*03ce13f7SAndroid Build Coastguard Worker  * but will not block waiting for the reply.
278*03ce13f7SAndroid Build Coastguard Worker  * xcb_get_maximum_request_length will return the prefetched data
279*03ce13f7SAndroid Build Coastguard Worker  * after possibly blocking while the reply is retrieved.
280*03ce13f7SAndroid Build Coastguard Worker  *
281*03ce13f7SAndroid Build Coastguard Worker  * Note that in order for this function to be fully non-blocking, the
282*03ce13f7SAndroid Build Coastguard Worker  * application must previously have called
283*03ce13f7SAndroid Build Coastguard Worker  * xcb_prefetch_extension_data(c, &xcb_big_requests_id) and the reply
284*03ce13f7SAndroid Build Coastguard Worker  * must have already arrived.
285*03ce13f7SAndroid Build Coastguard Worker  */
286*03ce13f7SAndroid Build Coastguard Worker void xcb_prefetch_maximum_request_length(xcb_connection_t *c);
287*03ce13f7SAndroid Build Coastguard Worker 
288*03ce13f7SAndroid Build Coastguard Worker 
289*03ce13f7SAndroid Build Coastguard Worker /* xcb_in.c */
290*03ce13f7SAndroid Build Coastguard Worker 
291*03ce13f7SAndroid Build Coastguard Worker /**
292*03ce13f7SAndroid Build Coastguard Worker  * @brief Returns the next event or error from the server.
293*03ce13f7SAndroid Build Coastguard Worker  * @param c The connection to the X server.
294*03ce13f7SAndroid Build Coastguard Worker  * @return The next event from the server.
295*03ce13f7SAndroid Build Coastguard Worker  *
296*03ce13f7SAndroid Build Coastguard Worker  * Returns the next event or error from the server, or returns null in
297*03ce13f7SAndroid Build Coastguard Worker  * the event of an I/O error. Blocks until either an event or error
298*03ce13f7SAndroid Build Coastguard Worker  * arrive, or an I/O error occurs.
299*03ce13f7SAndroid Build Coastguard Worker  */
300*03ce13f7SAndroid Build Coastguard Worker xcb_generic_event_t *xcb_wait_for_event(xcb_connection_t *c);
301*03ce13f7SAndroid Build Coastguard Worker 
302*03ce13f7SAndroid Build Coastguard Worker /**
303*03ce13f7SAndroid Build Coastguard Worker  * @brief Returns the next event or error from the server.
304*03ce13f7SAndroid Build Coastguard Worker  * @param c The connection to the X server.
305*03ce13f7SAndroid Build Coastguard Worker  * @return The next event from the server.
306*03ce13f7SAndroid Build Coastguard Worker  *
307*03ce13f7SAndroid Build Coastguard Worker  * Returns the next event or error from the server, if one is
308*03ce13f7SAndroid Build Coastguard Worker  * available, or returns @c NULL otherwise. If no event is available, that
309*03ce13f7SAndroid Build Coastguard Worker  * might be because an I/O error like connection close occurred while
310*03ce13f7SAndroid Build Coastguard Worker  * attempting to read the next event, in which case the connection is
311*03ce13f7SAndroid Build Coastguard Worker  * shut down when this function returns.
312*03ce13f7SAndroid Build Coastguard Worker  */
313*03ce13f7SAndroid Build Coastguard Worker xcb_generic_event_t *xcb_poll_for_event(xcb_connection_t *c);
314*03ce13f7SAndroid Build Coastguard Worker 
315*03ce13f7SAndroid Build Coastguard Worker /**
316*03ce13f7SAndroid Build Coastguard Worker  * @brief Returns the next event without reading from the connection.
317*03ce13f7SAndroid Build Coastguard Worker  * @param c The connection to the X server.
318*03ce13f7SAndroid Build Coastguard Worker  * @return The next already queued event from the server.
319*03ce13f7SAndroid Build Coastguard Worker  *
320*03ce13f7SAndroid Build Coastguard Worker  * This is a version of xcb_poll_for_event that only examines the
321*03ce13f7SAndroid Build Coastguard Worker  * event queue for new events. The function doesn't try to read new
322*03ce13f7SAndroid Build Coastguard Worker  * events from the connection if no queued events are found.
323*03ce13f7SAndroid Build Coastguard Worker  *
324*03ce13f7SAndroid Build Coastguard Worker  * This function is useful for callers that know in advance that all
325*03ce13f7SAndroid Build Coastguard Worker  * interesting events have already been read from the connection. For
326*03ce13f7SAndroid Build Coastguard Worker  * example, callers might use xcb_wait_for_reply and be interested
327*03ce13f7SAndroid Build Coastguard Worker  * only of events that preceded a specific reply.
328*03ce13f7SAndroid Build Coastguard Worker  */
329*03ce13f7SAndroid Build Coastguard Worker xcb_generic_event_t *xcb_poll_for_queued_event(xcb_connection_t *c);
330*03ce13f7SAndroid Build Coastguard Worker 
331*03ce13f7SAndroid Build Coastguard Worker typedef struct xcb_special_event xcb_special_event_t;
332*03ce13f7SAndroid Build Coastguard Worker 
333*03ce13f7SAndroid Build Coastguard Worker /**
334*03ce13f7SAndroid Build Coastguard Worker  * @brief Returns the next event from a special queue
335*03ce13f7SAndroid Build Coastguard Worker  */
336*03ce13f7SAndroid Build Coastguard Worker xcb_generic_event_t *xcb_poll_for_special_event(xcb_connection_t *c,
337*03ce13f7SAndroid Build Coastguard Worker                                                 xcb_special_event_t *se);
338*03ce13f7SAndroid Build Coastguard Worker 
339*03ce13f7SAndroid Build Coastguard Worker /**
340*03ce13f7SAndroid Build Coastguard Worker  * @brief Returns the next event from a special queue, blocking until one arrives
341*03ce13f7SAndroid Build Coastguard Worker  */
342*03ce13f7SAndroid Build Coastguard Worker xcb_generic_event_t *xcb_wait_for_special_event(xcb_connection_t *c,
343*03ce13f7SAndroid Build Coastguard Worker                                                 xcb_special_event_t *se);
344*03ce13f7SAndroid Build Coastguard Worker /**
345*03ce13f7SAndroid Build Coastguard Worker  * @typedef typedef struct xcb_extension_t xcb_extension_t
346*03ce13f7SAndroid Build Coastguard Worker  */
347*03ce13f7SAndroid Build Coastguard Worker typedef struct xcb_extension_t xcb_extension_t;  /**< Opaque structure used as key for xcb_get_extension_data_t. */
348*03ce13f7SAndroid Build Coastguard Worker 
349*03ce13f7SAndroid Build Coastguard Worker /**
350*03ce13f7SAndroid Build Coastguard Worker  * @brief Listen for a special event
351*03ce13f7SAndroid Build Coastguard Worker  */
352*03ce13f7SAndroid Build Coastguard Worker xcb_special_event_t *xcb_register_for_special_xge(xcb_connection_t *c,
353*03ce13f7SAndroid Build Coastguard Worker                                                   xcb_extension_t *ext,
354*03ce13f7SAndroid Build Coastguard Worker                                                   uint32_t eid,
355*03ce13f7SAndroid Build Coastguard Worker                                                   uint32_t *stamp);
356*03ce13f7SAndroid Build Coastguard Worker 
357*03ce13f7SAndroid Build Coastguard Worker /**
358*03ce13f7SAndroid Build Coastguard Worker  * @brief Stop listening for a special event
359*03ce13f7SAndroid Build Coastguard Worker  */
360*03ce13f7SAndroid Build Coastguard Worker void xcb_unregister_for_special_event(xcb_connection_t *c,
361*03ce13f7SAndroid Build Coastguard Worker                                       xcb_special_event_t *se);
362*03ce13f7SAndroid Build Coastguard Worker 
363*03ce13f7SAndroid Build Coastguard Worker /**
364*03ce13f7SAndroid Build Coastguard Worker  * @brief Return the error for a request, or NULL if none can ever arrive.
365*03ce13f7SAndroid Build Coastguard Worker  * @param c The connection to the X server.
366*03ce13f7SAndroid Build Coastguard Worker  * @param cookie The request cookie.
367*03ce13f7SAndroid Build Coastguard Worker  * @return The error for the request, or NULL if none can ever arrive.
368*03ce13f7SAndroid Build Coastguard Worker  *
369*03ce13f7SAndroid Build Coastguard Worker  * The xcb_void_cookie_t cookie supplied to this function must have resulted
370*03ce13f7SAndroid Build Coastguard Worker  * from a call to xcb_[request_name]_checked().  This function will block
371*03ce13f7SAndroid Build Coastguard Worker  * until one of two conditions happens.  If an error is received, it will be
372*03ce13f7SAndroid Build Coastguard Worker  * returned.  If a reply to a subsequent request has already arrived, no error
373*03ce13f7SAndroid Build Coastguard Worker  * can arrive for this request, so this function will return NULL.
374*03ce13f7SAndroid Build Coastguard Worker  *
375*03ce13f7SAndroid Build Coastguard Worker  * Note that this function will perform a sync if needed to ensure that the
376*03ce13f7SAndroid Build Coastguard Worker  * sequence number will advance beyond that provided in cookie; this is a
377*03ce13f7SAndroid Build Coastguard Worker  * convenience to avoid races in determining whether the sync is needed.
378*03ce13f7SAndroid Build Coastguard Worker  */
379*03ce13f7SAndroid Build Coastguard Worker xcb_generic_error_t *xcb_request_check(xcb_connection_t *c, xcb_void_cookie_t cookie);
380*03ce13f7SAndroid Build Coastguard Worker 
381*03ce13f7SAndroid Build Coastguard Worker /**
382*03ce13f7SAndroid Build Coastguard Worker  * @brief Discards the reply for a request.
383*03ce13f7SAndroid Build Coastguard Worker  * @param c The connection to the X server.
384*03ce13f7SAndroid Build Coastguard Worker  * @param sequence The request sequence number from a cookie.
385*03ce13f7SAndroid Build Coastguard Worker  *
386*03ce13f7SAndroid Build Coastguard Worker  * Discards the reply for a request. Additionally, any error generated
387*03ce13f7SAndroid Build Coastguard Worker  * by the request is also discarded (unless it was an _unchecked request
388*03ce13f7SAndroid Build Coastguard Worker  * and the error has already arrived).
389*03ce13f7SAndroid Build Coastguard Worker  *
390*03ce13f7SAndroid Build Coastguard Worker  * This function will not block even if the reply is not yet available.
391*03ce13f7SAndroid Build Coastguard Worker  *
392*03ce13f7SAndroid Build Coastguard Worker  * Note that the sequence really does have to come from an xcb cookie;
393*03ce13f7SAndroid Build Coastguard Worker  * this function is not designed to operate on socket-handoff replies.
394*03ce13f7SAndroid Build Coastguard Worker  */
395*03ce13f7SAndroid Build Coastguard Worker void xcb_discard_reply(xcb_connection_t *c, unsigned int sequence);
396*03ce13f7SAndroid Build Coastguard Worker 
397*03ce13f7SAndroid Build Coastguard Worker /**
398*03ce13f7SAndroid Build Coastguard Worker  * @brief Discards the reply for a request, given by a 64bit sequence number
399*03ce13f7SAndroid Build Coastguard Worker  * @param c The connection to the X server.
400*03ce13f7SAndroid Build Coastguard Worker  * @param sequence 64-bit sequence number as returned by xcb_send_request64().
401*03ce13f7SAndroid Build Coastguard Worker  *
402*03ce13f7SAndroid Build Coastguard Worker  * Discards the reply for a request. Additionally, any error generated
403*03ce13f7SAndroid Build Coastguard Worker  * by the request is also discarded (unless it was an _unchecked request
404*03ce13f7SAndroid Build Coastguard Worker  * and the error has already arrived).
405*03ce13f7SAndroid Build Coastguard Worker  *
406*03ce13f7SAndroid Build Coastguard Worker  * This function will not block even if the reply is not yet available.
407*03ce13f7SAndroid Build Coastguard Worker  *
408*03ce13f7SAndroid Build Coastguard Worker  * Note that the sequence really does have to come from xcb_send_request64();
409*03ce13f7SAndroid Build Coastguard Worker  * the cookie sequence number is defined as "unsigned" int and therefore
410*03ce13f7SAndroid Build Coastguard Worker  * not 64-bit on all platforms.
411*03ce13f7SAndroid Build Coastguard Worker  * This function is not designed to operate on socket-handoff replies.
412*03ce13f7SAndroid Build Coastguard Worker  *
413*03ce13f7SAndroid Build Coastguard Worker  * Unlike its xcb_discard_reply() counterpart, the given sequence number is not
414*03ce13f7SAndroid Build Coastguard Worker  * automatically "widened" to 64-bit.
415*03ce13f7SAndroid Build Coastguard Worker  */
416*03ce13f7SAndroid Build Coastguard Worker void xcb_discard_reply64(xcb_connection_t *c, uint64_t sequence);
417*03ce13f7SAndroid Build Coastguard Worker 
418*03ce13f7SAndroid Build Coastguard Worker /* xcb_ext.c */
419*03ce13f7SAndroid Build Coastguard Worker 
420*03ce13f7SAndroid Build Coastguard Worker /**
421*03ce13f7SAndroid Build Coastguard Worker  * @brief Caches reply information from QueryExtension requests.
422*03ce13f7SAndroid Build Coastguard Worker  * @param c The connection.
423*03ce13f7SAndroid Build Coastguard Worker  * @param ext The extension data.
424*03ce13f7SAndroid Build Coastguard Worker  * @return A pointer to the xcb_query_extension_reply_t for the extension.
425*03ce13f7SAndroid Build Coastguard Worker  *
426*03ce13f7SAndroid Build Coastguard Worker  * This function is the primary interface to the "extension cache",
427*03ce13f7SAndroid Build Coastguard Worker  * which caches reply information from QueryExtension
428*03ce13f7SAndroid Build Coastguard Worker  * requests. Invoking this function may cause a call to
429*03ce13f7SAndroid Build Coastguard Worker  * xcb_query_extension to retrieve extension information from the
430*03ce13f7SAndroid Build Coastguard Worker  * server, and may block until extension data is received from the
431*03ce13f7SAndroid Build Coastguard Worker  * server.
432*03ce13f7SAndroid Build Coastguard Worker  *
433*03ce13f7SAndroid Build Coastguard Worker  * The result must not be freed. This storage is managed by the cache
434*03ce13f7SAndroid Build Coastguard Worker  * itself.
435*03ce13f7SAndroid Build Coastguard Worker  */
436*03ce13f7SAndroid Build Coastguard Worker const struct xcb_query_extension_reply_t *xcb_get_extension_data(xcb_connection_t *c, xcb_extension_t *ext);
437*03ce13f7SAndroid Build Coastguard Worker 
438*03ce13f7SAndroid Build Coastguard Worker /**
439*03ce13f7SAndroid Build Coastguard Worker  * @brief Prefetch of extension data into the extension cache
440*03ce13f7SAndroid Build Coastguard Worker  * @param c The connection.
441*03ce13f7SAndroid Build Coastguard Worker  * @param ext The extension data.
442*03ce13f7SAndroid Build Coastguard Worker  *
443*03ce13f7SAndroid Build Coastguard Worker  * This function allows a "prefetch" of extension data into the
444*03ce13f7SAndroid Build Coastguard Worker  * extension cache. Invoking the function may cause a call to
445*03ce13f7SAndroid Build Coastguard Worker  * xcb_query_extension, but will not block waiting for the
446*03ce13f7SAndroid Build Coastguard Worker  * reply. xcb_get_extension_data will return the prefetched data after
447*03ce13f7SAndroid Build Coastguard Worker  * possibly blocking while it is retrieved.
448*03ce13f7SAndroid Build Coastguard Worker  */
449*03ce13f7SAndroid Build Coastguard Worker void xcb_prefetch_extension_data(xcb_connection_t *c, xcb_extension_t *ext);
450*03ce13f7SAndroid Build Coastguard Worker 
451*03ce13f7SAndroid Build Coastguard Worker 
452*03ce13f7SAndroid Build Coastguard Worker /* xcb_conn.c */
453*03ce13f7SAndroid Build Coastguard Worker 
454*03ce13f7SAndroid Build Coastguard Worker /**
455*03ce13f7SAndroid Build Coastguard Worker  * @brief Access the data returned by the server.
456*03ce13f7SAndroid Build Coastguard Worker  * @param c The connection.
457*03ce13f7SAndroid Build Coastguard Worker  * @return A pointer to an xcb_setup_t structure.
458*03ce13f7SAndroid Build Coastguard Worker  *
459*03ce13f7SAndroid Build Coastguard Worker  * Accessor for the data returned by the server when the xcb_connection_t
460*03ce13f7SAndroid Build Coastguard Worker  * was initialized. This data includes
461*03ce13f7SAndroid Build Coastguard Worker  * - the server's required format for images,
462*03ce13f7SAndroid Build Coastguard Worker  * - a list of available visuals,
463*03ce13f7SAndroid Build Coastguard Worker  * - a list of available screens,
464*03ce13f7SAndroid Build Coastguard Worker  * - the server's maximum request length (in the absence of the
465*03ce13f7SAndroid Build Coastguard Worker  * BIG-REQUESTS extension),
466*03ce13f7SAndroid Build Coastguard Worker  * - and other assorted information.
467*03ce13f7SAndroid Build Coastguard Worker  *
468*03ce13f7SAndroid Build Coastguard Worker  * See the X protocol specification for more details.
469*03ce13f7SAndroid Build Coastguard Worker  *
470*03ce13f7SAndroid Build Coastguard Worker  * The result must not be freed.
471*03ce13f7SAndroid Build Coastguard Worker  */
472*03ce13f7SAndroid Build Coastguard Worker const struct xcb_setup_t *xcb_get_setup(xcb_connection_t *c);
473*03ce13f7SAndroid Build Coastguard Worker 
474*03ce13f7SAndroid Build Coastguard Worker /**
475*03ce13f7SAndroid Build Coastguard Worker  * @brief Access the file descriptor of the connection.
476*03ce13f7SAndroid Build Coastguard Worker  * @param c The connection.
477*03ce13f7SAndroid Build Coastguard Worker  * @return The file descriptor.
478*03ce13f7SAndroid Build Coastguard Worker  *
479*03ce13f7SAndroid Build Coastguard Worker  * Accessor for the file descriptor that was passed to the
480*03ce13f7SAndroid Build Coastguard Worker  * xcb_connect_to_fd call that returned @p c.
481*03ce13f7SAndroid Build Coastguard Worker  */
482*03ce13f7SAndroid Build Coastguard Worker int xcb_get_file_descriptor(xcb_connection_t *c);
483*03ce13f7SAndroid Build Coastguard Worker 
484*03ce13f7SAndroid Build Coastguard Worker /**
485*03ce13f7SAndroid Build Coastguard Worker  * @brief Test whether the connection has shut down due to a fatal error.
486*03ce13f7SAndroid Build Coastguard Worker  * @param c The connection.
487*03ce13f7SAndroid Build Coastguard Worker  * @return > 0 if the connection is in an error state; 0 otherwise.
488*03ce13f7SAndroid Build Coastguard Worker  *
489*03ce13f7SAndroid Build Coastguard Worker  * Some errors that occur in the context of an xcb_connection_t
490*03ce13f7SAndroid Build Coastguard Worker  * are unrecoverable. When such an error occurs, the
491*03ce13f7SAndroid Build Coastguard Worker  * connection is shut down and further operations on the
492*03ce13f7SAndroid Build Coastguard Worker  * xcb_connection_t have no effect, but memory will not be freed until
493*03ce13f7SAndroid Build Coastguard Worker  * xcb_disconnect() is called on the xcb_connection_t.
494*03ce13f7SAndroid Build Coastguard Worker  *
495*03ce13f7SAndroid Build Coastguard Worker  * @return XCB_CONN_ERROR, because of socket errors, pipe errors or other stream errors.
496*03ce13f7SAndroid Build Coastguard Worker  * @return XCB_CONN_CLOSED_EXT_NOTSUPPORTED, when extension not supported.
497*03ce13f7SAndroid Build Coastguard Worker  * @return XCB_CONN_CLOSED_MEM_INSUFFICIENT, when memory not available.
498*03ce13f7SAndroid Build Coastguard Worker  * @return XCB_CONN_CLOSED_REQ_LEN_EXCEED, exceeding request length that server accepts.
499*03ce13f7SAndroid Build Coastguard Worker  * @return XCB_CONN_CLOSED_PARSE_ERR, error during parsing display string.
500*03ce13f7SAndroid Build Coastguard Worker  * @return XCB_CONN_CLOSED_INVALID_SCREEN, because the server does not have a screen matching the display.
501*03ce13f7SAndroid Build Coastguard Worker  */
502*03ce13f7SAndroid Build Coastguard Worker int xcb_connection_has_error(xcb_connection_t *c);
503*03ce13f7SAndroid Build Coastguard Worker 
504*03ce13f7SAndroid Build Coastguard Worker /**
505*03ce13f7SAndroid Build Coastguard Worker  * @brief Connects to the X server.
506*03ce13f7SAndroid Build Coastguard Worker  * @param fd The file descriptor.
507*03ce13f7SAndroid Build Coastguard Worker  * @param auth_info Authentication data.
508*03ce13f7SAndroid Build Coastguard Worker  * @return A newly allocated xcb_connection_t structure.
509*03ce13f7SAndroid Build Coastguard Worker  *
510*03ce13f7SAndroid Build Coastguard Worker  * Connects to an X server, given the open socket @p fd and the
511*03ce13f7SAndroid Build Coastguard Worker  * xcb_auth_info_t @p auth_info. The file descriptor @p fd is
512*03ce13f7SAndroid Build Coastguard Worker  * bidirectionally connected to an X server. If the connection
513*03ce13f7SAndroid Build Coastguard Worker  * should be unauthenticated, @p auth_info must be @c
514*03ce13f7SAndroid Build Coastguard Worker  * NULL.
515*03ce13f7SAndroid Build Coastguard Worker  *
516*03ce13f7SAndroid Build Coastguard Worker  * Always returns a non-NULL pointer to a xcb_connection_t, even on failure.
517*03ce13f7SAndroid Build Coastguard Worker  * Callers need to use xcb_connection_has_error() to check for failure.
518*03ce13f7SAndroid Build Coastguard Worker  * When finished, use xcb_disconnect() to close the connection and free
519*03ce13f7SAndroid Build Coastguard Worker  * the structure.
520*03ce13f7SAndroid Build Coastguard Worker  */
521*03ce13f7SAndroid Build Coastguard Worker xcb_connection_t *xcb_connect_to_fd(int fd, xcb_auth_info_t *auth_info);
522*03ce13f7SAndroid Build Coastguard Worker 
523*03ce13f7SAndroid Build Coastguard Worker /**
524*03ce13f7SAndroid Build Coastguard Worker  * @brief Closes the connection.
525*03ce13f7SAndroid Build Coastguard Worker  * @param c The connection.
526*03ce13f7SAndroid Build Coastguard Worker  *
527*03ce13f7SAndroid Build Coastguard Worker  * Closes the file descriptor and frees all memory associated with the
528*03ce13f7SAndroid Build Coastguard Worker  * connection @c c. If @p c is @c NULL, nothing is done.
529*03ce13f7SAndroid Build Coastguard Worker  */
530*03ce13f7SAndroid Build Coastguard Worker void xcb_disconnect(xcb_connection_t *c);
531*03ce13f7SAndroid Build Coastguard Worker 
532*03ce13f7SAndroid Build Coastguard Worker 
533*03ce13f7SAndroid Build Coastguard Worker /* xcb_util.c */
534*03ce13f7SAndroid Build Coastguard Worker 
535*03ce13f7SAndroid Build Coastguard Worker /**
536*03ce13f7SAndroid Build Coastguard Worker  * @brief Parses a display string name in the form documented by X(7x).
537*03ce13f7SAndroid Build Coastguard Worker  * @param name The name of the display.
538*03ce13f7SAndroid Build Coastguard Worker  * @param host A pointer to a malloc'd copy of the hostname.
539*03ce13f7SAndroid Build Coastguard Worker  * @param display A pointer to the display number.
540*03ce13f7SAndroid Build Coastguard Worker  * @param screen A pointer to the screen number.
541*03ce13f7SAndroid Build Coastguard Worker  * @return 0 on failure, non 0 otherwise.
542*03ce13f7SAndroid Build Coastguard Worker  *
543*03ce13f7SAndroid Build Coastguard Worker  * Parses the display string name @p display_name in the form
544*03ce13f7SAndroid Build Coastguard Worker  * documented by X(7x). Has no side effects on failure. If
545*03ce13f7SAndroid Build Coastguard Worker  * @p displayname is @c NULL or empty, it uses the environment
546*03ce13f7SAndroid Build Coastguard Worker  * variable DISPLAY. @p hostp is a pointer to a newly allocated string
547*03ce13f7SAndroid Build Coastguard Worker  * that contain the host name. @p displayp is set to the display
548*03ce13f7SAndroid Build Coastguard Worker  * number and @p screenp to the preferred screen number. @p screenp
549*03ce13f7SAndroid Build Coastguard Worker  * can be @c NULL. If @p displayname does not contain a screen number,
550*03ce13f7SAndroid Build Coastguard Worker  * it is set to @c 0.
551*03ce13f7SAndroid Build Coastguard Worker  */
552*03ce13f7SAndroid Build Coastguard Worker int xcb_parse_display(const char *name, char **host, int *display, int *screen);
553*03ce13f7SAndroid Build Coastguard Worker 
554*03ce13f7SAndroid Build Coastguard Worker /**
555*03ce13f7SAndroid Build Coastguard Worker  * @brief Connects to the X server.
556*03ce13f7SAndroid Build Coastguard Worker  * @param displayname The name of the display.
557*03ce13f7SAndroid Build Coastguard Worker  * @param screenp A pointer to a preferred screen number.
558*03ce13f7SAndroid Build Coastguard Worker  * @return A newly allocated xcb_connection_t structure.
559*03ce13f7SAndroid Build Coastguard Worker  *
560*03ce13f7SAndroid Build Coastguard Worker  * Connects to the X server specified by @p displayname. If @p
561*03ce13f7SAndroid Build Coastguard Worker  * displayname is @c NULL, uses the value of the DISPLAY environment
562*03ce13f7SAndroid Build Coastguard Worker  * variable. If a particular screen on that server is preferred, the
563*03ce13f7SAndroid Build Coastguard Worker  * int pointed to by @p screenp (if not @c NULL) will be set to that
564*03ce13f7SAndroid Build Coastguard Worker  * screen; otherwise the screen will be set to 0.
565*03ce13f7SAndroid Build Coastguard Worker  *
566*03ce13f7SAndroid Build Coastguard Worker  * Always returns a non-NULL pointer to a xcb_connection_t, even on failure.
567*03ce13f7SAndroid Build Coastguard Worker  * Callers need to use xcb_connection_has_error() to check for failure.
568*03ce13f7SAndroid Build Coastguard Worker  * When finished, use xcb_disconnect() to close the connection and free
569*03ce13f7SAndroid Build Coastguard Worker  * the structure.
570*03ce13f7SAndroid Build Coastguard Worker  */
571*03ce13f7SAndroid Build Coastguard Worker xcb_connection_t *xcb_connect(const char *displayname, int *screenp);
572*03ce13f7SAndroid Build Coastguard Worker 
573*03ce13f7SAndroid Build Coastguard Worker /**
574*03ce13f7SAndroid Build Coastguard Worker  * @brief Connects to the X server, using an authorization information.
575*03ce13f7SAndroid Build Coastguard Worker  * @param display The name of the display.
576*03ce13f7SAndroid Build Coastguard Worker  * @param auth The authorization information.
577*03ce13f7SAndroid Build Coastguard Worker  * @param screen A pointer to a preferred screen number.
578*03ce13f7SAndroid Build Coastguard Worker  * @return A newly allocated xcb_connection_t structure.
579*03ce13f7SAndroid Build Coastguard Worker  *
580*03ce13f7SAndroid Build Coastguard Worker  * Connects to the X server specified by @p displayname, using the
581*03ce13f7SAndroid Build Coastguard Worker  * authorization @p auth. If a particular screen on that server is
582*03ce13f7SAndroid Build Coastguard Worker  * preferred, the int pointed to by @p screenp (if not @c NULL) will
583*03ce13f7SAndroid Build Coastguard Worker  * be set to that screen; otherwise @p screenp will be set to 0.
584*03ce13f7SAndroid Build Coastguard Worker  *
585*03ce13f7SAndroid Build Coastguard Worker  * Always returns a non-NULL pointer to a xcb_connection_t, even on failure.
586*03ce13f7SAndroid Build Coastguard Worker  * Callers need to use xcb_connection_has_error() to check for failure.
587*03ce13f7SAndroid Build Coastguard Worker  * When finished, use xcb_disconnect() to close the connection and free
588*03ce13f7SAndroid Build Coastguard Worker  * the structure.
589*03ce13f7SAndroid Build Coastguard Worker  */
590*03ce13f7SAndroid Build Coastguard Worker xcb_connection_t *xcb_connect_to_display_with_auth_info(const char *display, xcb_auth_info_t *auth, int *screen);
591*03ce13f7SAndroid Build Coastguard Worker 
592*03ce13f7SAndroid Build Coastguard Worker 
593*03ce13f7SAndroid Build Coastguard Worker /* xcb_xid.c */
594*03ce13f7SAndroid Build Coastguard Worker 
595*03ce13f7SAndroid Build Coastguard Worker /**
596*03ce13f7SAndroid Build Coastguard Worker  * @brief Allocates an XID for a new object.
597*03ce13f7SAndroid Build Coastguard Worker  * @param c The connection.
598*03ce13f7SAndroid Build Coastguard Worker  * @return A newly allocated XID, or -1 on failure.
599*03ce13f7SAndroid Build Coastguard Worker  *
600*03ce13f7SAndroid Build Coastguard Worker  * Allocates an XID for a new object. Typically used just prior to
601*03ce13f7SAndroid Build Coastguard Worker  * various object creation functions, such as xcb_create_window.
602*03ce13f7SAndroid Build Coastguard Worker  */
603*03ce13f7SAndroid Build Coastguard Worker uint32_t xcb_generate_id(xcb_connection_t *c);
604*03ce13f7SAndroid Build Coastguard Worker 
605*03ce13f7SAndroid Build Coastguard Worker 
606*03ce13f7SAndroid Build Coastguard Worker /**
607*03ce13f7SAndroid Build Coastguard Worker  * @brief Obtain number of bytes read from the connection.
608*03ce13f7SAndroid Build Coastguard Worker  * @param c The connection
609*03ce13f7SAndroid Build Coastguard Worker  * @return Number of bytes read from the server.
610*03ce13f7SAndroid Build Coastguard Worker  *
611*03ce13f7SAndroid Build Coastguard Worker  * Returns cumulative number of bytes received from the connection.
612*03ce13f7SAndroid Build Coastguard Worker  *
613*03ce13f7SAndroid Build Coastguard Worker  * This retrieves the total number of bytes read from this connection,
614*03ce13f7SAndroid Build Coastguard Worker  * to be used for diagnostic/monitoring/informative purposes.
615*03ce13f7SAndroid Build Coastguard Worker  */
616*03ce13f7SAndroid Build Coastguard Worker 
617*03ce13f7SAndroid Build Coastguard Worker uint64_t
618*03ce13f7SAndroid Build Coastguard Worker xcb_total_read(xcb_connection_t *c);
619*03ce13f7SAndroid Build Coastguard Worker 
620*03ce13f7SAndroid Build Coastguard Worker /**
621*03ce13f7SAndroid Build Coastguard Worker  *
622*03ce13f7SAndroid Build Coastguard Worker  * @brief Obtain number of bytes written to the connection.
623*03ce13f7SAndroid Build Coastguard Worker  * @param c The connection
624*03ce13f7SAndroid Build Coastguard Worker  * @return Number of bytes written to the server.
625*03ce13f7SAndroid Build Coastguard Worker  *
626*03ce13f7SAndroid Build Coastguard Worker  * Returns cumulative number of bytes sent to the connection.
627*03ce13f7SAndroid Build Coastguard Worker  *
628*03ce13f7SAndroid Build Coastguard Worker  * This retrieves the total number of bytes written to this connection,
629*03ce13f7SAndroid Build Coastguard Worker  * to be used for diagnostic/monitoring/informative purposes.
630*03ce13f7SAndroid Build Coastguard Worker  */
631*03ce13f7SAndroid Build Coastguard Worker 
632*03ce13f7SAndroid Build Coastguard Worker uint64_t
633*03ce13f7SAndroid Build Coastguard Worker xcb_total_written(xcb_connection_t *c);
634*03ce13f7SAndroid Build Coastguard Worker 
635*03ce13f7SAndroid Build Coastguard Worker /**
636*03ce13f7SAndroid Build Coastguard Worker  * @}
637*03ce13f7SAndroid Build Coastguard Worker  */
638*03ce13f7SAndroid Build Coastguard Worker 
639*03ce13f7SAndroid Build Coastguard Worker #ifdef __cplusplus
640*03ce13f7SAndroid Build Coastguard Worker }
641*03ce13f7SAndroid Build Coastguard Worker #endif
642*03ce13f7SAndroid Build Coastguard Worker 
643*03ce13f7SAndroid Build Coastguard Worker 
644*03ce13f7SAndroid Build Coastguard Worker #endif /* __XCB_H__ */
645