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