The XCB public API contains functions that are auxilliary to the X Protocol.
- Types
- xcb_connect
- xcb_connect_to_display_with_auth_info
- xcb_connect_to_fd
- xcb_disconnect
- xcb_parse_display
- xcb_get_setup
- xcb_get_file_descriptor
- xcb_get_maximum_request_length
- xcb_wait_for_event
- xcb_poll_for_event
- xcb_connection_has_error
- xcb_flush
- xcb_get_extension_data
- xcb_prefetch_extension_data
- xcb_generate_id
Types
These types are declared in xcb.h.
xcb_connection_t
(xcb.h)
typedef struct xcb_connection_t xcb_connection_t;
An xcb_connection_t
is an opaque structure containing all data that XCB needs to communicate with an X server. The structure is defined in xcbint.h.
xcb_extension_t
(xcb.h)
typedef struct xcb_extension_t xcb_extension_t;
An xcb_extension_t
is an opaque structure used as key for xcb_get_extension_data
.
xcb_auth_info_t
(xcb.h)
typedef struct xcb_auth_info_t {
int namelen;
char *name; // string containing the authentication protocol name, such as "MIT-MAGIC-COOKIE-1" or "XDM-AUTHORIZATION-1".
int datalen;
char *data; // interpreted in a protocol-specific manner
} xcb_auth_info_t;
A container for authorization information to be sent to the X server.
These functions are declared in xcb.h.
xcb_connect
(xcb_util.c
)
xcb_connection_t *
xcb_connect (const char *display,
int *screen );
Connects to the X server specified by display
. If display
is null, uses the value of the DISPLAY environment variable. If a particular screen on that server is preferred, the int pointed to by screen
(if non-null) will be set to that screen; otherwise the screen will be set to 0.
xcb_connect_to_display_with_auth_info
(xcb_util.c
)
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 specified by display
, using the given authorization information. If a particular screen on that server is preferred, the int pointed to by screen
(if non-null) will be set to that screen; otherwise the screen will be set to 0.
xcb_connect_to_fd
(xcb_conn.c
)
xcb_connection_t *
xcb_connect_to_fd (int fd, // a file descriptor bidirectionally connected to an X server.
xcb_auth_info_t *auth_info ); // authentication data, or 0 if the connection should be unauthenticated. xcb_get_auth_info returns appropriate authentication data
Connects to an X server, given an open socket and a suitable xcb_auth_info_t
.
Returns an xcb_connection_t.
See also xcb_connect
.
xcb_disconnect
(xcb_conn.c
)
void
xcb_disconnect (xcb_connection *c);
Closes the file descriptor and frees all memory associated with the connection. Only close a connection once.
xcb_parse_display
(xcb_util.c
)
int
xcb_parse_display (const char *name, // the display name to parse; if null or empty, uses the environment variable DISPLAY.
char **host, // a non-null pointer to a pointer which will be set to a malloc'd copy of the hostname.
int *display, // a non-null pointer to an int which will be set to the display number
int *screen ); // a (possibly null) pointer to an int which will be set to the preferred screen number, or set to 0 if the display string does not contain a screen number
Parses a display string name
in the form documented by X(7x). Has no side effects on failure.
Returns 0 on failure (perhaps name was null or unparsable, or malloc failed); non-zero on success.
xcb_get_setup
(xcb_conn.c
)
const xcb_setup_t *
xcb_get_setup (xcb_connection_t *c);
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 and xcb_types.h
for more details.
This routine returns a pointer into the connection data. It should not be freed, and will become invalid when the connection is freed.
xcb_get_file_descriptor
(xcb_conn.c
)
int
xcb_get_file_descriptor (xcb_connection_t *c);
Accessor for the file descriptor that was passed to the xcb_connect_to_fd
call that returned c
.
xcb_get_maximum_request_length
(xcb_out.c
)
uint32_t
xcb_get_maximum_request_length (xcb_connection_t *c);
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.
xcb_wait_for_event
(xcb_in.c
[!] )
xcb_generic_event_t *
xcb_wait_for_event (xcb_connection_t *c);
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.
xcb_poll_for_event
(xcb_in.c
)
xcb_generic_event_t *
xcb_poll_for_event (xcb_connection_t *c);
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. You can use xcb_connection_has_error
to check for this condition.
xcb_connection_has_error
int
xcb_connection_has_error (xcb_connection_t *c);
Returns non-zero if the connection has an error or zero if the connection is still valid. If this ever returns non-zero, then the connection is invalid, as if xcb_disconnect
had been called.
xcb_flush
(xcb_out.c
)
int
xcb_flush (xcb_connection_t *c);
Forces any buffered output to be written to the server. Blocks until the write is complete.
Returns: 1 on success, 0 on failure
xcb_get_extension_data
(xcb_ext.c
)
const xcb_query_extension_reply_t *
xcb_get_extension_data (xcb_connection_t *c,
xcb_extension_t *ext );
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.
Do not free the returned xcb_query_extension_reply_t
- this storage is managed by the cache itself.
xcb_prefetch_extension_data
(xcb_ext.c
)
void
xcb_prefetch_extension_data (xcb_connection_t *c,
xcb_extension_t *ext );
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_generate_id
(xcb_xid.c
)
uint32_t
xcb_generate_id (xcb_connection *c);
This function allocates an XID prior to creating a new X object. For example, xcb_create_window
:
xcb_window_t window = xcb_generate_id (connection);
xcb_create_window (connection, depth, window, ... );