XCB: XCB Core API

XCB 1.17.0

Data Structures | Macros | Typedefs | Functions
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_raw_generic_event_t
| Raw 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...

## Macros
#define | X_PROTOCOL 11
#define | X_PROTOCOL_REVISION 0
#define | X_TCP_PORT 6000
#define | XCB_CONN_ERROR 1
#define | XCB_CONN_CLOSED_EXT_NOTSUPPORTED 2
#define | XCB_CONN_CLOSED_MEM_INSUFFICIENT 3
#define | XCB_CONN_CLOSED_REQ_LEN_EXCEED 4
#define | XCB_CONN_CLOSED_PARSE_ERR 5
#define | XCB_CONN_CLOSED_INVALID_SCREEN 6
#define | XCB_CONN_CLOSED_FDPASSING_FAILED 7
#define | XCB_TYPE_PAD(T, I)
#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_auth_info_t | xcb_auth_info_t
| Container for authorization information.
typedef struct xcb_special_event | xcb_special_event_t
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_event_t * | xcb_poll_for_queued_event (xcb_connection_t *c)
| Returns the next event without reading from the connection.
xcb_generic_event_t * | xcb_poll_for_special_event (xcb_connection_t *c, xcb_special_event_t *se)
| Returns the next event from a special queue.
xcb_generic_event_t * | xcb_wait_for_special_event (xcb_connection_t *c, xcb_special_event_t *se)
| Returns the next event from a special queue, blocking until one arrives.
xcb_special_event_t * | xcb_register_for_special_xge (xcb_connection_t *c, xcb_extension_t *ext, uint32_t eid, uint32_t *stamp)
| Listen for a special event.
void | xcb_unregister_for_special_event (xcb_connection_t *c, xcb_special_event_t *se)
| Stop listening for a special event.
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.
void | xcb_discard_reply64 (xcb_connection_t *c, uint64_t sequence)
| Discards the reply for a request, given by a 64bit sequence number.
const struct 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 struct 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.
uint64_t | xcb_total_read (xcb_connection_t *c)
| Obtain number of bytes read from the connection.
uint64_t | xcb_total_written (xcb_connection_t *c)
| Obtain number of bytes written to the connection.

## Detailed Description

Core API of the XCB library.

## Macro Definition Documentation

## ◆ X_PROTOCOL

#define X_PROTOCOL 11

Current protocol version

## ◆ X_PROTOCOL_REVISION

#define X_PROTOCOL_REVISION 0

Current minor version

## ◆ X_TCP_PORT

#define X_TCP_PORT 6000

X_TCP_PORT + display number = server port for TCP transport

## ◆ XCB_CONN_CLOSED_EXT_NOTSUPPORTED

#define XCB_CONN_CLOSED_EXT_NOTSUPPORTED 2

xcb connection shutdown because of extension not supported

## ◆ XCB_CONN_CLOSED_FDPASSING_FAILED

#define XCB_CONN_CLOSED_FDPASSING_FAILED 7

Connection closed because some FD passing operation failed

## ◆ XCB_CONN_CLOSED_INVALID_SCREEN

#define XCB_CONN_CLOSED_INVALID_SCREEN 6

Connection closed because the server does not have a screen matching the display.

Referenced by xcb_connect_to_display_with_auth_info().

## ◆ XCB_CONN_CLOSED_MEM_INSUFFICIENT

#define XCB_CONN_CLOSED_MEM_INSUFFICIENT 3

malloc(), calloc() and realloc() error upon failure, for eg ENOMEM

Referenced by xcb_connect_to_fd().

## ◆ XCB_CONN_CLOSED_PARSE_ERR

#define XCB_CONN_CLOSED_PARSE_ERR 5

Connection closed, error during parsing display string.

Referenced by xcb_connect_to_display_with_auth_info().

## ◆ XCB_CONN_CLOSED_REQ_LEN_EXCEED

#define XCB_CONN_CLOSED_REQ_LEN_EXCEED 4

Connection closed, exceeding request length that server accepts.

## ◆ XCB_CONN_ERROR

#define XCB_CONN_ERROR 1

xcb connection errors because of socket, pipe and other stream errors.

Referenced by xcb_connect_to_display_with_auth_info(), and xcb_connect_to_fd().

## ◆ XCB_COPY_FROM_PARENT

#define XCB_COPY_FROM_PARENT 0L

XCB_COPY_FROM_PARENT can be used for many xcb_create_window parameters

## ◆ XCB_CURRENT_TIME

#define XCB_CURRENT_TIME 0L

XCB_CURRENT_TIME can be used in most requests that take an xcb_timestamp_t

## ◆ XCB_NO_SYMBOL

#define XCB_NO_SYMBOL 0L

XCB_NO_SYMBOL fills in unused entries in xcb_keysym_t tables

## ◆ XCB_NONE

#define XCB_NONE 0L

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

## ◆ XCB_TYPE_PAD

#define XCB_TYPE_PAD | ( |  | T,
|  |  | I )

Value:
(-(I) & (sizeof(T) > 4 ? 3 : sizeof(T) - 1))

## Typedef Documentation

## ◆ xcb_auth_info_t

typedef struct xcb_auth_info_t xcb_auth_info_t

Container for authorization information.

A container for authorization information to be sent to the X server.

## ◆ xcb_connection_t

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.

## ◆ xcb_extension_t

typedef struct xcb_extension_t xcb_extension_t

Opaque structure used as key for xcb_get_extension_data_t.

## Function Documentation

## ◆ xcb_connect()

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.

Always returns a non-NULL pointer to a xcb_connection_t, even on failure. Callers need to use xcb_connection_has_error() to check for failure. When finished, use xcb_disconnect() to close the connection and free the structure.

References xcb_connect_to_display_with_auth_info().

## ◆ xcb_connect_to_display_with_auth_info()

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.

Always returns a non-NULL pointer to a xcb_connection_t, even on failure. Callers need to use xcb_connection_has_error() to check for failure. When finished, use xcb_disconnect() to close the connection and free the structure.

References xcb_auth_info_t::data, xcb_auth_info_t::name, XCB_CONN_CLOSED_INVALID_SCREEN, XCB_CONN_CLOSED_PARSE_ERR, XCB_CONN_ERROR, xcb_connect_to_fd(), and xcb_disconnect().

Referenced by xcb_connect().

## ◆ xcb_connect_to_fd()

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`.

Always returns a non-NULL pointer to a xcb_connection_t, even on failure. Callers need to use xcb_connection_has_error() to check for failure. When finished, use xcb_disconnect() to close the connection and free the structure.

References XCB_CONN_CLOSED_MEM_INSUFFICIENT, XCB_CONN_ERROR, and xcb_disconnect().

Referenced by xcb_connect_to_display_with_auth_info().

## ◆ xcb_connection_has_error()

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
  > 0 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, but memory will not be freed until xcb_disconnect() is called on the xcb_connection_t.

Returns
  XCB_CONN_ERROR, because of socket errors, pipe errors or other stream errors.
  XCB_CONN_CLOSED_EXT_NOTSUPPORTED, when extension not supported.
  XCB_CONN_CLOSED_MEM_INSUFFICIENT, when memory not available.
  XCB_CONN_CLOSED_REQ_LEN_EXCEED, exceeding request length that server accepts.
  XCB_CONN_CLOSED_PARSE_ERR, error during parsing display string.
  XCB_CONN_CLOSED_INVALID_SCREEN, because the server does not have a screen matching the display.

Referenced by xcb_total_read(), and xcb_total_written().

## ◆ xcb_discard_reply()

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.

## ◆ xcb_discard_reply64()

void xcb_discard_reply64 | ( | xcb_connection_t * | c,
|  | uint64_t | sequence )

Discards the reply for a request, given by a 64bit sequence number.

Parameters

  c | The connection to the X server.
  sequence | 64-bit sequence number as returned by xcb_send_request64().

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 xcb_send_request64(); the cookie sequence number is defined as "unsigned" int and therefore not 64-bit on all platforms. This function is not designed to operate on socket-handoff replies.

Unlike its xcb_discard_reply() counterpart, the given sequence number is not automatically "widened" to 64-bit.

## ◆ xcb_disconnect()

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`. If `c` is `NULL`, nothing is done.

Referenced by xcb_connect_to_display_with_auth_info(), and xcb_connect_to_fd().

## ◆ xcb_flush()

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.

## ◆ xcb_generate_id()

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, or -1 on failure.

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

References xcb_get_extension_data(), xcb_xc_misc_get_xid_range(), and xcb_xc_misc_get_xid_range_reply().

## ◆ xcb_get_extension_data()

const struct 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.

References xcb_query_extension_reply().

Referenced by xcb_generate_id(), xcb_prefetch_maximum_request_length(), and xcb_register_for_special_xge().

## ◆ xcb_get_file_descriptor()

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`.

## ◆ xcb_get_maximum_request_length()

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.

References xcb_big_requests_enable_reply(), and xcb_prefetch_maximum_request_length().

## ◆ xcb_get_setup()

const struct 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.

## ◆ xcb_parse_display()

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_poll_for_event()

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.

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.

## ◆ xcb_poll_for_queued_event()

xcb_generic_event_t * xcb_poll_for_queued_event | ( | xcb_connection_t * | c | ) |

Returns the next event without reading from the connection.

Parameters

  c | The connection to the X server.

Returns
  The next already queued event from the server.

This is a version of xcb_poll_for_event that only examines the event queue for new events. The function doesn't try to read new events from the connection if no queued events are found.

This function is useful for callers that know in advance that all interesting events have already been read from the connection. For example, callers might use xcb_wait_for_reply and be interested only of events that preceded a specific reply.

## ◆ xcb_prefetch_extension_data()

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.

## ◆ xcb_prefetch_maximum_request_length()

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.

References xcb_big_requests_enable(), and xcb_get_extension_data().

Referenced by xcb_get_maximum_request_length().

## ◆ xcb_request_check()

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.

References xcb_void_cookie_t::sequence.

## ◆ xcb_total_read()

uint64_t xcb_total_read | ( | xcb_connection_t * | c | ) |

Obtain number of bytes read from the connection.

Parameters

  c | The connection

Returns
  Number of bytes read from the server.

Returns cumulative number of bytes received from the connection.

This retrieves the total number of bytes read from this connection, to be used for diagnostic/monitoring/informative purposes.

References xcb_connection_has_error().

## ◆ xcb_total_written()

uint64_t xcb_total_written | ( | xcb_connection_t * | c | ) |

Obtain number of bytes written to the connection.

Parameters

  c | The connection

Returns
  Number of bytes written to the server.

Returns cumulative number of bytes sent to the connection.

This retrieves the total number of bytes written to this connection, to be used for diagnostic/monitoring/informative purposes.

References xcb_connection_has_error().

## ◆ xcb_wait_for_event()

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.