- Main Page
- Modules
- Data Structures
- Files
- Related Pages

# XCB Core API

Core API of the XCB library. More...

## Data Structures
struct | xcb_generic_iterator_t
| Generic iterator. More...
struct | xcb_generic_reply_t
| Generic reply. More...
struct | xcb_generic_event_t
| Generic event. More...
struct | xcb_ge_event_t
| GE event. More...
struct | xcb_generic_error_t
| Generic error. More...
struct | xcb_void_cookie_t
| Generic cookie. More...
struct | xcb_auth_info_t
| Container for authorization information. More...
## Defines
#define | X_PROTOCOL 11
#define | X_PROTOCOL_REVISION 0
#define | X_TCP_PORT 6000
#define | XCB_TYPE_PAD(T, I) (-(I) & (sizeof(T) > 4 ? 3 : sizeof(T) - 1))
#define | XCB_NONE 0L
#define | XCB_COPY_FROM_PARENT 0L
#define | XCB_CURRENT_TIME 0L
#define | XCB_NO_SYMBOL 0L
## Typedefs
typedef struct xcb_connection_t | xcb_connection_t
| XCB Connection structure.
typedef struct xcb_extension_t | xcb_extension_t
## Functions
int | xcb_flush (xcb_connection_t *c)
| Forces any buffered output to be written to the server.
uint32_t | xcb_get_maximum_request_length (xcb_connection_t *c)
| Returns the maximum request length that this server accepts.
void | xcb_prefetch_maximum_request_length (xcb_connection_t *c)
| Prefetch the maximum request length without blocking.
xcb_generic_event_t * | xcb_wait_for_event (xcb_connection_t *c)
| Returns the next event or error from the server.
xcb_generic_event_t * | xcb_poll_for_event (xcb_connection_t *c)
| Returns the next event or error from the server.
xcb_generic_error_t * | xcb_request_check (xcb_connection_t *c, xcb_void_cookie_t cookie)
| Return the error for a request, or NULL if none can ever arrive.
void | xcb_discard_reply (xcb_connection_t *c, unsigned int sequence)
| Discards the reply for a request.
const xcb_query_extension_reply_t * | xcb_get_extension_data (xcb_connection_t *c, xcb_extension_t *ext)
| Caches reply information from QueryExtension requests.
void | xcb_prefetch_extension_data (xcb_connection_t *c, xcb_extension_t *ext)
| Prefetch of extension data into the extension cache.
const xcb_setup_t * | xcb_get_setup (xcb_connection_t *c)
| Access the data returned by the server.
int | xcb_get_file_descriptor (xcb_connection_t *c)
| Access the file descriptor of the connection.
int | xcb_connection_has_error (xcb_connection_t *c)
| Test whether the connection has shut down due to a fatal error.
xcb_connection_t * | xcb_connect_to_fd (int fd, xcb_auth_info_t *auth_info)
| Connects to the X server.
void | xcb_disconnect (xcb_connection_t *c)
| Closes the connection.
int | xcb_parse_display (const char *name, char **host, int *display, int *screen)
| Parses a display string name in the form documented by X(7x).
xcb_connection_t * | xcb_connect (const char *displayname, int *screenp)
| Connects to the X server.
xcb_connection_t * | xcb_connect_to_display_with_auth_info (const char *display, xcb_auth_info_t *auth, int *screen)
| Connects to the X server, using an authorization information.
uint32_t | xcb_generate_id (xcb_connection_t *c)
| Allocates an XID for a new object.

## Detailed Description

Core API of the XCB library.

## Define Documentation

#define X_PROTOCOL 11

Current protocol version

#define X_PROTOCOL_REVISION 0

Current minor version

#define X_TCP_PORT 6000

X_TCP_PORT + display number = server port for TCP transport

#define XCB_COPY_FROM_PARENT 0L

XCB_COPY_FROM_PARENT can be used for many xcb_create_window parameters

#define XCB_CURRENT_TIME 0L

XCB_CURRENT_TIME can be used in most requests that take an xcb_timestamp_t

#define XCB_NO_SYMBOL 0L

XCB_NO_SYMBOL fills in unused entries in xcb_keysym_t tables

#define XCB_NONE 0L

XCB_NONE is the universal null resource or null atom parameter value for many core X requests

## Typedef Documentation

typedef struct xcb_connection_t xcb_connection_t

XCB Connection structure.

A structure that contain all data that XCB needs to communicate with an X server. Opaque structure containing all data that XCB needs to communicate with an X server.

typedef struct xcb_extension_t xcb_extension_t

Opaque structure used as key for xcb_get_extension_data_t.

## Function Documentation

xcb_connection_t* xcb_connect | ( | const char * | displayname,
|  | int * | screenp |
| ) |  |  |

Connects to the X server.

Parameters:

  | displayname,: | The name of the display.
  | screenp,: | A pointer to a preferred screen number.

Returns:
  A newly allocated xcb_connection_t structure.

Connects to the X server specified by `displayname`. If `displayname` is `NULL`, uses the value of the DISPLAY environment variable. If a particular screen on that server is preferred, the int pointed to by `screenp` (if not `NULL`) will be set to that screen; otherwise the screen will be set to 0.

xcb_connection_t* xcb_connect_to_display_with_auth_info | ( | const char * | display,
|  | xcb_auth_info_t * | auth,
|  | int * | screen |
| ) |  |  |

Connects to the X server, using an authorization information.

Parameters:

  | display,: | The name of the display.
  | auth,: | The authorization information.
  | screen,: | A pointer to a preferred screen number.

Returns:
  A newly allocated xcb_connection_t structure.

Connects to the X server specified by `displayname`, using the authorization `auth`. If a particular screen on that server is preferred, the int pointed to by `screenp` (if not `NULL`) will be set to that screen; otherwise `screenp` will be set to 0.

xcb_connection_t* xcb_connect_to_fd | ( | int | fd,
|  | xcb_auth_info_t * | auth_info |
| ) |  |  |

Connects to the X server.

Parameters:

  | fd,: | The file descriptor.
  | auth_info,: | Authentication data.

Returns:
  A newly allocated xcb_connection_t structure.

Connects to an X server, given the open socket `fd` and the xcb_auth_info_t `auth_info`. The file descriptor `fd` is bidirectionally connected to an X server. If the connection should be unauthenticated, `auth_info` must be `NULL`.

int xcb_connection_has_error | ( | xcb_connection_t * | c | ) |

Test whether the connection has shut down due to a fatal error.

Parameters:

  | c,: | The connection.

Returns:
  1 if the connection is in an error state; 0 otherwise.

Some errors that occur in the context of an xcb_connection_t are unrecoverable. When such an error occurs, the connection is shut down and further operations on the xcb_connection_t have no effect.

Todo:
  Other functions should document the conditions in which they shut down the connection.

void xcb_discard_reply | ( | xcb_connection_t * | c,
|  | unsigned int | sequence |
| ) |  |  |

Discards the reply for a request.

Parameters:

  | c,: | The connection to the X server.
  | sequence,: | The request sequence number from a cookie.

Discards the reply for a request. Additionally, any error generated by the request is also discarded (unless it was an _unchecked request and the error has already arrived).

This function will not block even if the reply is not yet available.

Note that the sequence really does have to come from an xcb cookie; this function is not designed to operate on socket-handoff replies.

void xcb_disconnect | ( | xcb_connection_t * | c | ) |

Closes the connection.

Parameters:

  | c,: | The connection.

Closes the file descriptor and frees all memory associated with the connection `c`.

int xcb_flush | ( | xcb_connection_t * | c | ) |

Forces any buffered output to be written to the server.

Parameters:

  | c,: | The connection to the X server.

Returns:
  > `0` on success, <= `0` otherwise.

Forces any buffered output to be written to the server. Blocks until the write is complete.

uint32_t xcb_generate_id | ( | xcb_connection_t * | c | ) |

Allocates an XID for a new object.

Parameters:

  | c,: | The connection.

Returns:
  A newly allocated XID.

Allocates an XID for a new object. Typically used just prior to various object creation functions, such as xcb_create_window.

const xcb_query_extension_reply_t* xcb_get_extension_data | ( | xcb_connection_t * | c,
|  | xcb_extension_t * | ext |
| ) |  |  |

Caches reply information from QueryExtension requests.

Parameters:

  | c,: | The connection.
  | ext,: | The extension data.

Returns:
  A pointer to the xcb_query_extension_reply_t for the extension.

This function is the primary interface to the "extension cache", which caches reply information from QueryExtension requests. Invoking this function may cause a call to xcb_query_extension to retrieve extension information from the server, and may block until extension data is received from the server.

The result must not be freed. This storage is managed by the cache itself.

int xcb_get_file_descriptor | ( | xcb_connection_t * | c | ) |

Access the file descriptor of the connection.

Parameters:

  | c,: | The connection.

Returns:
  The file descriptor.

Accessor for the file descriptor that was passed to the xcb_connect_to_fd call that returned `c`.

uint32_t xcb_get_maximum_request_length | ( | xcb_connection_t * | c | ) |

Returns the maximum request length that this server accepts.

Parameters:

  | c,: | The connection to the X server.

Returns:
  The maximum request length field.

In the absence of the BIG-REQUESTS extension, returns the maximum request length field from the connection setup data, which may be as much as 65535. If the server supports BIG-REQUESTS, then the maximum request length field from the reply to the BigRequestsEnable request will be returned instead.

Note that this length is measured in four-byte units, making the theoretical maximum lengths roughly 256kB without BIG-REQUESTS and 16GB with.

const xcb_setup_t* xcb_get_setup | ( | xcb_connection_t * | c | ) |

Access the data returned by the server.

Parameters:

  | c,: | The connection.

Returns:
  A pointer to an xcb_setup_t structure.

Accessor for the data returned by the server when the xcb_connection_t was initialized. This data includes

- the server's required format for images,
- a list of available visuals,
- a list of available screens,
- the server's maximum request length (in the absence of the BIG-REQUESTS extension),
- and other assorted information.

See the X protocol specification for more details.

The result must not be freed.

int xcb_parse_display | ( | const char * | name,
|  | char ** | host,
|  | int * | display,
|  | int * | screen |
| ) |  |  |

Parses a display string name in the form documented by X(7x).

Parameters:

  | name,: | The name of the display.
  | host,: | A pointer to a malloc'd copy of the hostname.
  | display,: | A pointer to the display number.
  | screen,: | A pointer to the screen number.

Returns:
  0 on failure, non 0 otherwise.

Parses the display string name `display_name` in the form documented by X(7x). Has no side effects on failure. If `displayname` is `NULL` or empty, it uses the environment variable DISPLAY. `hostp` is a pointer to a newly allocated string that contain the host name. `displayp` is set to the display number and `screenp` to the preferred screen number. `screenp` can be `NULL`. If `displayname` does not contain a screen number, it is set to `0`.

xcb_generic_event_t* xcb_poll_for_event | ( | xcb_connection_t * | c | ) |

Returns the next event or error from the server.

Parameters:

  | c,: | The connection to the X server. error status of the operation.

Returns:
  The next event from the server.

Returns the next event or error from the server, if one is available, or returns `NULL` otherwise. If no event is available, that might be because an I/O error like connection close occurred while attempting to read the next event, in which case the connection is shut down when this function returns.

void xcb_prefetch_extension_data | ( | xcb_connection_t * | c,
|  | xcb_extension_t * | ext |
| ) |  |  |

Prefetch of extension data into the extension cache.

Parameters:

  | c,: | The connection.
  | ext,: | The extension data.

This function allows a "prefetch" of extension data into the extension cache. Invoking the function may cause a call to xcb_query_extension, but will not block waiting for the reply. xcb_get_extension_data will return the prefetched data after possibly blocking while it is retrieved.

void xcb_prefetch_maximum_request_length | ( | xcb_connection_t * | c | ) |

Prefetch the maximum request length without blocking.

Parameters:

  | c,: | The connection to the X server.

Without blocking, does as much work as possible toward computing the maximum request length accepted by the X server.

Invoking this function may cause a call to xcb_big_requests_enable, but will not block waiting for the reply. xcb_get_maximum_request_length will return the prefetched data after possibly blocking while the reply is retrieved.

Note that in order for this function to be fully non-blocking, the application must previously have called xcb_prefetch_extension_data(c, &xcb_big_requests_id) and the reply must have already arrived.

xcb_generic_error_t* xcb_request_check | ( | xcb_connection_t * | c,
|  | xcb_void_cookie_t | cookie |
| ) |  |  |

Return the error for a request, or NULL if none can ever arrive.

Parameters:

  | c,: | The connection to the X server.
  | cookie,: | The request cookie.

Returns:
  The error for the request, or NULL if none can ever arrive.

The xcb_void_cookie_t cookie supplied to this function must have resulted from a call to xcb_[request_name]_checked(). This function will block until one of two conditions happens. If an error is received, it will be returned. If a reply to a subsequent request has already arrived, no error can arrive for this request, so this function will return NULL.

Note that this function will perform a sync if needed to ensure that the sequence number will advance beyond that provided in cookie; this is a convenience to avoid races in determining whether the sync is needed.

xcb_generic_event_t* xcb_wait_for_event | ( | xcb_connection_t * | c | ) |

Returns the next event or error from the server.

Parameters:

  | c,: | The connection to the X server.

Returns:
  The next event from the server.

Returns the next event or error from the server, or returns null in the event of an I/O error. Blocks until either an event or error arrive, or an I/O error occurs.