X-Git-Url: http://git.demorecorder.com/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fxcb.h;h=35d876883461919026491dbaec8cf248b86dcae8;hb=1c590d5a86ae854e53f388e40c952e92f11d59e6;hp=ed4d4b97571a9915899d3c69dd14f31bec79771a;hpb=a3bd6f4760b5b3f5f360a690920839646e2b9d06;p=free-sw%2Fxcb%2Flibxcb diff --git a/src/xcb.h b/src/xcb.h index ed4d4b9..35d8768 100644 --- a/src/xcb.h +++ b/src/xcb.h @@ -35,18 +35,6 @@ #include #endif -/* FIXME: these names conflict with those defined in Xmd.h. */ -#ifndef XMD_H -typedef uint8_t uint8_t; -typedef uint8_t uint8_t; -typedef uint8_t uint8_t; -typedef uint16_t uint16_t; -typedef uint32_t uint32_t; -typedef int8_t int8_t; -typedef int16_t int16_t; -typedef int32_t int32_t; -#endif /* XMD_H */ - #include #include @@ -60,7 +48,7 @@ extern "C" { */ /** - * @defgroup xcb__core_api_t XCB Core API + * @defgroup XCB_Core_API XCB Core API * @brief Core API of the XCB library. * * @{ @@ -124,9 +112,26 @@ typedef struct { uint8_t pad0; /**< Padding */ uint16_t sequence; /**< Sequence number */ uint32_t pad[7]; /**< Padding */ - uint32_t full_sequence; + uint32_t full_sequence; /**< full sequence */ } xcb_generic_event_t; +/** + * @brief GE event + * + * An event as sent by the XGE extension. The length field specifies the + * number of 4-byte blocks trailing the struct. + */ +typedef struct { + uint8_t response_type; /**< Type of the response */ + uint8_t pad0; /**< Padding */ + uint16_t sequence; /**< Sequence number */ + uint32_t length; + uint16_t event_type; + uint16_t pad1; + uint32_t pad[5]; /**< Padding */ + uint32_t full_sequence; /**< full sequence */ +} xcb_ge_event_t; + /** * @brief Generic error. * @@ -136,8 +141,12 @@ typedef struct { uint8_t response_type; /**< Type of the response */ uint8_t error_code; /**< Error code */ uint16_t sequence; /**< Sequence number */ - uint32_t pad[7]; /**< Padding */ - uint32_t full_sequence; + uint32_t resource_id; /** < Resource ID for requests with side effects only */ + uint16_t minor_code; /** < Minor opcode of the failed request */ + uint8_t major_code; /** < Major opcode of the failed request */ + uint8_t pad0; + uint32_t pad[5]; /**< Padding */ + uint32_t full_sequence; /**< full sequence */ } xcb_generic_error_t; /** @@ -157,7 +166,7 @@ typedef struct { /** XCB_NONE is the universal null resource or null atom parameter value for many core X requests */ #define XCB_NONE 0L -/** XCB_COPY_FROM_PARENT can be used for many CreateWindow parameters */ +/** XCB_COPY_FROM_PARENT can be used for many xcb_create_window parameters */ #define XCB_COPY_FROM_PARENT 0L /** XCB_CURRENT_TIME can be used in most requests that take an xcb_timestamp_t */ @@ -195,8 +204,7 @@ typedef struct xcb_auth_info_t { int xcb_flush(xcb_connection_t *c); /** - * @brief Returns the maximum request length field from the connection - * setup data. + * @brief Returns the maximum request length that this server accepts. * @param c: The connection to the X server. * @return The maximum request length field. * @@ -212,6 +220,25 @@ int xcb_flush(xcb_connection_t *c); */ uint32_t xcb_get_maximum_request_length(xcb_connection_t *c); +/** + * @brief Prefetch the maximum request length without blocking. + * @param 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. + */ +void xcb_prefetch_maximum_request_length(xcb_connection_t *c); + /* xcb_in.c */ @@ -229,19 +256,16 @@ xcb_generic_event_t *xcb_wait_for_event(xcb_connection_t *c); /** * @brief Returns the next event or error from the server. * @param c: The connection to the X server. - * @param error: A pointer to an int to be filled in with the I/O * error status of the operation. * @return The next event from the server. * * Returns the next event or error from the server, if one is * available, or returns @c 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. The @p error parameter is a - * pointer to an int to be filled in with the I/O error status of the - * operation. If @p error is @c NULL, terminates the application when an - * I/O error occurs. + * attempting to read the next event, in which case the connection is + * shut down when this function returns. */ -xcb_generic_event_t *xcb_poll_for_event(xcb_connection_t *c, int *error); +xcb_generic_event_t *xcb_poll_for_event(xcb_connection_t *c); /** * @brief Return the error for a request, or NULL if none can ever arrive. @@ -249,11 +273,11 @@ xcb_generic_event_t *xcb_poll_for_event(xcb_connection_t *c, int *error); * @param cookie: The request cookie. * @return 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[RequestName]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. + * 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 @@ -261,6 +285,22 @@ xcb_generic_event_t *xcb_poll_for_event(xcb_connection_t *c, int *error); */ xcb_generic_error_t *xcb_request_check(xcb_connection_t *c, xcb_void_cookie_t cookie); +/** + * @brief Discards the reply for a request. + * @param c: The connection to the X server. + * @param 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_discard_reply(xcb_connection_t *c, unsigned int sequence); + /* xcb_ext.c */ @@ -278,7 +318,7 @@ typedef struct xcb_extension_t xcb_extension_t; /**< Opaque structure used as k * 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_t to retrieve extension information from the + * xcb_query_extension to retrieve extension information from the * server, and may block until extension data is received from the * server. * @@ -294,8 +334,8 @@ const xcb_query_extension_reply_t *xcb_get_extension_data(xcb_connection_t *c, x * * This function allows a "prefetch" of extension data into the * extension cache. Invoking the function may cause a call to - * xcb_query_extension_t, but will not block waiting for the - * reply. xcb_get_extension_data_t will return the prefetched data after + * 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_extension_data(xcb_connection_t *c, xcb_extension_t *ext); @@ -329,7 +369,7 @@ const xcb_setup_t *xcb_get_setup(xcb_connection_t *c); * @return The file descriptor. * * Accessor for the file descriptor that was passed to the - * xcb_connect_to_fd_t call that returned @p c. + * xcb_connect_to_fd call that returned @p c. */ int xcb_get_file_descriptor(xcb_connection_t *c); @@ -356,10 +396,9 @@ int xcb_connection_has_error(xcb_connection_t *c); * * Connects to an X server, given the open socket @p fd and the * xcb_auth_info_t @p auth_info. The file descriptor @p fd is - * bidirectionally connected to an X server. xcb_get_tcpfd_t and - * xcb_get_unix_fd_t return appropriate file descriptors. If the connection + * bidirectionally connected to an X server. If the connection * should be unauthenticated, @p auth_info must be @c - * NULL. xcb_get_auth_info_t returns appropriate authentication data. + * NULL. */ xcb_connection_t *xcb_connect_to_fd(int fd, xcb_auth_info_t *auth_info); @@ -377,10 +416,10 @@ void xcb_disconnect(xcb_connection_t *c); /** * @brief Parses a display string name in the form documented by X(7x). - * @param displayname: The name of the display. - * @param hostp: A pointer to a malloc'd copy of the hostname. - * @param displayp: A pointer to the display number. - * @param screenp: A pointer to the screen number. + * @param name: The name of the display. + * @param host: A pointer to a malloc'd copy of the hostname. + * @param display: A pointer to the display number. + * @param screen: A pointer to the screen number. * @return 0 on failure, non 0 otherwise. * * Parses the display string name @p display_name in the form @@ -410,9 +449,9 @@ xcb_connection_t *xcb_connect(const char *displayname, int *screenp); /** * @brief Connects to the X server, using an authorization information. - * @param displayname: The name of the display. + * @param display: The name of the display. * @param auth: The authorization information. - * @param screenp: A pointer to a preferred screen number. + * @param screen: A pointer to a preferred screen number. * @return A newly allocated xcb_connection_t structure. * * Connects to the X server specified by @p displayname, using the @@ -423,6 +462,19 @@ xcb_connection_t *xcb_connect(const char *displayname, int *screenp); xcb_connection_t *xcb_connect_to_display_with_auth_info(const char *display, xcb_auth_info_t *auth, int *screen); +/* xcb_xid.c */ + +/** + * @brief Allocates an XID for a new object. + * @param c: The connection. + * @return 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. + */ +uint32_t xcb_generate_id(xcb_connection_t *c); + + /** * @} */