Current File : //usr/include/xcb/present.h |
/*
* This file generated automatically from present.xml by c_client.py.
* Edit at your peril.
*/
/**
* @defgroup XCB_Present_API XCB Present API
* @brief Present XCB Protocol Implementation.
* @{
**/
#ifndef __PRESENT_H
#define __PRESENT_H
#include "xcb.h"
#include "xproto.h"
#include "randr.h"
#include "xfixes.h"
#include "sync.h"
#ifdef __cplusplus
extern "C" {
#endif
#define XCB_PRESENT_MAJOR_VERSION 1
#define XCB_PRESENT_MINOR_VERSION 2
extern xcb_extension_t xcb_present_id;
typedef enum xcb_present_event_enum_t {
XCB_PRESENT_EVENT_CONFIGURE_NOTIFY = 0,
XCB_PRESENT_EVENT_COMPLETE_NOTIFY = 1,
XCB_PRESENT_EVENT_IDLE_NOTIFY = 2,
XCB_PRESENT_EVENT_REDIRECT_NOTIFY = 3
} xcb_present_event_enum_t;
typedef enum xcb_present_event_mask_t {
XCB_PRESENT_EVENT_MASK_NO_EVENT = 0,
XCB_PRESENT_EVENT_MASK_CONFIGURE_NOTIFY = 1,
XCB_PRESENT_EVENT_MASK_COMPLETE_NOTIFY = 2,
XCB_PRESENT_EVENT_MASK_IDLE_NOTIFY = 4,
XCB_PRESENT_EVENT_MASK_REDIRECT_NOTIFY = 8
} xcb_present_event_mask_t;
typedef enum xcb_present_option_t {
XCB_PRESENT_OPTION_NONE = 0,
XCB_PRESENT_OPTION_ASYNC = 1,
XCB_PRESENT_OPTION_COPY = 2,
XCB_PRESENT_OPTION_UST = 4,
XCB_PRESENT_OPTION_SUBOPTIMAL = 8
} xcb_present_option_t;
typedef enum xcb_present_capability_t {
XCB_PRESENT_CAPABILITY_NONE = 0,
XCB_PRESENT_CAPABILITY_ASYNC = 1,
XCB_PRESENT_CAPABILITY_FENCE = 2,
XCB_PRESENT_CAPABILITY_UST = 4
} xcb_present_capability_t;
typedef enum xcb_present_complete_kind_t {
XCB_PRESENT_COMPLETE_KIND_PIXMAP = 0,
XCB_PRESENT_COMPLETE_KIND_NOTIFY_MSC = 1
} xcb_present_complete_kind_t;
typedef enum xcb_present_complete_mode_t {
XCB_PRESENT_COMPLETE_MODE_COPY = 0,
XCB_PRESENT_COMPLETE_MODE_FLIP = 1,
XCB_PRESENT_COMPLETE_MODE_SKIP = 2,
XCB_PRESENT_COMPLETE_MODE_SUBOPTIMAL_COPY = 3
} xcb_present_complete_mode_t;
/**
* @brief xcb_present_notify_t
**/
typedef struct xcb_present_notify_t {
xcb_window_t window;
uint32_t serial;
} xcb_present_notify_t;
/**
* @brief xcb_present_notify_iterator_t
**/
typedef struct xcb_present_notify_iterator_t {
xcb_present_notify_t *data;
int rem;
int index;
} xcb_present_notify_iterator_t;
/**
* @brief xcb_present_query_version_cookie_t
**/
typedef struct xcb_present_query_version_cookie_t {
unsigned int sequence;
} xcb_present_query_version_cookie_t;
/** Opcode for xcb_present_query_version. */
#define XCB_PRESENT_QUERY_VERSION 0
/**
* @brief xcb_present_query_version_request_t
**/
typedef struct xcb_present_query_version_request_t {
uint8_t major_opcode;
uint8_t minor_opcode;
uint16_t length;
uint32_t major_version;
uint32_t minor_version;
} xcb_present_query_version_request_t;
/**
* @brief xcb_present_query_version_reply_t
**/
typedef struct xcb_present_query_version_reply_t {
uint8_t response_type;
uint8_t pad0;
uint16_t sequence;
uint32_t length;
uint32_t major_version;
uint32_t minor_version;
} xcb_present_query_version_reply_t;
/** Opcode for xcb_present_pixmap. */
#define XCB_PRESENT_PIXMAP 1
/**
* @brief xcb_present_pixmap_request_t
**/
typedef struct xcb_present_pixmap_request_t {
uint8_t major_opcode;
uint8_t minor_opcode;
uint16_t length;
xcb_window_t window;
xcb_pixmap_t pixmap;
uint32_t serial;
xcb_xfixes_region_t valid;
xcb_xfixes_region_t update;
int16_t x_off;
int16_t y_off;
xcb_randr_crtc_t target_crtc;
xcb_sync_fence_t wait_fence;
xcb_sync_fence_t idle_fence;
uint32_t options;
uint8_t pad0[4];
uint64_t target_msc;
uint64_t divisor;
uint64_t remainder;
} xcb_present_pixmap_request_t;
/** Opcode for xcb_present_notify_msc. */
#define XCB_PRESENT_NOTIFY_MSC 2
/**
* @brief xcb_present_notify_msc_request_t
**/
typedef struct xcb_present_notify_msc_request_t {
uint8_t major_opcode;
uint8_t minor_opcode;
uint16_t length;
xcb_window_t window;
uint32_t serial;
uint8_t pad0[4];
uint64_t target_msc;
uint64_t divisor;
uint64_t remainder;
} xcb_present_notify_msc_request_t;
typedef uint32_t xcb_present_event_t;
/**
* @brief xcb_present_event_iterator_t
**/
typedef struct xcb_present_event_iterator_t {
xcb_present_event_t *data;
int rem;
int index;
} xcb_present_event_iterator_t;
/** Opcode for xcb_present_select_input. */
#define XCB_PRESENT_SELECT_INPUT 3
/**
* @brief xcb_present_select_input_request_t
**/
typedef struct xcb_present_select_input_request_t {
uint8_t major_opcode;
uint8_t minor_opcode;
uint16_t length;
xcb_present_event_t eid;
xcb_window_t window;
uint32_t event_mask;
} xcb_present_select_input_request_t;
/**
* @brief xcb_present_query_capabilities_cookie_t
**/
typedef struct xcb_present_query_capabilities_cookie_t {
unsigned int sequence;
} xcb_present_query_capabilities_cookie_t;
/** Opcode for xcb_present_query_capabilities. */
#define XCB_PRESENT_QUERY_CAPABILITIES 4
/**
* @brief xcb_present_query_capabilities_request_t
**/
typedef struct xcb_present_query_capabilities_request_t {
uint8_t major_opcode;
uint8_t minor_opcode;
uint16_t length;
uint32_t target;
} xcb_present_query_capabilities_request_t;
/**
* @brief xcb_present_query_capabilities_reply_t
**/
typedef struct xcb_present_query_capabilities_reply_t {
uint8_t response_type;
uint8_t pad0;
uint16_t sequence;
uint32_t length;
uint32_t capabilities;
} xcb_present_query_capabilities_reply_t;
/** Opcode for xcb_present_generic. */
#define XCB_PRESENT_GENERIC 0
/**
* @brief xcb_present_generic_event_t
**/
typedef struct xcb_present_generic_event_t {
uint8_t response_type;
uint8_t extension;
uint16_t sequence;
uint32_t length;
uint16_t evtype;
uint8_t pad0[2];
xcb_present_event_t event;
} xcb_present_generic_event_t;
/** Opcode for xcb_present_configure_notify. */
#define XCB_PRESENT_CONFIGURE_NOTIFY 0
/**
* @brief xcb_present_configure_notify_event_t
**/
typedef struct xcb_present_configure_notify_event_t {
uint8_t response_type;
uint8_t extension;
uint16_t sequence;
uint32_t length;
uint16_t event_type;
uint8_t pad0[2];
xcb_present_event_t event;
xcb_window_t window;
int16_t x;
int16_t y;
uint16_t width;
uint16_t height;
int16_t off_x;
int16_t off_y;
uint32_t full_sequence;
uint16_t pixmap_width;
uint16_t pixmap_height;
uint32_t pixmap_flags;
} xcb_present_configure_notify_event_t;
/** Opcode for xcb_present_complete_notify. */
#define XCB_PRESENT_COMPLETE_NOTIFY 1
/**
* @brief xcb_present_complete_notify_event_t
**/
typedef struct xcb_present_complete_notify_event_t {
uint8_t response_type;
uint8_t extension;
uint16_t sequence;
uint32_t length;
uint16_t event_type;
uint8_t kind;
uint8_t mode;
xcb_present_event_t event;
xcb_window_t window;
uint32_t serial;
uint64_t ust;
uint32_t full_sequence;
uint64_t msc;
} XCB_PACKED xcb_present_complete_notify_event_t;
/** Opcode for xcb_present_idle_notify. */
#define XCB_PRESENT_IDLE_NOTIFY 2
/**
* @brief xcb_present_idle_notify_event_t
**/
typedef struct xcb_present_idle_notify_event_t {
uint8_t response_type;
uint8_t extension;
uint16_t sequence;
uint32_t length;
uint16_t event_type;
uint8_t pad0[2];
xcb_present_event_t event;
xcb_window_t window;
uint32_t serial;
xcb_pixmap_t pixmap;
xcb_sync_fence_t idle_fence;
uint32_t full_sequence;
} xcb_present_idle_notify_event_t;
/** Opcode for xcb_present_redirect_notify. */
#define XCB_PRESENT_REDIRECT_NOTIFY 3
/**
* @brief xcb_present_redirect_notify_event_t
**/
typedef struct xcb_present_redirect_notify_event_t {
uint8_t response_type;
uint8_t extension;
uint16_t sequence;
uint32_t length;
uint16_t event_type;
uint8_t update_window;
uint8_t pad0;
xcb_present_event_t event;
xcb_window_t event_window;
xcb_window_t window;
xcb_pixmap_t pixmap;
uint32_t serial;
uint32_t full_sequence;
xcb_xfixes_region_t valid_region;
xcb_xfixes_region_t update_region;
xcb_rectangle_t valid_rect;
xcb_rectangle_t update_rect;
int16_t x_off;
int16_t y_off;
xcb_randr_crtc_t target_crtc;
xcb_sync_fence_t wait_fence;
xcb_sync_fence_t idle_fence;
uint32_t options;
uint8_t pad1[4];
uint64_t target_msc;
uint64_t divisor;
uint64_t remainder;
} XCB_PACKED xcb_present_redirect_notify_event_t;
/**
* Get the next element of the iterator
* @param i Pointer to a xcb_present_notify_iterator_t
*
* Get the next element in the iterator. The member rem is
* decreased by one. The member data points to the next
* element. The member index is increased by sizeof(xcb_present_notify_t)
*/
void
xcb_present_notify_next (xcb_present_notify_iterator_t *i);
/**
* Return the iterator pointing to the last element
* @param i An xcb_present_notify_iterator_t
* @return The iterator pointing to the last element
*
* Set the current element in the iterator to the last element.
* The member rem is set to 0. The member data points to the
* last element.
*/
xcb_generic_iterator_t
xcb_present_notify_end (xcb_present_notify_iterator_t i);
/**
*
* @param c The connection
* @return A cookie
*
* Delivers a request to the X server.
*
*/
xcb_present_query_version_cookie_t
xcb_present_query_version (xcb_connection_t *c,
uint32_t major_version,
uint32_t minor_version);
/**
*
* @param c The connection
* @return A cookie
*
* Delivers a request to the X server.
*
* This form can be used only if the request will cause
* a reply to be generated. Any returned error will be
* placed in the event queue.
*/
xcb_present_query_version_cookie_t
xcb_present_query_version_unchecked (xcb_connection_t *c,
uint32_t major_version,
uint32_t minor_version);
/**
* Return the reply
* @param c The connection
* @param cookie The cookie
* @param e The xcb_generic_error_t supplied
*
* Returns the reply of the request asked by
*
* The parameter @p e supplied to this function must be NULL if
* xcb_present_query_version_unchecked(). is used.
* Otherwise, it stores the error if any.
*
* The returned value must be freed by the caller using free().
*/
xcb_present_query_version_reply_t *
xcb_present_query_version_reply (xcb_connection_t *c,
xcb_present_query_version_cookie_t cookie /**< */,
xcb_generic_error_t **e);
int
xcb_present_pixmap_sizeof (const void *_buffer,
uint32_t notifies_len);
/**
*
* @param c The connection
* @return A cookie
*
* Delivers a request to the X server.
*
* This form can be used only if the request will not cause
* a reply to be generated. Any returned error will be
* saved for handling by xcb_request_check().
*/
xcb_void_cookie_t
xcb_present_pixmap_checked (xcb_connection_t *c,
xcb_window_t window,
xcb_pixmap_t pixmap,
uint32_t serial,
xcb_xfixes_region_t valid,
xcb_xfixes_region_t update,
int16_t x_off,
int16_t y_off,
xcb_randr_crtc_t target_crtc,
xcb_sync_fence_t wait_fence,
xcb_sync_fence_t idle_fence,
uint32_t options,
uint64_t target_msc,
uint64_t divisor,
uint64_t remainder,
uint32_t notifies_len,
const xcb_present_notify_t *notifies);
/**
*
* @param c The connection
* @return A cookie
*
* Delivers a request to the X server.
*
*/
xcb_void_cookie_t
xcb_present_pixmap (xcb_connection_t *c,
xcb_window_t window,
xcb_pixmap_t pixmap,
uint32_t serial,
xcb_xfixes_region_t valid,
xcb_xfixes_region_t update,
int16_t x_off,
int16_t y_off,
xcb_randr_crtc_t target_crtc,
xcb_sync_fence_t wait_fence,
xcb_sync_fence_t idle_fence,
uint32_t options,
uint64_t target_msc,
uint64_t divisor,
uint64_t remainder,
uint32_t notifies_len,
const xcb_present_notify_t *notifies);
xcb_present_notify_t *
xcb_present_pixmap_notifies (const xcb_present_pixmap_request_t *R);
int
xcb_present_pixmap_notifies_length (const xcb_present_pixmap_request_t *R);
xcb_present_notify_iterator_t
xcb_present_pixmap_notifies_iterator (const xcb_present_pixmap_request_t *R);
/**
*
* @param c The connection
* @return A cookie
*
* Delivers a request to the X server.
*
* This form can be used only if the request will not cause
* a reply to be generated. Any returned error will be
* saved for handling by xcb_request_check().
*/
xcb_void_cookie_t
xcb_present_notify_msc_checked (xcb_connection_t *c,
xcb_window_t window,
uint32_t serial,
uint64_t target_msc,
uint64_t divisor,
uint64_t remainder);
/**
*
* @param c The connection
* @return A cookie
*
* Delivers a request to the X server.
*
*/
xcb_void_cookie_t
xcb_present_notify_msc (xcb_connection_t *c,
xcb_window_t window,
uint32_t serial,
uint64_t target_msc,
uint64_t divisor,
uint64_t remainder);
/**
* Get the next element of the iterator
* @param i Pointer to a xcb_present_event_iterator_t
*
* Get the next element in the iterator. The member rem is
* decreased by one. The member data points to the next
* element. The member index is increased by sizeof(xcb_present_event_t)
*/
void
xcb_present_event_next (xcb_present_event_iterator_t *i);
/**
* Return the iterator pointing to the last element
* @param i An xcb_present_event_iterator_t
* @return The iterator pointing to the last element
*
* Set the current element in the iterator to the last element.
* The member rem is set to 0. The member data points to the
* last element.
*/
xcb_generic_iterator_t
xcb_present_event_end (xcb_present_event_iterator_t i);
/**
*
* @param c The connection
* @return A cookie
*
* Delivers a request to the X server.
*
* This form can be used only if the request will not cause
* a reply to be generated. Any returned error will be
* saved for handling by xcb_request_check().
*/
xcb_void_cookie_t
xcb_present_select_input_checked (xcb_connection_t *c,
xcb_present_event_t eid,
xcb_window_t window,
uint32_t event_mask);
/**
*
* @param c The connection
* @return A cookie
*
* Delivers a request to the X server.
*
*/
xcb_void_cookie_t
xcb_present_select_input (xcb_connection_t *c,
xcb_present_event_t eid,
xcb_window_t window,
uint32_t event_mask);
/**
*
* @param c The connection
* @return A cookie
*
* Delivers a request to the X server.
*
*/
xcb_present_query_capabilities_cookie_t
xcb_present_query_capabilities (xcb_connection_t *c,
uint32_t target);
/**
*
* @param c The connection
* @return A cookie
*
* Delivers a request to the X server.
*
* This form can be used only if the request will cause
* a reply to be generated. Any returned error will be
* placed in the event queue.
*/
xcb_present_query_capabilities_cookie_t
xcb_present_query_capabilities_unchecked (xcb_connection_t *c,
uint32_t target);
/**
* Return the reply
* @param c The connection
* @param cookie The cookie
* @param e The xcb_generic_error_t supplied
*
* Returns the reply of the request asked by
*
* The parameter @p e supplied to this function must be NULL if
* xcb_present_query_capabilities_unchecked(). is used.
* Otherwise, it stores the error if any.
*
* The returned value must be freed by the caller using free().
*/
xcb_present_query_capabilities_reply_t *
xcb_present_query_capabilities_reply (xcb_connection_t *c,
xcb_present_query_capabilities_cookie_t cookie /**< */,
xcb_generic_error_t **e);
int
xcb_present_redirect_notify_sizeof (const void *_buffer,
uint32_t notifies_len);
xcb_present_notify_t *
xcb_present_redirect_notify_notifies (const xcb_present_redirect_notify_event_t *R);
int
xcb_present_redirect_notify_notifies_length (const xcb_present_redirect_notify_event_t *R);
xcb_present_notify_iterator_t
xcb_present_redirect_notify_notifies_iterator (const xcb_present_redirect_notify_event_t *R);
#ifdef __cplusplus
}
#endif
#endif
/**
* @}
*/