1/* 2 * This file generated automatically from present.xml by c_client.py. 3 * Edit at your peril. 4 */ 5 6/** 7 * @defgroup XCB_Present_API XCB Present API 8 * @brief Present XCB Protocol Implementation. 9 * @{ 10 **/ 11 12#ifndef __PRESENT_H 13#define __PRESENT_H 14 15#include "xcb.h" 16#include "xproto.h" 17#include "randr.h" 18#include "xfixes.h" 19#include "sync.h" 20 21#ifdef __cplusplus 22extern "C" { 23#endif 24 25#define XCB_PRESENT_MAJOR_VERSION 1 26#define XCB_PRESENT_MINOR_VERSION 2 27 28extern xcb_extension_t xcb_present_id; 29 30typedef enum xcb_present_event_enum_t { 31 XCB_PRESENT_EVENT_CONFIGURE_NOTIFY = 0, 32 XCB_PRESENT_EVENT_COMPLETE_NOTIFY = 1, 33 XCB_PRESENT_EVENT_IDLE_NOTIFY = 2, 34 XCB_PRESENT_EVENT_REDIRECT_NOTIFY = 3 35} xcb_present_event_enum_t; 36 37typedef enum xcb_present_event_mask_t { 38 XCB_PRESENT_EVENT_MASK_NO_EVENT = 0, 39 XCB_PRESENT_EVENT_MASK_CONFIGURE_NOTIFY = 1, 40 XCB_PRESENT_EVENT_MASK_COMPLETE_NOTIFY = 2, 41 XCB_PRESENT_EVENT_MASK_IDLE_NOTIFY = 4, 42 XCB_PRESENT_EVENT_MASK_REDIRECT_NOTIFY = 8 43} xcb_present_event_mask_t; 44 45typedef enum xcb_present_option_t { 46 XCB_PRESENT_OPTION_NONE = 0, 47 XCB_PRESENT_OPTION_ASYNC = 1, 48 XCB_PRESENT_OPTION_COPY = 2, 49 XCB_PRESENT_OPTION_UST = 4, 50 XCB_PRESENT_OPTION_SUBOPTIMAL = 8 51} xcb_present_option_t; 52 53typedef enum xcb_present_capability_t { 54 XCB_PRESENT_CAPABILITY_NONE = 0, 55 XCB_PRESENT_CAPABILITY_ASYNC = 1, 56 XCB_PRESENT_CAPABILITY_FENCE = 2, 57 XCB_PRESENT_CAPABILITY_UST = 4 58} xcb_present_capability_t; 59 60typedef enum xcb_present_complete_kind_t { 61 XCB_PRESENT_COMPLETE_KIND_PIXMAP = 0, 62 XCB_PRESENT_COMPLETE_KIND_NOTIFY_MSC = 1 63} xcb_present_complete_kind_t; 64 65typedef enum xcb_present_complete_mode_t { 66 XCB_PRESENT_COMPLETE_MODE_COPY = 0, 67 XCB_PRESENT_COMPLETE_MODE_FLIP = 1, 68 XCB_PRESENT_COMPLETE_MODE_SKIP = 2, 69 XCB_PRESENT_COMPLETE_MODE_SUBOPTIMAL_COPY = 3 70} xcb_present_complete_mode_t; 71 72/** 73 * @brief xcb_present_notify_t 74 **/ 75typedef struct xcb_present_notify_t { 76 xcb_window_t window; 77 uint32_t serial; 78} xcb_present_notify_t; 79 80/** 81 * @brief xcb_present_notify_iterator_t 82 **/ 83typedef struct xcb_present_notify_iterator_t { 84 xcb_present_notify_t *data; 85 int rem; 86 int index; 87} xcb_present_notify_iterator_t; 88 89/** 90 * @brief xcb_present_query_version_cookie_t 91 **/ 92typedef struct xcb_present_query_version_cookie_t { 93 unsigned int sequence; 94} xcb_present_query_version_cookie_t; 95 96/** Opcode for xcb_present_query_version. */ 97#define XCB_PRESENT_QUERY_VERSION 0 98 99/** 100 * @brief xcb_present_query_version_request_t 101 **/ 102typedef struct xcb_present_query_version_request_t { 103 uint8_t major_opcode; 104 uint8_t minor_opcode; 105 uint16_t length; 106 uint32_t major_version; 107 uint32_t minor_version; 108} xcb_present_query_version_request_t; 109 110/** 111 * @brief xcb_present_query_version_reply_t 112 **/ 113typedef struct xcb_present_query_version_reply_t { 114 uint8_t response_type; 115 uint8_t pad0; 116 uint16_t sequence; 117 uint32_t length; 118 uint32_t major_version; 119 uint32_t minor_version; 120} xcb_present_query_version_reply_t; 121 122/** Opcode for xcb_present_pixmap. */ 123#define XCB_PRESENT_PIXMAP 1 124 125/** 126 * @brief xcb_present_pixmap_request_t 127 **/ 128typedef struct xcb_present_pixmap_request_t { 129 uint8_t major_opcode; 130 uint8_t minor_opcode; 131 uint16_t length; 132 xcb_window_t window; 133 xcb_pixmap_t pixmap; 134 uint32_t serial; 135 xcb_xfixes_region_t valid; 136 xcb_xfixes_region_t update; 137 int16_t x_off; 138 int16_t y_off; 139 xcb_randr_crtc_t target_crtc; 140 xcb_sync_fence_t wait_fence; 141 xcb_sync_fence_t idle_fence; 142 uint32_t options; 143 uint8_t pad0[4]; 144 uint64_t target_msc; 145 uint64_t divisor; 146 uint64_t remainder; 147} xcb_present_pixmap_request_t; 148 149/** Opcode for xcb_present_notify_msc. */ 150#define XCB_PRESENT_NOTIFY_MSC 2 151 152/** 153 * @brief xcb_present_notify_msc_request_t 154 **/ 155typedef struct xcb_present_notify_msc_request_t { 156 uint8_t major_opcode; 157 uint8_t minor_opcode; 158 uint16_t length; 159 xcb_window_t window; 160 uint32_t serial; 161 uint8_t pad0[4]; 162 uint64_t target_msc; 163 uint64_t divisor; 164 uint64_t remainder; 165} xcb_present_notify_msc_request_t; 166 167typedef uint32_t xcb_present_event_t; 168 169/** 170 * @brief xcb_present_event_iterator_t 171 **/ 172typedef struct xcb_present_event_iterator_t { 173 xcb_present_event_t *data; 174 int rem; 175 int index; 176} xcb_present_event_iterator_t; 177 178/** Opcode for xcb_present_select_input. */ 179#define XCB_PRESENT_SELECT_INPUT 3 180 181/** 182 * @brief xcb_present_select_input_request_t 183 **/ 184typedef struct xcb_present_select_input_request_t { 185 uint8_t major_opcode; 186 uint8_t minor_opcode; 187 uint16_t length; 188 xcb_present_event_t eid; 189 xcb_window_t window; 190 uint32_t event_mask; 191} xcb_present_select_input_request_t; 192 193/** 194 * @brief xcb_present_query_capabilities_cookie_t 195 **/ 196typedef struct xcb_present_query_capabilities_cookie_t { 197 unsigned int sequence; 198} xcb_present_query_capabilities_cookie_t; 199 200/** Opcode for xcb_present_query_capabilities. */ 201#define XCB_PRESENT_QUERY_CAPABILITIES 4 202 203/** 204 * @brief xcb_present_query_capabilities_request_t 205 **/ 206typedef struct xcb_present_query_capabilities_request_t { 207 uint8_t major_opcode; 208 uint8_t minor_opcode; 209 uint16_t length; 210 uint32_t target; 211} xcb_present_query_capabilities_request_t; 212 213/** 214 * @brief xcb_present_query_capabilities_reply_t 215 **/ 216typedef struct xcb_present_query_capabilities_reply_t { 217 uint8_t response_type; 218 uint8_t pad0; 219 uint16_t sequence; 220 uint32_t length; 221 uint32_t capabilities; 222} xcb_present_query_capabilities_reply_t; 223 224/** Opcode for xcb_present_generic. */ 225#define XCB_PRESENT_GENERIC 0 226 227/** 228 * @brief xcb_present_generic_event_t 229 **/ 230typedef struct xcb_present_generic_event_t { 231 uint8_t response_type; 232 uint8_t extension; 233 uint16_t sequence; 234 uint32_t length; 235 uint16_t evtype; 236 uint8_t pad0[2]; 237 xcb_present_event_t event; 238} xcb_present_generic_event_t; 239 240/** Opcode for xcb_present_configure_notify. */ 241#define XCB_PRESENT_CONFIGURE_NOTIFY 0 242 243/** 244 * @brief xcb_present_configure_notify_event_t 245 **/ 246typedef struct xcb_present_configure_notify_event_t { 247 uint8_t response_type; 248 uint8_t extension; 249 uint16_t sequence; 250 uint32_t length; 251 uint16_t event_type; 252 uint8_t pad0[2]; 253 xcb_present_event_t event; 254 xcb_window_t window; 255 int16_t x; 256 int16_t y; 257 uint16_t width; 258 uint16_t height; 259 int16_t off_x; 260 int16_t off_y; 261 uint32_t full_sequence; 262 uint16_t pixmap_width; 263 uint16_t pixmap_height; 264 uint32_t pixmap_flags; 265} xcb_present_configure_notify_event_t; 266 267/** Opcode for xcb_present_complete_notify. */ 268#define XCB_PRESENT_COMPLETE_NOTIFY 1 269 270/** 271 * @brief xcb_present_complete_notify_event_t 272 **/ 273typedef struct xcb_present_complete_notify_event_t { 274 uint8_t response_type; 275 uint8_t extension; 276 uint16_t sequence; 277 uint32_t length; 278 uint16_t event_type; 279 uint8_t kind; 280 uint8_t mode; 281 xcb_present_event_t event; 282 xcb_window_t window; 283 uint32_t serial; 284 uint64_t ust; 285 uint32_t full_sequence; 286 uint64_t msc; 287} XCB_PACKED xcb_present_complete_notify_event_t; 288 289/** Opcode for xcb_present_idle_notify. */ 290#define XCB_PRESENT_IDLE_NOTIFY 2 291 292/** 293 * @brief xcb_present_idle_notify_event_t 294 **/ 295typedef struct xcb_present_idle_notify_event_t { 296 uint8_t response_type; 297 uint8_t extension; 298 uint16_t sequence; 299 uint32_t length; 300 uint16_t event_type; 301 uint8_t pad0[2]; 302 xcb_present_event_t event; 303 xcb_window_t window; 304 uint32_t serial; 305 xcb_pixmap_t pixmap; 306 xcb_sync_fence_t idle_fence; 307 uint32_t full_sequence; 308} xcb_present_idle_notify_event_t; 309 310/** Opcode for xcb_present_redirect_notify. */ 311#define XCB_PRESENT_REDIRECT_NOTIFY 3 312 313/** 314 * @brief xcb_present_redirect_notify_event_t 315 **/ 316typedef struct xcb_present_redirect_notify_event_t { 317 uint8_t response_type; 318 uint8_t extension; 319 uint16_t sequence; 320 uint32_t length; 321 uint16_t event_type; 322 uint8_t update_window; 323 uint8_t pad0; 324 xcb_present_event_t event; 325 xcb_window_t event_window; 326 xcb_window_t window; 327 xcb_pixmap_t pixmap; 328 uint32_t serial; 329 uint32_t full_sequence; 330 xcb_xfixes_region_t valid_region; 331 xcb_xfixes_region_t update_region; 332 xcb_rectangle_t valid_rect; 333 xcb_rectangle_t update_rect; 334 int16_t x_off; 335 int16_t y_off; 336 xcb_randr_crtc_t target_crtc; 337 xcb_sync_fence_t wait_fence; 338 xcb_sync_fence_t idle_fence; 339 uint32_t options; 340 uint8_t pad1[4]; 341 uint64_t target_msc; 342 uint64_t divisor; 343 uint64_t remainder; 344} XCB_PACKED xcb_present_redirect_notify_event_t; 345 346/** 347 * Get the next element of the iterator 348 * @param i Pointer to a xcb_present_notify_iterator_t 349 * 350 * Get the next element in the iterator. The member rem is 351 * decreased by one. The member data points to the next 352 * element. The member index is increased by sizeof(xcb_present_notify_t) 353 */ 354void 355xcb_present_notify_next (xcb_present_notify_iterator_t *i); 356 357/** 358 * Return the iterator pointing to the last element 359 * @param i An xcb_present_notify_iterator_t 360 * @return The iterator pointing to the last element 361 * 362 * Set the current element in the iterator to the last element. 363 * The member rem is set to 0. The member data points to the 364 * last element. 365 */ 366xcb_generic_iterator_t 367xcb_present_notify_end (xcb_present_notify_iterator_t i); 368 369/** 370 * 371 * @param c The connection 372 * @return A cookie 373 * 374 * Delivers a request to the X server. 375 * 376 */ 377xcb_present_query_version_cookie_t 378xcb_present_query_version (xcb_connection_t *c, 379 uint32_t major_version, 380 uint32_t minor_version); 381 382/** 383 * 384 * @param c The connection 385 * @return A cookie 386 * 387 * Delivers a request to the X server. 388 * 389 * This form can be used only if the request will cause 390 * a reply to be generated. Any returned error will be 391 * placed in the event queue. 392 */ 393xcb_present_query_version_cookie_t 394xcb_present_query_version_unchecked (xcb_connection_t *c, 395 uint32_t major_version, 396 uint32_t minor_version); 397 398/** 399 * Return the reply 400 * @param c The connection 401 * @param cookie The cookie 402 * @param e The xcb_generic_error_t supplied 403 * 404 * Returns the reply of the request asked by 405 * 406 * The parameter @p e supplied to this function must be NULL if 407 * xcb_present_query_version_unchecked(). is used. 408 * Otherwise, it stores the error if any. 409 * 410 * The returned value must be freed by the caller using free(). 411 */ 412xcb_present_query_version_reply_t * 413xcb_present_query_version_reply (xcb_connection_t *c, 414 xcb_present_query_version_cookie_t cookie /**< */, 415 xcb_generic_error_t **e); 416 417int 418xcb_present_pixmap_sizeof (const void *_buffer, 419 uint32_t notifies_len); 420 421/** 422 * 423 * @param c The connection 424 * @return A cookie 425 * 426 * Delivers a request to the X server. 427 * 428 * This form can be used only if the request will not cause 429 * a reply to be generated. Any returned error will be 430 * saved for handling by xcb_request_check(). 431 */ 432xcb_void_cookie_t 433xcb_present_pixmap_checked (xcb_connection_t *c, 434 xcb_window_t window, 435 xcb_pixmap_t pixmap, 436 uint32_t serial, 437 xcb_xfixes_region_t valid, 438 xcb_xfixes_region_t update, 439 int16_t x_off, 440 int16_t y_off, 441 xcb_randr_crtc_t target_crtc, 442 xcb_sync_fence_t wait_fence, 443 xcb_sync_fence_t idle_fence, 444 uint32_t options, 445 uint64_t target_msc, 446 uint64_t divisor, 447 uint64_t remainder, 448 uint32_t notifies_len, 449 const xcb_present_notify_t *notifies); 450 451/** 452 * 453 * @param c The connection 454 * @return A cookie 455 * 456 * Delivers a request to the X server. 457 * 458 */ 459xcb_void_cookie_t 460xcb_present_pixmap (xcb_connection_t *c, 461 xcb_window_t window, 462 xcb_pixmap_t pixmap, 463 uint32_t serial, 464 xcb_xfixes_region_t valid, 465 xcb_xfixes_region_t update, 466 int16_t x_off, 467 int16_t y_off, 468 xcb_randr_crtc_t target_crtc, 469 xcb_sync_fence_t wait_fence, 470 xcb_sync_fence_t idle_fence, 471 uint32_t options, 472 uint64_t target_msc, 473 uint64_t divisor, 474 uint64_t remainder, 475 uint32_t notifies_len, 476 const xcb_present_notify_t *notifies); 477 478xcb_present_notify_t * 479xcb_present_pixmap_notifies (const xcb_present_pixmap_request_t *R); 480 481int 482xcb_present_pixmap_notifies_length (const xcb_present_pixmap_request_t *R); 483 484xcb_present_notify_iterator_t 485xcb_present_pixmap_notifies_iterator (const xcb_present_pixmap_request_t *R); 486 487/** 488 * 489 * @param c The connection 490 * @return A cookie 491 * 492 * Delivers a request to the X server. 493 * 494 * This form can be used only if the request will not cause 495 * a reply to be generated. Any returned error will be 496 * saved for handling by xcb_request_check(). 497 */ 498xcb_void_cookie_t 499xcb_present_notify_msc_checked (xcb_connection_t *c, 500 xcb_window_t window, 501 uint32_t serial, 502 uint64_t target_msc, 503 uint64_t divisor, 504 uint64_t remainder); 505 506/** 507 * 508 * @param c The connection 509 * @return A cookie 510 * 511 * Delivers a request to the X server. 512 * 513 */ 514xcb_void_cookie_t 515xcb_present_notify_msc (xcb_connection_t *c, 516 xcb_window_t window, 517 uint32_t serial, 518 uint64_t target_msc, 519 uint64_t divisor, 520 uint64_t remainder); 521 522/** 523 * Get the next element of the iterator 524 * @param i Pointer to a xcb_present_event_iterator_t 525 * 526 * Get the next element in the iterator. The member rem is 527 * decreased by one. The member data points to the next 528 * element. The member index is increased by sizeof(xcb_present_event_t) 529 */ 530void 531xcb_present_event_next (xcb_present_event_iterator_t *i); 532 533/** 534 * Return the iterator pointing to the last element 535 * @param i An xcb_present_event_iterator_t 536 * @return The iterator pointing to the last element 537 * 538 * Set the current element in the iterator to the last element. 539 * The member rem is set to 0. The member data points to the 540 * last element. 541 */ 542xcb_generic_iterator_t 543xcb_present_event_end (xcb_present_event_iterator_t i); 544 545/** 546 * 547 * @param c The connection 548 * @return A cookie 549 * 550 * Delivers a request to the X server. 551 * 552 * This form can be used only if the request will not cause 553 * a reply to be generated. Any returned error will be 554 * saved for handling by xcb_request_check(). 555 */ 556xcb_void_cookie_t 557xcb_present_select_input_checked (xcb_connection_t *c, 558 xcb_present_event_t eid, 559 xcb_window_t window, 560 uint32_t event_mask); 561 562/** 563 * 564 * @param c The connection 565 * @return A cookie 566 * 567 * Delivers a request to the X server. 568 * 569 */ 570xcb_void_cookie_t 571xcb_present_select_input (xcb_connection_t *c, 572 xcb_present_event_t eid, 573 xcb_window_t window, 574 uint32_t event_mask); 575 576/** 577 * 578 * @param c The connection 579 * @return A cookie 580 * 581 * Delivers a request to the X server. 582 * 583 */ 584xcb_present_query_capabilities_cookie_t 585xcb_present_query_capabilities (xcb_connection_t *c, 586 uint32_t target); 587 588/** 589 * 590 * @param c The connection 591 * @return A cookie 592 * 593 * Delivers a request to the X server. 594 * 595 * This form can be used only if the request will cause 596 * a reply to be generated. Any returned error will be 597 * placed in the event queue. 598 */ 599xcb_present_query_capabilities_cookie_t 600xcb_present_query_capabilities_unchecked (xcb_connection_t *c, 601 uint32_t target); 602 603/** 604 * Return the reply 605 * @param c The connection 606 * @param cookie The cookie 607 * @param e The xcb_generic_error_t supplied 608 * 609 * Returns the reply of the request asked by 610 * 611 * The parameter @p e supplied to this function must be NULL if 612 * xcb_present_query_capabilities_unchecked(). is used. 613 * Otherwise, it stores the error if any. 614 * 615 * The returned value must be freed by the caller using free(). 616 */ 617xcb_present_query_capabilities_reply_t * 618xcb_present_query_capabilities_reply (xcb_connection_t *c, 619 xcb_present_query_capabilities_cookie_t cookie /**< */, 620 xcb_generic_error_t **e); 621 622int 623xcb_present_redirect_notify_sizeof (const void *_buffer, 624 uint32_t notifies_len); 625 626xcb_present_notify_t * 627xcb_present_redirect_notify_notifies (const xcb_present_redirect_notify_event_t *R); 628 629int 630xcb_present_redirect_notify_notifies_length (const xcb_present_redirect_notify_event_t *R); 631 632xcb_present_notify_iterator_t 633xcb_present_redirect_notify_notifies_iterator (const xcb_present_redirect_notify_event_t *R); 634 635 636#ifdef __cplusplus 637} 638#endif 639 640#endif 641 642/** 643 * @} 644 */ 645