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