1 /* 2 * This file generated automatically from sync.xml by c_client.py. 3 * Edit at your peril. 4 */ 5 6 #ifdef HAVE_CONFIG_H 7 #include "config.h" 8 #endif 9 #include <stdlib.h> 10 #include <string.h> 11 #include <assert.h> 12 #include <stddef.h> /* for offsetof() */ 13 #include "xcbext.h" 14 #include "sync.h" 15 16 #define ALIGNOF(type) offsetof(struct { char dummy; type member; }, member) 17 #include "xproto.h" 18 19 xcb_extension_t xcb_sync_id = { "SYNC", 0 }; 20 21 22 /***************************************************************************** 23 ** 24 ** void xcb_sync_alarm_next 25 ** 26 ** @param xcb_sync_alarm_iterator_t *i 27 ** @returns void 28 ** 29 *****************************************************************************/ 30 31 void 32 xcb_sync_alarm_next (xcb_sync_alarm_iterator_t *i /**< */) 33 { 34 --i->rem; 35 ++i->data; 36 i->index += sizeof(xcb_sync_alarm_t); 37 } 38 39 40 /***************************************************************************** 41 ** 42 ** xcb_generic_iterator_t xcb_sync_alarm_end 43 ** 44 ** @param xcb_sync_alarm_iterator_t i 45 ** @returns xcb_generic_iterator_t 46 ** 47 *****************************************************************************/ 48 49 xcb_generic_iterator_t 50 xcb_sync_alarm_end (xcb_sync_alarm_iterator_t i /**< */) 51 { 52 xcb_generic_iterator_t ret; 53 ret.data = i.data + i.rem; 54 ret.index = i.index + ((char *) ret.data - (char *) i.data); 55 ret.rem = 0; 56 return ret; 57 } 58 59 60 /***************************************************************************** 61 ** 62 ** void xcb_sync_counter_next 63 ** 64 ** @param xcb_sync_counter_iterator_t *i 65 ** @returns void 66 ** 67 *****************************************************************************/ 68 69 void 70 xcb_sync_counter_next (xcb_sync_counter_iterator_t *i /**< */) 71 { 72 --i->rem; 73 ++i->data; 74 i->index += sizeof(xcb_sync_counter_t); 75 } 76 77 78 /***************************************************************************** 79 ** 80 ** xcb_generic_iterator_t xcb_sync_counter_end 81 ** 82 ** @param xcb_sync_counter_iterator_t i 83 ** @returns xcb_generic_iterator_t 84 ** 85 *****************************************************************************/ 86 87 xcb_generic_iterator_t 88 xcb_sync_counter_end (xcb_sync_counter_iterator_t i /**< */) 89 { 90 xcb_generic_iterator_t ret; 91 ret.data = i.data + i.rem; 92 ret.index = i.index + ((char *) ret.data - (char *) i.data); 93 ret.rem = 0; 94 return ret; 95 } 96 97 98 /***************************************************************************** 99 ** 100 ** void xcb_sync_fence_next 101 ** 102 ** @param xcb_sync_fence_iterator_t *i 103 ** @returns void 104 ** 105 *****************************************************************************/ 106 107 void 108 xcb_sync_fence_next (xcb_sync_fence_iterator_t *i /**< */) 109 { 110 --i->rem; 111 ++i->data; 112 i->index += sizeof(xcb_sync_fence_t); 113 } 114 115 116 /***************************************************************************** 117 ** 118 ** xcb_generic_iterator_t xcb_sync_fence_end 119 ** 120 ** @param xcb_sync_fence_iterator_t i 121 ** @returns xcb_generic_iterator_t 122 ** 123 *****************************************************************************/ 124 125 xcb_generic_iterator_t 126 xcb_sync_fence_end (xcb_sync_fence_iterator_t i /**< */) 127 { 128 xcb_generic_iterator_t ret; 129 ret.data = i.data + i.rem; 130 ret.index = i.index + ((char *) ret.data - (char *) i.data); 131 ret.rem = 0; 132 return ret; 133 } 134 135 136 /***************************************************************************** 137 ** 138 ** void xcb_sync_int64_next 139 ** 140 ** @param xcb_sync_int64_iterator_t *i 141 ** @returns void 142 ** 143 *****************************************************************************/ 144 145 void 146 xcb_sync_int64_next (xcb_sync_int64_iterator_t *i /**< */) 147 { 148 --i->rem; 149 ++i->data; 150 i->index += sizeof(xcb_sync_int64_t); 151 } 152 153 154 /***************************************************************************** 155 ** 156 ** xcb_generic_iterator_t xcb_sync_int64_end 157 ** 158 ** @param xcb_sync_int64_iterator_t i 159 ** @returns xcb_generic_iterator_t 160 ** 161 *****************************************************************************/ 162 163 xcb_generic_iterator_t 164 xcb_sync_int64_end (xcb_sync_int64_iterator_t i /**< */) 165 { 166 xcb_generic_iterator_t ret; 167 ret.data = i.data + i.rem; 168 ret.index = i.index + ((char *) ret.data - (char *) i.data); 169 ret.rem = 0; 170 return ret; 171 } 172 173 int 174 xcb_sync_systemcounter_sizeof (const void *_buffer /**< */) 175 { 176 char *xcb_tmp = (char *)_buffer; 177 const xcb_sync_systemcounter_t *_aux = (xcb_sync_systemcounter_t *)_buffer; 178 unsigned int xcb_buffer_len = 0; 179 unsigned int xcb_block_len = 0; 180 unsigned int xcb_pad = 0; 181 unsigned int xcb_align_to = 0; 182 183 184 xcb_block_len += sizeof(xcb_sync_systemcounter_t); 185 xcb_tmp += xcb_block_len; 186 xcb_buffer_len += xcb_block_len; 187 xcb_block_len = 0; 188 /* name */ 189 xcb_block_len += _aux->name_len * sizeof(char); 190 xcb_tmp += xcb_block_len; 191 xcb_align_to = ALIGNOF(char); 192 /* insert padding */ 193 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 194 xcb_buffer_len += xcb_block_len + xcb_pad; 195 if (0 != xcb_pad) { 196 xcb_tmp += xcb_pad; 197 xcb_pad = 0; 198 } 199 xcb_block_len = 0; 200 201 return xcb_buffer_len; 202 } 203 204 205 /***************************************************************************** 206 ** 207 ** char * xcb_sync_systemcounter_name 208 ** 209 ** @param const xcb_sync_systemcounter_t *R 210 ** @returns char * 211 ** 212 *****************************************************************************/ 213 214 char * 215 xcb_sync_systemcounter_name (const xcb_sync_systemcounter_t *R /**< */) 216 { 217 return (char *) (R + 1); 218 } 219 220 221 /***************************************************************************** 222 ** 223 ** int xcb_sync_systemcounter_name_length 224 ** 225 ** @param const xcb_sync_systemcounter_t *R 226 ** @returns int 227 ** 228 *****************************************************************************/ 229 230 int 231 xcb_sync_systemcounter_name_length (const xcb_sync_systemcounter_t *R /**< */) 232 { 233 return R->name_len; 234 } 235 236 237 /***************************************************************************** 238 ** 239 ** xcb_generic_iterator_t xcb_sync_systemcounter_name_end 240 ** 241 ** @param const xcb_sync_systemcounter_t *R 242 ** @returns xcb_generic_iterator_t 243 ** 244 *****************************************************************************/ 245 246 xcb_generic_iterator_t 247 xcb_sync_systemcounter_name_end (const xcb_sync_systemcounter_t *R /**< */) 248 { 249 xcb_generic_iterator_t i; 250 i.data = ((char *) (R + 1)) + (R->name_len); 251 i.rem = 0; 252 i.index = (char *) i.data - (char *) R; 253 return i; 254 } 255 256 257 /***************************************************************************** 258 ** 259 ** void xcb_sync_systemcounter_next 260 ** 261 ** @param xcb_sync_systemcounter_iterator_t *i 262 ** @returns void 263 ** 264 *****************************************************************************/ 265 266 void 267 xcb_sync_systemcounter_next (xcb_sync_systemcounter_iterator_t *i /**< */) 268 { 269 xcb_sync_systemcounter_t *R = i->data; 270 xcb_generic_iterator_t child; 271 child.data = (xcb_sync_systemcounter_t *)(((char *)R) + xcb_sync_systemcounter_sizeof(R)); 272 i->index = (char *) child.data - (char *) i->data; 273 --i->rem; 274 i->data = (xcb_sync_systemcounter_t *) child.data; 275 } 276 277 278 /***************************************************************************** 279 ** 280 ** xcb_generic_iterator_t xcb_sync_systemcounter_end 281 ** 282 ** @param xcb_sync_systemcounter_iterator_t i 283 ** @returns xcb_generic_iterator_t 284 ** 285 *****************************************************************************/ 286 287 xcb_generic_iterator_t 288 xcb_sync_systemcounter_end (xcb_sync_systemcounter_iterator_t i /**< */) 289 { 290 xcb_generic_iterator_t ret; 291 while(i.rem > 0) 292 xcb_sync_systemcounter_next(&i); 293 ret.data = i.data; 294 ret.rem = i.rem; 295 ret.index = i.index; 296 return ret; 297 } 298 299 300 /***************************************************************************** 301 ** 302 ** void xcb_sync_trigger_next 303 ** 304 ** @param xcb_sync_trigger_iterator_t *i 305 ** @returns void 306 ** 307 *****************************************************************************/ 308 309 void 310 xcb_sync_trigger_next (xcb_sync_trigger_iterator_t *i /**< */) 311 { 312 --i->rem; 313 ++i->data; 314 i->index += sizeof(xcb_sync_trigger_t); 315 } 316 317 318 /***************************************************************************** 319 ** 320 ** xcb_generic_iterator_t xcb_sync_trigger_end 321 ** 322 ** @param xcb_sync_trigger_iterator_t i 323 ** @returns xcb_generic_iterator_t 324 ** 325 *****************************************************************************/ 326 327 xcb_generic_iterator_t 328 xcb_sync_trigger_end (xcb_sync_trigger_iterator_t i /**< */) 329 { 330 xcb_generic_iterator_t ret; 331 ret.data = i.data + i.rem; 332 ret.index = i.index + ((char *) ret.data - (char *) i.data); 333 ret.rem = 0; 334 return ret; 335 } 336 337 338 /***************************************************************************** 339 ** 340 ** void xcb_sync_waitcondition_next 341 ** 342 ** @param xcb_sync_waitcondition_iterator_t *i 343 ** @returns void 344 ** 345 *****************************************************************************/ 346 347 void 348 xcb_sync_waitcondition_next (xcb_sync_waitcondition_iterator_t *i /**< */) 349 { 350 --i->rem; 351 ++i->data; 352 i->index += sizeof(xcb_sync_waitcondition_t); 353 } 354 355 356 /***************************************************************************** 357 ** 358 ** xcb_generic_iterator_t xcb_sync_waitcondition_end 359 ** 360 ** @param xcb_sync_waitcondition_iterator_t i 361 ** @returns xcb_generic_iterator_t 362 ** 363 *****************************************************************************/ 364 365 xcb_generic_iterator_t 366 xcb_sync_waitcondition_end (xcb_sync_waitcondition_iterator_t i /**< */) 367 { 368 xcb_generic_iterator_t ret; 369 ret.data = i.data + i.rem; 370 ret.index = i.index + ((char *) ret.data - (char *) i.data); 371 ret.rem = 0; 372 return ret; 373 } 374 375 376 /***************************************************************************** 377 ** 378 ** xcb_sync_initialize_cookie_t xcb_sync_initialize 379 ** 380 ** @param xcb_connection_t *c 381 ** @param uint8_t desired_major_version 382 ** @param uint8_t desired_minor_version 383 ** @returns xcb_sync_initialize_cookie_t 384 ** 385 *****************************************************************************/ 386 387 xcb_sync_initialize_cookie_t 388 xcb_sync_initialize (xcb_connection_t *c /**< */, 389 uint8_t desired_major_version /**< */, 390 uint8_t desired_minor_version /**< */) 391 { 392 static const xcb_protocol_request_t xcb_req = { 393 /* count */ 2, 394 /* ext */ &xcb_sync_id, 395 /* opcode */ XCB_SYNC_INITIALIZE, 396 /* isvoid */ 0 397 }; 398 399 struct iovec xcb_parts[4]; 400 xcb_sync_initialize_cookie_t xcb_ret; 401 xcb_sync_initialize_request_t xcb_out; 402 403 xcb_out.desired_major_version = desired_major_version; 404 xcb_out.desired_minor_version = desired_minor_version; 405 406 xcb_parts[2].iov_base = (char *) &xcb_out; 407 xcb_parts[2].iov_len = sizeof(xcb_out); 408 xcb_parts[3].iov_base = 0; 409 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 410 411 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 412 return xcb_ret; 413 } 414 415 416 /***************************************************************************** 417 ** 418 ** xcb_sync_initialize_cookie_t xcb_sync_initialize_unchecked 419 ** 420 ** @param xcb_connection_t *c 421 ** @param uint8_t desired_major_version 422 ** @param uint8_t desired_minor_version 423 ** @returns xcb_sync_initialize_cookie_t 424 ** 425 *****************************************************************************/ 426 427 xcb_sync_initialize_cookie_t 428 xcb_sync_initialize_unchecked (xcb_connection_t *c /**< */, 429 uint8_t desired_major_version /**< */, 430 uint8_t desired_minor_version /**< */) 431 { 432 static const xcb_protocol_request_t xcb_req = { 433 /* count */ 2, 434 /* ext */ &xcb_sync_id, 435 /* opcode */ XCB_SYNC_INITIALIZE, 436 /* isvoid */ 0 437 }; 438 439 struct iovec xcb_parts[4]; 440 xcb_sync_initialize_cookie_t xcb_ret; 441 xcb_sync_initialize_request_t xcb_out; 442 443 xcb_out.desired_major_version = desired_major_version; 444 xcb_out.desired_minor_version = desired_minor_version; 445 446 xcb_parts[2].iov_base = (char *) &xcb_out; 447 xcb_parts[2].iov_len = sizeof(xcb_out); 448 xcb_parts[3].iov_base = 0; 449 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 450 451 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 452 return xcb_ret; 453 } 454 455 456 /***************************************************************************** 457 ** 458 ** xcb_sync_initialize_reply_t * xcb_sync_initialize_reply 459 ** 460 ** @param xcb_connection_t *c 461 ** @param xcb_sync_initialize_cookie_t cookie 462 ** @param xcb_generic_error_t **e 463 ** @returns xcb_sync_initialize_reply_t * 464 ** 465 *****************************************************************************/ 466 467 xcb_sync_initialize_reply_t * 468 xcb_sync_initialize_reply (xcb_connection_t *c /**< */, 469 xcb_sync_initialize_cookie_t cookie /**< */, 470 xcb_generic_error_t **e /**< */) 471 { 472 return (xcb_sync_initialize_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 473 } 474 475 int 476 xcb_sync_list_system_counters_sizeof (const void *_buffer /**< */) 477 { 478 char *xcb_tmp = (char *)_buffer; 479 const xcb_sync_list_system_counters_reply_t *_aux = (xcb_sync_list_system_counters_reply_t *)_buffer; 480 unsigned int xcb_buffer_len = 0; 481 unsigned int xcb_block_len = 0; 482 unsigned int xcb_pad = 0; 483 unsigned int xcb_align_to = 0; 484 485 unsigned int i; 486 unsigned int xcb_tmp_len; 487 488 xcb_block_len += sizeof(xcb_sync_list_system_counters_reply_t); 489 xcb_tmp += xcb_block_len; 490 xcb_buffer_len += xcb_block_len; 491 xcb_block_len = 0; 492 /* counters */ 493 for(i=0; i<_aux->counters_len; i++) { 494 xcb_tmp_len = xcb_sync_systemcounter_sizeof(xcb_tmp); 495 xcb_block_len += xcb_tmp_len; 496 xcb_tmp += xcb_tmp_len; 497 } 498 xcb_align_to = ALIGNOF(xcb_sync_systemcounter_t); 499 /* insert padding */ 500 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 501 xcb_buffer_len += xcb_block_len + xcb_pad; 502 if (0 != xcb_pad) { 503 xcb_tmp += xcb_pad; 504 xcb_pad = 0; 505 } 506 xcb_block_len = 0; 507 508 return xcb_buffer_len; 509 } 510 511 512 /***************************************************************************** 513 ** 514 ** xcb_sync_list_system_counters_cookie_t xcb_sync_list_system_counters 515 ** 516 ** @param xcb_connection_t *c 517 ** @returns xcb_sync_list_system_counters_cookie_t 518 ** 519 *****************************************************************************/ 520 521 xcb_sync_list_system_counters_cookie_t 522 xcb_sync_list_system_counters (xcb_connection_t *c /**< */) 523 { 524 static const xcb_protocol_request_t xcb_req = { 525 /* count */ 2, 526 /* ext */ &xcb_sync_id, 527 /* opcode */ XCB_SYNC_LIST_SYSTEM_COUNTERS, 528 /* isvoid */ 0 529 }; 530 531 struct iovec xcb_parts[4]; 532 xcb_sync_list_system_counters_cookie_t xcb_ret; 533 xcb_sync_list_system_counters_request_t xcb_out; 534 535 536 xcb_parts[2].iov_base = (char *) &xcb_out; 537 xcb_parts[2].iov_len = sizeof(xcb_out); 538 xcb_parts[3].iov_base = 0; 539 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 540 541 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 542 return xcb_ret; 543 } 544 545 546 /***************************************************************************** 547 ** 548 ** xcb_sync_list_system_counters_cookie_t xcb_sync_list_system_counters_unchecked 549 ** 550 ** @param xcb_connection_t *c 551 ** @returns xcb_sync_list_system_counters_cookie_t 552 ** 553 *****************************************************************************/ 554 555 xcb_sync_list_system_counters_cookie_t 556 xcb_sync_list_system_counters_unchecked (xcb_connection_t *c /**< */) 557 { 558 static const xcb_protocol_request_t xcb_req = { 559 /* count */ 2, 560 /* ext */ &xcb_sync_id, 561 /* opcode */ XCB_SYNC_LIST_SYSTEM_COUNTERS, 562 /* isvoid */ 0 563 }; 564 565 struct iovec xcb_parts[4]; 566 xcb_sync_list_system_counters_cookie_t xcb_ret; 567 xcb_sync_list_system_counters_request_t xcb_out; 568 569 570 xcb_parts[2].iov_base = (char *) &xcb_out; 571 xcb_parts[2].iov_len = sizeof(xcb_out); 572 xcb_parts[3].iov_base = 0; 573 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 574 575 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 576 return xcb_ret; 577 } 578 579 580 /***************************************************************************** 581 ** 582 ** int xcb_sync_list_system_counters_counters_length 583 ** 584 ** @param const xcb_sync_list_system_counters_reply_t *R 585 ** @returns int 586 ** 587 *****************************************************************************/ 588 589 int 590 xcb_sync_list_system_counters_counters_length (const xcb_sync_list_system_counters_reply_t *R /**< */) 591 { 592 return R->counters_len; 593 } 594 595 596 /***************************************************************************** 597 ** 598 ** xcb_sync_systemcounter_iterator_t xcb_sync_list_system_counters_counters_iterator 599 ** 600 ** @param const xcb_sync_list_system_counters_reply_t *R 601 ** @returns xcb_sync_systemcounter_iterator_t 602 ** 603 *****************************************************************************/ 604 605 xcb_sync_systemcounter_iterator_t 606 xcb_sync_list_system_counters_counters_iterator (const xcb_sync_list_system_counters_reply_t *R /**< */) 607 { 608 xcb_sync_systemcounter_iterator_t i; 609 i.data = (xcb_sync_systemcounter_t *) (R + 1); 610 i.rem = R->counters_len; 611 i.index = (char *) i.data - (char *) R; 612 return i; 613 } 614 615 616 /***************************************************************************** 617 ** 618 ** xcb_sync_list_system_counters_reply_t * xcb_sync_list_system_counters_reply 619 ** 620 ** @param xcb_connection_t *c 621 ** @param xcb_sync_list_system_counters_cookie_t cookie 622 ** @param xcb_generic_error_t **e 623 ** @returns xcb_sync_list_system_counters_reply_t * 624 ** 625 *****************************************************************************/ 626 627 xcb_sync_list_system_counters_reply_t * 628 xcb_sync_list_system_counters_reply (xcb_connection_t *c /**< */, 629 xcb_sync_list_system_counters_cookie_t cookie /**< */, 630 xcb_generic_error_t **e /**< */) 631 { 632 return (xcb_sync_list_system_counters_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 633 } 634 635 636 /***************************************************************************** 637 ** 638 ** xcb_void_cookie_t xcb_sync_create_counter_checked 639 ** 640 ** @param xcb_connection_t *c 641 ** @param xcb_sync_counter_t id 642 ** @param xcb_sync_int64_t initial_value 643 ** @returns xcb_void_cookie_t 644 ** 645 *****************************************************************************/ 646 647 xcb_void_cookie_t 648 xcb_sync_create_counter_checked (xcb_connection_t *c /**< */, 649 xcb_sync_counter_t id /**< */, 650 xcb_sync_int64_t initial_value /**< */) 651 { 652 static const xcb_protocol_request_t xcb_req = { 653 /* count */ 2, 654 /* ext */ &xcb_sync_id, 655 /* opcode */ XCB_SYNC_CREATE_COUNTER, 656 /* isvoid */ 1 657 }; 658 659 struct iovec xcb_parts[4]; 660 xcb_void_cookie_t xcb_ret; 661 xcb_sync_create_counter_request_t xcb_out; 662 663 xcb_out.id = id; 664 xcb_out.initial_value = initial_value; 665 666 xcb_parts[2].iov_base = (char *) &xcb_out; 667 xcb_parts[2].iov_len = sizeof(xcb_out); 668 xcb_parts[3].iov_base = 0; 669 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 670 671 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 672 return xcb_ret; 673 } 674 675 676 /***************************************************************************** 677 ** 678 ** xcb_void_cookie_t xcb_sync_create_counter 679 ** 680 ** @param xcb_connection_t *c 681 ** @param xcb_sync_counter_t id 682 ** @param xcb_sync_int64_t initial_value 683 ** @returns xcb_void_cookie_t 684 ** 685 *****************************************************************************/ 686 687 xcb_void_cookie_t 688 xcb_sync_create_counter (xcb_connection_t *c /**< */, 689 xcb_sync_counter_t id /**< */, 690 xcb_sync_int64_t initial_value /**< */) 691 { 692 static const xcb_protocol_request_t xcb_req = { 693 /* count */ 2, 694 /* ext */ &xcb_sync_id, 695 /* opcode */ XCB_SYNC_CREATE_COUNTER, 696 /* isvoid */ 1 697 }; 698 699 struct iovec xcb_parts[4]; 700 xcb_void_cookie_t xcb_ret; 701 xcb_sync_create_counter_request_t xcb_out; 702 703 xcb_out.id = id; 704 xcb_out.initial_value = initial_value; 705 706 xcb_parts[2].iov_base = (char *) &xcb_out; 707 xcb_parts[2].iov_len = sizeof(xcb_out); 708 xcb_parts[3].iov_base = 0; 709 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 710 711 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 712 return xcb_ret; 713 } 714 715 716 /***************************************************************************** 717 ** 718 ** xcb_void_cookie_t xcb_sync_destroy_counter_checked 719 ** 720 ** @param xcb_connection_t *c 721 ** @param xcb_sync_counter_t counter 722 ** @returns xcb_void_cookie_t 723 ** 724 *****************************************************************************/ 725 726 xcb_void_cookie_t 727 xcb_sync_destroy_counter_checked (xcb_connection_t *c /**< */, 728 xcb_sync_counter_t counter /**< */) 729 { 730 static const xcb_protocol_request_t xcb_req = { 731 /* count */ 2, 732 /* ext */ &xcb_sync_id, 733 /* opcode */ XCB_SYNC_DESTROY_COUNTER, 734 /* isvoid */ 1 735 }; 736 737 struct iovec xcb_parts[4]; 738 xcb_void_cookie_t xcb_ret; 739 xcb_sync_destroy_counter_request_t xcb_out; 740 741 xcb_out.counter = counter; 742 743 xcb_parts[2].iov_base = (char *) &xcb_out; 744 xcb_parts[2].iov_len = sizeof(xcb_out); 745 xcb_parts[3].iov_base = 0; 746 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 747 748 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 749 return xcb_ret; 750 } 751 752 753 /***************************************************************************** 754 ** 755 ** xcb_void_cookie_t xcb_sync_destroy_counter 756 ** 757 ** @param xcb_connection_t *c 758 ** @param xcb_sync_counter_t counter 759 ** @returns xcb_void_cookie_t 760 ** 761 *****************************************************************************/ 762 763 xcb_void_cookie_t 764 xcb_sync_destroy_counter (xcb_connection_t *c /**< */, 765 xcb_sync_counter_t counter /**< */) 766 { 767 static const xcb_protocol_request_t xcb_req = { 768 /* count */ 2, 769 /* ext */ &xcb_sync_id, 770 /* opcode */ XCB_SYNC_DESTROY_COUNTER, 771 /* isvoid */ 1 772 }; 773 774 struct iovec xcb_parts[4]; 775 xcb_void_cookie_t xcb_ret; 776 xcb_sync_destroy_counter_request_t xcb_out; 777 778 xcb_out.counter = counter; 779 780 xcb_parts[2].iov_base = (char *) &xcb_out; 781 xcb_parts[2].iov_len = sizeof(xcb_out); 782 xcb_parts[3].iov_base = 0; 783 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 784 785 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 786 return xcb_ret; 787 } 788 789 790 /***************************************************************************** 791 ** 792 ** xcb_sync_query_counter_cookie_t xcb_sync_query_counter 793 ** 794 ** @param xcb_connection_t *c 795 ** @param xcb_sync_counter_t counter 796 ** @returns xcb_sync_query_counter_cookie_t 797 ** 798 *****************************************************************************/ 799 800 xcb_sync_query_counter_cookie_t 801 xcb_sync_query_counter (xcb_connection_t *c /**< */, 802 xcb_sync_counter_t counter /**< */) 803 { 804 static const xcb_protocol_request_t xcb_req = { 805 /* count */ 2, 806 /* ext */ &xcb_sync_id, 807 /* opcode */ XCB_SYNC_QUERY_COUNTER, 808 /* isvoid */ 0 809 }; 810 811 struct iovec xcb_parts[4]; 812 xcb_sync_query_counter_cookie_t xcb_ret; 813 xcb_sync_query_counter_request_t xcb_out; 814 815 xcb_out.counter = counter; 816 817 xcb_parts[2].iov_base = (char *) &xcb_out; 818 xcb_parts[2].iov_len = sizeof(xcb_out); 819 xcb_parts[3].iov_base = 0; 820 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 821 822 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 823 return xcb_ret; 824 } 825 826 827 /***************************************************************************** 828 ** 829 ** xcb_sync_query_counter_cookie_t xcb_sync_query_counter_unchecked 830 ** 831 ** @param xcb_connection_t *c 832 ** @param xcb_sync_counter_t counter 833 ** @returns xcb_sync_query_counter_cookie_t 834 ** 835 *****************************************************************************/ 836 837 xcb_sync_query_counter_cookie_t 838 xcb_sync_query_counter_unchecked (xcb_connection_t *c /**< */, 839 xcb_sync_counter_t counter /**< */) 840 { 841 static const xcb_protocol_request_t xcb_req = { 842 /* count */ 2, 843 /* ext */ &xcb_sync_id, 844 /* opcode */ XCB_SYNC_QUERY_COUNTER, 845 /* isvoid */ 0 846 }; 847 848 struct iovec xcb_parts[4]; 849 xcb_sync_query_counter_cookie_t xcb_ret; 850 xcb_sync_query_counter_request_t xcb_out; 851 852 xcb_out.counter = counter; 853 854 xcb_parts[2].iov_base = (char *) &xcb_out; 855 xcb_parts[2].iov_len = sizeof(xcb_out); 856 xcb_parts[3].iov_base = 0; 857 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 858 859 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 860 return xcb_ret; 861 } 862 863 864 /***************************************************************************** 865 ** 866 ** xcb_sync_query_counter_reply_t * xcb_sync_query_counter_reply 867 ** 868 ** @param xcb_connection_t *c 869 ** @param xcb_sync_query_counter_cookie_t cookie 870 ** @param xcb_generic_error_t **e 871 ** @returns xcb_sync_query_counter_reply_t * 872 ** 873 *****************************************************************************/ 874 875 xcb_sync_query_counter_reply_t * 876 xcb_sync_query_counter_reply (xcb_connection_t *c /**< */, 877 xcb_sync_query_counter_cookie_t cookie /**< */, 878 xcb_generic_error_t **e /**< */) 879 { 880 return (xcb_sync_query_counter_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 881 } 882 883 int 884 xcb_sync_await_sizeof (const void *_buffer /**< */, 885 uint32_t wait_list_len /**< */) 886 { 887 char *xcb_tmp = (char *)_buffer; 888 unsigned int xcb_buffer_len = 0; 889 unsigned int xcb_block_len = 0; 890 unsigned int xcb_pad = 0; 891 unsigned int xcb_align_to = 0; 892 893 894 xcb_block_len += sizeof(xcb_sync_await_request_t); 895 xcb_tmp += xcb_block_len; 896 xcb_buffer_len += xcb_block_len; 897 xcb_block_len = 0; 898 /* wait_list */ 899 xcb_block_len += wait_list_len * sizeof(xcb_sync_waitcondition_t); 900 xcb_tmp += xcb_block_len; 901 xcb_align_to = ALIGNOF(xcb_sync_waitcondition_t); 902 /* insert padding */ 903 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 904 xcb_buffer_len += xcb_block_len + xcb_pad; 905 if (0 != xcb_pad) { 906 xcb_tmp += xcb_pad; 907 xcb_pad = 0; 908 } 909 xcb_block_len = 0; 910 911 return xcb_buffer_len; 912 } 913 914 915 /***************************************************************************** 916 ** 917 ** xcb_void_cookie_t xcb_sync_await_checked 918 ** 919 ** @param xcb_connection_t *c 920 ** @param uint32_t wait_list_len 921 ** @param const xcb_sync_waitcondition_t *wait_list 922 ** @returns xcb_void_cookie_t 923 ** 924 *****************************************************************************/ 925 926 xcb_void_cookie_t 927 xcb_sync_await_checked (xcb_connection_t *c /**< */, 928 uint32_t wait_list_len /**< */, 929 const xcb_sync_waitcondition_t *wait_list /**< */) 930 { 931 static const xcb_protocol_request_t xcb_req = { 932 /* count */ 4, 933 /* ext */ &xcb_sync_id, 934 /* opcode */ XCB_SYNC_AWAIT, 935 /* isvoid */ 1 936 }; 937 938 struct iovec xcb_parts[6]; 939 xcb_void_cookie_t xcb_ret; 940 xcb_sync_await_request_t xcb_out; 941 942 943 xcb_parts[2].iov_base = (char *) &xcb_out; 944 xcb_parts[2].iov_len = sizeof(xcb_out); 945 xcb_parts[3].iov_base = 0; 946 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 947 /* xcb_sync_waitcondition_t wait_list */ 948 xcb_parts[4].iov_base = (char *) wait_list; 949 xcb_parts[4].iov_len = wait_list_len * sizeof(xcb_sync_waitcondition_t); 950 xcb_parts[5].iov_base = 0; 951 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 952 953 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 954 return xcb_ret; 955 } 956 957 958 /***************************************************************************** 959 ** 960 ** xcb_void_cookie_t xcb_sync_await 961 ** 962 ** @param xcb_connection_t *c 963 ** @param uint32_t wait_list_len 964 ** @param const xcb_sync_waitcondition_t *wait_list 965 ** @returns xcb_void_cookie_t 966 ** 967 *****************************************************************************/ 968 969 xcb_void_cookie_t 970 xcb_sync_await (xcb_connection_t *c /**< */, 971 uint32_t wait_list_len /**< */, 972 const xcb_sync_waitcondition_t *wait_list /**< */) 973 { 974 static const xcb_protocol_request_t xcb_req = { 975 /* count */ 4, 976 /* ext */ &xcb_sync_id, 977 /* opcode */ XCB_SYNC_AWAIT, 978 /* isvoid */ 1 979 }; 980 981 struct iovec xcb_parts[6]; 982 xcb_void_cookie_t xcb_ret; 983 xcb_sync_await_request_t xcb_out; 984 985 986 xcb_parts[2].iov_base = (char *) &xcb_out; 987 xcb_parts[2].iov_len = sizeof(xcb_out); 988 xcb_parts[3].iov_base = 0; 989 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 990 /* xcb_sync_waitcondition_t wait_list */ 991 xcb_parts[4].iov_base = (char *) wait_list; 992 xcb_parts[4].iov_len = wait_list_len * sizeof(xcb_sync_waitcondition_t); 993 xcb_parts[5].iov_base = 0; 994 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 995 996 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 997 return xcb_ret; 998 } 999 1000 1001 /***************************************************************************** 1002 ** 1003 ** xcb_void_cookie_t xcb_sync_change_counter_checked 1004 ** 1005 ** @param xcb_connection_t *c 1006 ** @param xcb_sync_counter_t counter 1007 ** @param xcb_sync_int64_t amount 1008 ** @returns xcb_void_cookie_t 1009 ** 1010 *****************************************************************************/ 1011 1012 xcb_void_cookie_t 1013 xcb_sync_change_counter_checked (xcb_connection_t *c /**< */, 1014 xcb_sync_counter_t counter /**< */, 1015 xcb_sync_int64_t amount /**< */) 1016 { 1017 static const xcb_protocol_request_t xcb_req = { 1018 /* count */ 2, 1019 /* ext */ &xcb_sync_id, 1020 /* opcode */ XCB_SYNC_CHANGE_COUNTER, 1021 /* isvoid */ 1 1022 }; 1023 1024 struct iovec xcb_parts[4]; 1025 xcb_void_cookie_t xcb_ret; 1026 xcb_sync_change_counter_request_t xcb_out; 1027 1028 xcb_out.counter = counter; 1029 xcb_out.amount = amount; 1030 1031 xcb_parts[2].iov_base = (char *) &xcb_out; 1032 xcb_parts[2].iov_len = sizeof(xcb_out); 1033 xcb_parts[3].iov_base = 0; 1034 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1035 1036 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 1037 return xcb_ret; 1038 } 1039 1040 1041 /***************************************************************************** 1042 ** 1043 ** xcb_void_cookie_t xcb_sync_change_counter 1044 ** 1045 ** @param xcb_connection_t *c 1046 ** @param xcb_sync_counter_t counter 1047 ** @param xcb_sync_int64_t amount 1048 ** @returns xcb_void_cookie_t 1049 ** 1050 *****************************************************************************/ 1051 1052 xcb_void_cookie_t 1053 xcb_sync_change_counter (xcb_connection_t *c /**< */, 1054 xcb_sync_counter_t counter /**< */, 1055 xcb_sync_int64_t amount /**< */) 1056 { 1057 static const xcb_protocol_request_t xcb_req = { 1058 /* count */ 2, 1059 /* ext */ &xcb_sync_id, 1060 /* opcode */ XCB_SYNC_CHANGE_COUNTER, 1061 /* isvoid */ 1 1062 }; 1063 1064 struct iovec xcb_parts[4]; 1065 xcb_void_cookie_t xcb_ret; 1066 xcb_sync_change_counter_request_t xcb_out; 1067 1068 xcb_out.counter = counter; 1069 xcb_out.amount = amount; 1070 1071 xcb_parts[2].iov_base = (char *) &xcb_out; 1072 xcb_parts[2].iov_len = sizeof(xcb_out); 1073 xcb_parts[3].iov_base = 0; 1074 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1075 1076 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 1077 return xcb_ret; 1078 } 1079 1080 1081 /***************************************************************************** 1082 ** 1083 ** xcb_void_cookie_t xcb_sync_set_counter_checked 1084 ** 1085 ** @param xcb_connection_t *c 1086 ** @param xcb_sync_counter_t counter 1087 ** @param xcb_sync_int64_t value 1088 ** @returns xcb_void_cookie_t 1089 ** 1090 *****************************************************************************/ 1091 1092 xcb_void_cookie_t 1093 xcb_sync_set_counter_checked (xcb_connection_t *c /**< */, 1094 xcb_sync_counter_t counter /**< */, 1095 xcb_sync_int64_t value /**< */) 1096 { 1097 static const xcb_protocol_request_t xcb_req = { 1098 /* count */ 2, 1099 /* ext */ &xcb_sync_id, 1100 /* opcode */ XCB_SYNC_SET_COUNTER, 1101 /* isvoid */ 1 1102 }; 1103 1104 struct iovec xcb_parts[4]; 1105 xcb_void_cookie_t xcb_ret; 1106 xcb_sync_set_counter_request_t xcb_out; 1107 1108 xcb_out.counter = counter; 1109 xcb_out.value = value; 1110 1111 xcb_parts[2].iov_base = (char *) &xcb_out; 1112 xcb_parts[2].iov_len = sizeof(xcb_out); 1113 xcb_parts[3].iov_base = 0; 1114 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1115 1116 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 1117 return xcb_ret; 1118 } 1119 1120 1121 /***************************************************************************** 1122 ** 1123 ** xcb_void_cookie_t xcb_sync_set_counter 1124 ** 1125 ** @param xcb_connection_t *c 1126 ** @param xcb_sync_counter_t counter 1127 ** @param xcb_sync_int64_t value 1128 ** @returns xcb_void_cookie_t 1129 ** 1130 *****************************************************************************/ 1131 1132 xcb_void_cookie_t 1133 xcb_sync_set_counter (xcb_connection_t *c /**< */, 1134 xcb_sync_counter_t counter /**< */, 1135 xcb_sync_int64_t value /**< */) 1136 { 1137 static const xcb_protocol_request_t xcb_req = { 1138 /* count */ 2, 1139 /* ext */ &xcb_sync_id, 1140 /* opcode */ XCB_SYNC_SET_COUNTER, 1141 /* isvoid */ 1 1142 }; 1143 1144 struct iovec xcb_parts[4]; 1145 xcb_void_cookie_t xcb_ret; 1146 xcb_sync_set_counter_request_t xcb_out; 1147 1148 xcb_out.counter = counter; 1149 xcb_out.value = value; 1150 1151 xcb_parts[2].iov_base = (char *) &xcb_out; 1152 xcb_parts[2].iov_len = sizeof(xcb_out); 1153 xcb_parts[3].iov_base = 0; 1154 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1155 1156 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 1157 return xcb_ret; 1158 } 1159 1160 int 1161 xcb_sync_create_alarm_value_list_serialize (void **_buffer /**< */, 1162 uint32_t value_mask /**< */, 1163 const xcb_sync_create_alarm_value_list_t *_aux /**< */) 1164 { 1165 char *xcb_out = *_buffer; 1166 unsigned int xcb_buffer_len = 0; 1167 unsigned int xcb_align_to = 0; 1168 1169 unsigned int xcb_pad = 0; 1170 char xcb_pad0[3] = {0, 0, 0}; 1171 struct iovec xcb_parts[7]; 1172 unsigned int xcb_parts_idx = 0; 1173 unsigned int xcb_block_len = 0; 1174 unsigned int i; 1175 char *xcb_tmp; 1176 1177 if(value_mask & XCB_SYNC_CA_COUNTER) { 1178 /* xcb_sync_create_alarm_value_list_t.counter */ 1179 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->counter; 1180 xcb_block_len += sizeof(xcb_sync_counter_t); 1181 xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_sync_counter_t); 1182 xcb_parts_idx++; 1183 xcb_align_to = ALIGNOF(xcb_sync_counter_t); 1184 } 1185 if(value_mask & XCB_SYNC_CA_VALUE_TYPE) { 1186 /* xcb_sync_create_alarm_value_list_t.valueType */ 1187 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->valueType; 1188 xcb_block_len += sizeof(uint32_t); 1189 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); 1190 xcb_parts_idx++; 1191 xcb_align_to = ALIGNOF(uint32_t); 1192 } 1193 if(value_mask & XCB_SYNC_CA_VALUE) { 1194 /* xcb_sync_create_alarm_value_list_t.value */ 1195 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->value; 1196 xcb_block_len += sizeof(xcb_sync_int64_t); 1197 xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_sync_int64_t); 1198 xcb_parts_idx++; 1199 xcb_align_to = ALIGNOF(xcb_sync_int64_t); 1200 } 1201 if(value_mask & XCB_SYNC_CA_TEST_TYPE) { 1202 /* xcb_sync_create_alarm_value_list_t.testType */ 1203 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->testType; 1204 xcb_block_len += sizeof(uint32_t); 1205 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); 1206 xcb_parts_idx++; 1207 xcb_align_to = ALIGNOF(uint32_t); 1208 } 1209 if(value_mask & XCB_SYNC_CA_DELTA) { 1210 /* xcb_sync_create_alarm_value_list_t.delta */ 1211 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->delta; 1212 xcb_block_len += sizeof(xcb_sync_int64_t); 1213 xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_sync_int64_t); 1214 xcb_parts_idx++; 1215 xcb_align_to = ALIGNOF(xcb_sync_int64_t); 1216 } 1217 if(value_mask & XCB_SYNC_CA_EVENTS) { 1218 /* xcb_sync_create_alarm_value_list_t.events */ 1219 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->events; 1220 xcb_block_len += sizeof(uint32_t); 1221 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); 1222 xcb_parts_idx++; 1223 xcb_align_to = ALIGNOF(uint32_t); 1224 } 1225 /* insert padding */ 1226 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 1227 xcb_buffer_len += xcb_block_len + xcb_pad; 1228 if (0 != xcb_pad) { 1229 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 1230 xcb_parts[xcb_parts_idx].iov_len = xcb_pad; 1231 xcb_parts_idx++; 1232 xcb_pad = 0; 1233 } 1234 xcb_block_len = 0; 1235 1236 if (NULL == xcb_out) { 1237 /* allocate memory */ 1238 xcb_out = malloc(xcb_buffer_len); 1239 *_buffer = xcb_out; 1240 } 1241 1242 xcb_tmp = xcb_out; 1243 for(i=0; i<xcb_parts_idx; i++) { 1244 if (0 != xcb_parts[i].iov_base && 0 != xcb_parts[i].iov_len) 1245 memcpy(xcb_tmp, xcb_parts[i].iov_base, xcb_parts[i].iov_len); 1246 if (0 != xcb_parts[i].iov_len) 1247 xcb_tmp += xcb_parts[i].iov_len; 1248 } 1249 1250 return xcb_buffer_len; 1251 } 1252 1253 int 1254 xcb_sync_create_alarm_value_list_unpack (const void *_buffer /**< */, 1255 uint32_t value_mask /**< */, 1256 xcb_sync_create_alarm_value_list_t *_aux /**< */) 1257 { 1258 char *xcb_tmp = (char *)_buffer; 1259 unsigned int xcb_buffer_len = 0; 1260 unsigned int xcb_block_len = 0; 1261 unsigned int xcb_pad = 0; 1262 unsigned int xcb_align_to = 0; 1263 1264 1265 if(value_mask & XCB_SYNC_CA_COUNTER) { 1266 /* xcb_sync_create_alarm_value_list_t.counter */ 1267 _aux->counter = *(xcb_sync_counter_t *)xcb_tmp; 1268 xcb_block_len += sizeof(xcb_sync_counter_t); 1269 xcb_tmp += sizeof(xcb_sync_counter_t); 1270 xcb_align_to = ALIGNOF(xcb_sync_counter_t); 1271 } 1272 if(value_mask & XCB_SYNC_CA_VALUE_TYPE) { 1273 /* xcb_sync_create_alarm_value_list_t.valueType */ 1274 _aux->valueType = *(uint32_t *)xcb_tmp; 1275 xcb_block_len += sizeof(uint32_t); 1276 xcb_tmp += sizeof(uint32_t); 1277 xcb_align_to = ALIGNOF(uint32_t); 1278 } 1279 if(value_mask & XCB_SYNC_CA_VALUE) { 1280 /* xcb_sync_create_alarm_value_list_t.value */ 1281 _aux->value = *(xcb_sync_int64_t *)xcb_tmp; 1282 xcb_block_len += sizeof(xcb_sync_int64_t); 1283 xcb_tmp += sizeof(xcb_sync_int64_t); 1284 xcb_align_to = ALIGNOF(xcb_sync_int64_t); 1285 } 1286 if(value_mask & XCB_SYNC_CA_TEST_TYPE) { 1287 /* xcb_sync_create_alarm_value_list_t.testType */ 1288 _aux->testType = *(uint32_t *)xcb_tmp; 1289 xcb_block_len += sizeof(uint32_t); 1290 xcb_tmp += sizeof(uint32_t); 1291 xcb_align_to = ALIGNOF(uint32_t); 1292 } 1293 if(value_mask & XCB_SYNC_CA_DELTA) { 1294 /* xcb_sync_create_alarm_value_list_t.delta */ 1295 _aux->delta = *(xcb_sync_int64_t *)xcb_tmp; 1296 xcb_block_len += sizeof(xcb_sync_int64_t); 1297 xcb_tmp += sizeof(xcb_sync_int64_t); 1298 xcb_align_to = ALIGNOF(xcb_sync_int64_t); 1299 } 1300 if(value_mask & XCB_SYNC_CA_EVENTS) { 1301 /* xcb_sync_create_alarm_value_list_t.events */ 1302 _aux->events = *(uint32_t *)xcb_tmp; 1303 xcb_block_len += sizeof(uint32_t); 1304 xcb_tmp += sizeof(uint32_t); 1305 xcb_align_to = ALIGNOF(uint32_t); 1306 } 1307 /* insert padding */ 1308 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 1309 xcb_buffer_len += xcb_block_len + xcb_pad; 1310 if (0 != xcb_pad) { 1311 xcb_tmp += xcb_pad; 1312 xcb_pad = 0; 1313 } 1314 xcb_block_len = 0; 1315 1316 return xcb_buffer_len; 1317 } 1318 1319 int 1320 xcb_sync_create_alarm_value_list_sizeof (const void *_buffer /**< */, 1321 uint32_t value_mask /**< */) 1322 { 1323 xcb_sync_create_alarm_value_list_t _aux; 1324 return xcb_sync_create_alarm_value_list_unpack(_buffer, value_mask, &_aux); 1325 } 1326 1327 1328 /***************************************************************************** 1329 ** 1330 ** xcb_void_cookie_t xcb_sync_create_alarm_checked 1331 ** 1332 ** @param xcb_connection_t *c 1333 ** @param xcb_sync_alarm_t id 1334 ** @param uint32_t value_mask 1335 ** @param const void *value_list 1336 ** @returns xcb_void_cookie_t 1337 ** 1338 *****************************************************************************/ 1339 1340 xcb_void_cookie_t 1341 xcb_sync_create_alarm_checked (xcb_connection_t *c /**< */, 1342 xcb_sync_alarm_t id /**< */, 1343 uint32_t value_mask /**< */, 1344 const void *value_list /**< */) 1345 { 1346 static const xcb_protocol_request_t xcb_req = { 1347 /* count */ 3, 1348 /* ext */ &xcb_sync_id, 1349 /* opcode */ XCB_SYNC_CREATE_ALARM, 1350 /* isvoid */ 1 1351 }; 1352 1353 struct iovec xcb_parts[5]; 1354 xcb_void_cookie_t xcb_ret; 1355 xcb_sync_create_alarm_request_t xcb_out; 1356 1357 xcb_out.id = id; 1358 xcb_out.value_mask = value_mask; 1359 1360 xcb_parts[2].iov_base = (char *) &xcb_out; 1361 xcb_parts[2].iov_len = sizeof(xcb_out); 1362 xcb_parts[3].iov_base = 0; 1363 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1364 /* xcb_sync_create_alarm_value_list_t value_list */ 1365 xcb_parts[4].iov_base = (char *) value_list; 1366 xcb_parts[4].iov_len = 1367 xcb_sync_create_alarm_value_list_sizeof (value_list, value_mask); 1368 1369 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 1370 return xcb_ret; 1371 } 1372 1373 1374 /***************************************************************************** 1375 ** 1376 ** xcb_void_cookie_t xcb_sync_create_alarm 1377 ** 1378 ** @param xcb_connection_t *c 1379 ** @param xcb_sync_alarm_t id 1380 ** @param uint32_t value_mask 1381 ** @param const void *value_list 1382 ** @returns xcb_void_cookie_t 1383 ** 1384 *****************************************************************************/ 1385 1386 xcb_void_cookie_t 1387 xcb_sync_create_alarm (xcb_connection_t *c /**< */, 1388 xcb_sync_alarm_t id /**< */, 1389 uint32_t value_mask /**< */, 1390 const void *value_list /**< */) 1391 { 1392 static const xcb_protocol_request_t xcb_req = { 1393 /* count */ 3, 1394 /* ext */ &xcb_sync_id, 1395 /* opcode */ XCB_SYNC_CREATE_ALARM, 1396 /* isvoid */ 1 1397 }; 1398 1399 struct iovec xcb_parts[5]; 1400 xcb_void_cookie_t xcb_ret; 1401 xcb_sync_create_alarm_request_t xcb_out; 1402 1403 xcb_out.id = id; 1404 xcb_out.value_mask = value_mask; 1405 1406 xcb_parts[2].iov_base = (char *) &xcb_out; 1407 xcb_parts[2].iov_len = sizeof(xcb_out); 1408 xcb_parts[3].iov_base = 0; 1409 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1410 /* xcb_sync_create_alarm_value_list_t value_list */ 1411 xcb_parts[4].iov_base = (char *) value_list; 1412 xcb_parts[4].iov_len = 1413 xcb_sync_create_alarm_value_list_sizeof (value_list, value_mask); 1414 1415 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 1416 return xcb_ret; 1417 } 1418 1419 1420 /***************************************************************************** 1421 ** 1422 ** xcb_void_cookie_t xcb_sync_create_alarm_aux_checked 1423 ** 1424 ** @param xcb_connection_t *c 1425 ** @param xcb_sync_alarm_t id 1426 ** @param uint32_t value_mask 1427 ** @param const xcb_sync_create_alarm_value_list_t *value_list 1428 ** @returns xcb_void_cookie_t 1429 ** 1430 *****************************************************************************/ 1431 1432 xcb_void_cookie_t 1433 xcb_sync_create_alarm_aux_checked (xcb_connection_t *c /**< */, 1434 xcb_sync_alarm_t id /**< */, 1435 uint32_t value_mask /**< */, 1436 const xcb_sync_create_alarm_value_list_t *value_list /**< */) 1437 { 1438 static const xcb_protocol_request_t xcb_req = { 1439 /* count */ 3, 1440 /* ext */ &xcb_sync_id, 1441 /* opcode */ XCB_SYNC_CREATE_ALARM, 1442 /* isvoid */ 1 1443 }; 1444 1445 struct iovec xcb_parts[5]; 1446 xcb_void_cookie_t xcb_ret; 1447 xcb_sync_create_alarm_request_t xcb_out; 1448 void *xcb_aux0 = 0; 1449 1450 xcb_out.id = id; 1451 xcb_out.value_mask = value_mask; 1452 1453 xcb_parts[2].iov_base = (char *) &xcb_out; 1454 xcb_parts[2].iov_len = sizeof(xcb_out); 1455 xcb_parts[3].iov_base = 0; 1456 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1457 /* xcb_sync_create_alarm_value_list_t value_list */ 1458 xcb_parts[4].iov_len = 1459 xcb_sync_create_alarm_value_list_serialize (&xcb_aux0, value_mask, value_list); 1460 xcb_parts[4].iov_base = xcb_aux0; 1461 1462 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 1463 free(xcb_aux0); 1464 return xcb_ret; 1465 } 1466 1467 1468 /***************************************************************************** 1469 ** 1470 ** xcb_void_cookie_t xcb_sync_create_alarm_aux 1471 ** 1472 ** @param xcb_connection_t *c 1473 ** @param xcb_sync_alarm_t id 1474 ** @param uint32_t value_mask 1475 ** @param const xcb_sync_create_alarm_value_list_t *value_list 1476 ** @returns xcb_void_cookie_t 1477 ** 1478 *****************************************************************************/ 1479 1480 xcb_void_cookie_t 1481 xcb_sync_create_alarm_aux (xcb_connection_t *c /**< */, 1482 xcb_sync_alarm_t id /**< */, 1483 uint32_t value_mask /**< */, 1484 const xcb_sync_create_alarm_value_list_t *value_list /**< */) 1485 { 1486 static const xcb_protocol_request_t xcb_req = { 1487 /* count */ 3, 1488 /* ext */ &xcb_sync_id, 1489 /* opcode */ XCB_SYNC_CREATE_ALARM, 1490 /* isvoid */ 1 1491 }; 1492 1493 struct iovec xcb_parts[5]; 1494 xcb_void_cookie_t xcb_ret; 1495 xcb_sync_create_alarm_request_t xcb_out; 1496 void *xcb_aux0 = 0; 1497 1498 xcb_out.id = id; 1499 xcb_out.value_mask = value_mask; 1500 1501 xcb_parts[2].iov_base = (char *) &xcb_out; 1502 xcb_parts[2].iov_len = sizeof(xcb_out); 1503 xcb_parts[3].iov_base = 0; 1504 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1505 /* xcb_sync_create_alarm_value_list_t value_list */ 1506 xcb_parts[4].iov_len = 1507 xcb_sync_create_alarm_value_list_serialize (&xcb_aux0, value_mask, value_list); 1508 xcb_parts[4].iov_base = xcb_aux0; 1509 1510 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 1511 free(xcb_aux0); 1512 return xcb_ret; 1513 } 1514 1515 int 1516 xcb_sync_change_alarm_value_list_serialize (void **_buffer /**< */, 1517 uint32_t value_mask /**< */, 1518 const xcb_sync_change_alarm_value_list_t *_aux /**< */) 1519 { 1520 char *xcb_out = *_buffer; 1521 unsigned int xcb_buffer_len = 0; 1522 unsigned int xcb_align_to = 0; 1523 1524 unsigned int xcb_pad = 0; 1525 char xcb_pad0[3] = {0, 0, 0}; 1526 struct iovec xcb_parts[7]; 1527 unsigned int xcb_parts_idx = 0; 1528 unsigned int xcb_block_len = 0; 1529 unsigned int i; 1530 char *xcb_tmp; 1531 1532 if(value_mask & XCB_SYNC_CA_COUNTER) { 1533 /* xcb_sync_change_alarm_value_list_t.counter */ 1534 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->counter; 1535 xcb_block_len += sizeof(xcb_sync_counter_t); 1536 xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_sync_counter_t); 1537 xcb_parts_idx++; 1538 xcb_align_to = ALIGNOF(xcb_sync_counter_t); 1539 } 1540 if(value_mask & XCB_SYNC_CA_VALUE_TYPE) { 1541 /* xcb_sync_change_alarm_value_list_t.valueType */ 1542 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->valueType; 1543 xcb_block_len += sizeof(uint32_t); 1544 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); 1545 xcb_parts_idx++; 1546 xcb_align_to = ALIGNOF(uint32_t); 1547 } 1548 if(value_mask & XCB_SYNC_CA_VALUE) { 1549 /* xcb_sync_change_alarm_value_list_t.value */ 1550 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->value; 1551 xcb_block_len += sizeof(xcb_sync_int64_t); 1552 xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_sync_int64_t); 1553 xcb_parts_idx++; 1554 xcb_align_to = ALIGNOF(xcb_sync_int64_t); 1555 } 1556 if(value_mask & XCB_SYNC_CA_TEST_TYPE) { 1557 /* xcb_sync_change_alarm_value_list_t.testType */ 1558 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->testType; 1559 xcb_block_len += sizeof(uint32_t); 1560 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); 1561 xcb_parts_idx++; 1562 xcb_align_to = ALIGNOF(uint32_t); 1563 } 1564 if(value_mask & XCB_SYNC_CA_DELTA) { 1565 /* xcb_sync_change_alarm_value_list_t.delta */ 1566 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->delta; 1567 xcb_block_len += sizeof(xcb_sync_int64_t); 1568 xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_sync_int64_t); 1569 xcb_parts_idx++; 1570 xcb_align_to = ALIGNOF(xcb_sync_int64_t); 1571 } 1572 if(value_mask & XCB_SYNC_CA_EVENTS) { 1573 /* xcb_sync_change_alarm_value_list_t.events */ 1574 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->events; 1575 xcb_block_len += sizeof(uint32_t); 1576 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); 1577 xcb_parts_idx++; 1578 xcb_align_to = ALIGNOF(uint32_t); 1579 } 1580 /* insert padding */ 1581 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 1582 xcb_buffer_len += xcb_block_len + xcb_pad; 1583 if (0 != xcb_pad) { 1584 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 1585 xcb_parts[xcb_parts_idx].iov_len = xcb_pad; 1586 xcb_parts_idx++; 1587 xcb_pad = 0; 1588 } 1589 xcb_block_len = 0; 1590 1591 if (NULL == xcb_out) { 1592 /* allocate memory */ 1593 xcb_out = malloc(xcb_buffer_len); 1594 *_buffer = xcb_out; 1595 } 1596 1597 xcb_tmp = xcb_out; 1598 for(i=0; i<xcb_parts_idx; i++) { 1599 if (0 != xcb_parts[i].iov_base && 0 != xcb_parts[i].iov_len) 1600 memcpy(xcb_tmp, xcb_parts[i].iov_base, xcb_parts[i].iov_len); 1601 if (0 != xcb_parts[i].iov_len) 1602 xcb_tmp += xcb_parts[i].iov_len; 1603 } 1604 1605 return xcb_buffer_len; 1606 } 1607 1608 int 1609 xcb_sync_change_alarm_value_list_unpack (const void *_buffer /**< */, 1610 uint32_t value_mask /**< */, 1611 xcb_sync_change_alarm_value_list_t *_aux /**< */) 1612 { 1613 char *xcb_tmp = (char *)_buffer; 1614 unsigned int xcb_buffer_len = 0; 1615 unsigned int xcb_block_len = 0; 1616 unsigned int xcb_pad = 0; 1617 unsigned int xcb_align_to = 0; 1618 1619 1620 if(value_mask & XCB_SYNC_CA_COUNTER) { 1621 /* xcb_sync_change_alarm_value_list_t.counter */ 1622 _aux->counter = *(xcb_sync_counter_t *)xcb_tmp; 1623 xcb_block_len += sizeof(xcb_sync_counter_t); 1624 xcb_tmp += sizeof(xcb_sync_counter_t); 1625 xcb_align_to = ALIGNOF(xcb_sync_counter_t); 1626 } 1627 if(value_mask & XCB_SYNC_CA_VALUE_TYPE) { 1628 /* xcb_sync_change_alarm_value_list_t.valueType */ 1629 _aux->valueType = *(uint32_t *)xcb_tmp; 1630 xcb_block_len += sizeof(uint32_t); 1631 xcb_tmp += sizeof(uint32_t); 1632 xcb_align_to = ALIGNOF(uint32_t); 1633 } 1634 if(value_mask & XCB_SYNC_CA_VALUE) { 1635 /* xcb_sync_change_alarm_value_list_t.value */ 1636 _aux->value = *(xcb_sync_int64_t *)xcb_tmp; 1637 xcb_block_len += sizeof(xcb_sync_int64_t); 1638 xcb_tmp += sizeof(xcb_sync_int64_t); 1639 xcb_align_to = ALIGNOF(xcb_sync_int64_t); 1640 } 1641 if(value_mask & XCB_SYNC_CA_TEST_TYPE) { 1642 /* xcb_sync_change_alarm_value_list_t.testType */ 1643 _aux->testType = *(uint32_t *)xcb_tmp; 1644 xcb_block_len += sizeof(uint32_t); 1645 xcb_tmp += sizeof(uint32_t); 1646 xcb_align_to = ALIGNOF(uint32_t); 1647 } 1648 if(value_mask & XCB_SYNC_CA_DELTA) { 1649 /* xcb_sync_change_alarm_value_list_t.delta */ 1650 _aux->delta = *(xcb_sync_int64_t *)xcb_tmp; 1651 xcb_block_len += sizeof(xcb_sync_int64_t); 1652 xcb_tmp += sizeof(xcb_sync_int64_t); 1653 xcb_align_to = ALIGNOF(xcb_sync_int64_t); 1654 } 1655 if(value_mask & XCB_SYNC_CA_EVENTS) { 1656 /* xcb_sync_change_alarm_value_list_t.events */ 1657 _aux->events = *(uint32_t *)xcb_tmp; 1658 xcb_block_len += sizeof(uint32_t); 1659 xcb_tmp += sizeof(uint32_t); 1660 xcb_align_to = ALIGNOF(uint32_t); 1661 } 1662 /* insert padding */ 1663 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 1664 xcb_buffer_len += xcb_block_len + xcb_pad; 1665 if (0 != xcb_pad) { 1666 xcb_tmp += xcb_pad; 1667 xcb_pad = 0; 1668 } 1669 xcb_block_len = 0; 1670 1671 return xcb_buffer_len; 1672 } 1673 1674 int 1675 xcb_sync_change_alarm_value_list_sizeof (const void *_buffer /**< */, 1676 uint32_t value_mask /**< */) 1677 { 1678 xcb_sync_change_alarm_value_list_t _aux; 1679 return xcb_sync_change_alarm_value_list_unpack(_buffer, value_mask, &_aux); 1680 } 1681 1682 1683 /***************************************************************************** 1684 ** 1685 ** xcb_void_cookie_t xcb_sync_change_alarm_checked 1686 ** 1687 ** @param xcb_connection_t *c 1688 ** @param xcb_sync_alarm_t id 1689 ** @param uint32_t value_mask 1690 ** @param const void *value_list 1691 ** @returns xcb_void_cookie_t 1692 ** 1693 *****************************************************************************/ 1694 1695 xcb_void_cookie_t 1696 xcb_sync_change_alarm_checked (xcb_connection_t *c /**< */, 1697 xcb_sync_alarm_t id /**< */, 1698 uint32_t value_mask /**< */, 1699 const void *value_list /**< */) 1700 { 1701 static const xcb_protocol_request_t xcb_req = { 1702 /* count */ 3, 1703 /* ext */ &xcb_sync_id, 1704 /* opcode */ XCB_SYNC_CHANGE_ALARM, 1705 /* isvoid */ 1 1706 }; 1707 1708 struct iovec xcb_parts[5]; 1709 xcb_void_cookie_t xcb_ret; 1710 xcb_sync_change_alarm_request_t xcb_out; 1711 1712 xcb_out.id = id; 1713 xcb_out.value_mask = value_mask; 1714 1715 xcb_parts[2].iov_base = (char *) &xcb_out; 1716 xcb_parts[2].iov_len = sizeof(xcb_out); 1717 xcb_parts[3].iov_base = 0; 1718 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1719 /* xcb_sync_change_alarm_value_list_t value_list */ 1720 xcb_parts[4].iov_base = (char *) value_list; 1721 xcb_parts[4].iov_len = 1722 xcb_sync_change_alarm_value_list_sizeof (value_list, value_mask); 1723 1724 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 1725 return xcb_ret; 1726 } 1727 1728 1729 /***************************************************************************** 1730 ** 1731 ** xcb_void_cookie_t xcb_sync_change_alarm 1732 ** 1733 ** @param xcb_connection_t *c 1734 ** @param xcb_sync_alarm_t id 1735 ** @param uint32_t value_mask 1736 ** @param const void *value_list 1737 ** @returns xcb_void_cookie_t 1738 ** 1739 *****************************************************************************/ 1740 1741 xcb_void_cookie_t 1742 xcb_sync_change_alarm (xcb_connection_t *c /**< */, 1743 xcb_sync_alarm_t id /**< */, 1744 uint32_t value_mask /**< */, 1745 const void *value_list /**< */) 1746 { 1747 static const xcb_protocol_request_t xcb_req = { 1748 /* count */ 3, 1749 /* ext */ &xcb_sync_id, 1750 /* opcode */ XCB_SYNC_CHANGE_ALARM, 1751 /* isvoid */ 1 1752 }; 1753 1754 struct iovec xcb_parts[5]; 1755 xcb_void_cookie_t xcb_ret; 1756 xcb_sync_change_alarm_request_t xcb_out; 1757 1758 xcb_out.id = id; 1759 xcb_out.value_mask = value_mask; 1760 1761 xcb_parts[2].iov_base = (char *) &xcb_out; 1762 xcb_parts[2].iov_len = sizeof(xcb_out); 1763 xcb_parts[3].iov_base = 0; 1764 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1765 /* xcb_sync_change_alarm_value_list_t value_list */ 1766 xcb_parts[4].iov_base = (char *) value_list; 1767 xcb_parts[4].iov_len = 1768 xcb_sync_change_alarm_value_list_sizeof (value_list, value_mask); 1769 1770 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 1771 return xcb_ret; 1772 } 1773 1774 1775 /***************************************************************************** 1776 ** 1777 ** xcb_void_cookie_t xcb_sync_change_alarm_aux_checked 1778 ** 1779 ** @param xcb_connection_t *c 1780 ** @param xcb_sync_alarm_t id 1781 ** @param uint32_t value_mask 1782 ** @param const xcb_sync_change_alarm_value_list_t *value_list 1783 ** @returns xcb_void_cookie_t 1784 ** 1785 *****************************************************************************/ 1786 1787 xcb_void_cookie_t 1788 xcb_sync_change_alarm_aux_checked (xcb_connection_t *c /**< */, 1789 xcb_sync_alarm_t id /**< */, 1790 uint32_t value_mask /**< */, 1791 const xcb_sync_change_alarm_value_list_t *value_list /**< */) 1792 { 1793 static const xcb_protocol_request_t xcb_req = { 1794 /* count */ 3, 1795 /* ext */ &xcb_sync_id, 1796 /* opcode */ XCB_SYNC_CHANGE_ALARM, 1797 /* isvoid */ 1 1798 }; 1799 1800 struct iovec xcb_parts[5]; 1801 xcb_void_cookie_t xcb_ret; 1802 xcb_sync_change_alarm_request_t xcb_out; 1803 void *xcb_aux0 = 0; 1804 1805 xcb_out.id = id; 1806 xcb_out.value_mask = value_mask; 1807 1808 xcb_parts[2].iov_base = (char *) &xcb_out; 1809 xcb_parts[2].iov_len = sizeof(xcb_out); 1810 xcb_parts[3].iov_base = 0; 1811 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1812 /* xcb_sync_change_alarm_value_list_t value_list */ 1813 xcb_parts[4].iov_len = 1814 xcb_sync_change_alarm_value_list_serialize (&xcb_aux0, value_mask, value_list); 1815 xcb_parts[4].iov_base = xcb_aux0; 1816 1817 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 1818 free(xcb_aux0); 1819 return xcb_ret; 1820 } 1821 1822 1823 /***************************************************************************** 1824 ** 1825 ** xcb_void_cookie_t xcb_sync_change_alarm_aux 1826 ** 1827 ** @param xcb_connection_t *c 1828 ** @param xcb_sync_alarm_t id 1829 ** @param uint32_t value_mask 1830 ** @param const xcb_sync_change_alarm_value_list_t *value_list 1831 ** @returns xcb_void_cookie_t 1832 ** 1833 *****************************************************************************/ 1834 1835 xcb_void_cookie_t 1836 xcb_sync_change_alarm_aux (xcb_connection_t *c /**< */, 1837 xcb_sync_alarm_t id /**< */, 1838 uint32_t value_mask /**< */, 1839 const xcb_sync_change_alarm_value_list_t *value_list /**< */) 1840 { 1841 static const xcb_protocol_request_t xcb_req = { 1842 /* count */ 3, 1843 /* ext */ &xcb_sync_id, 1844 /* opcode */ XCB_SYNC_CHANGE_ALARM, 1845 /* isvoid */ 1 1846 }; 1847 1848 struct iovec xcb_parts[5]; 1849 xcb_void_cookie_t xcb_ret; 1850 xcb_sync_change_alarm_request_t xcb_out; 1851 void *xcb_aux0 = 0; 1852 1853 xcb_out.id = id; 1854 xcb_out.value_mask = value_mask; 1855 1856 xcb_parts[2].iov_base = (char *) &xcb_out; 1857 xcb_parts[2].iov_len = sizeof(xcb_out); 1858 xcb_parts[3].iov_base = 0; 1859 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1860 /* xcb_sync_change_alarm_value_list_t value_list */ 1861 xcb_parts[4].iov_len = 1862 xcb_sync_change_alarm_value_list_serialize (&xcb_aux0, value_mask, value_list); 1863 xcb_parts[4].iov_base = xcb_aux0; 1864 1865 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 1866 free(xcb_aux0); 1867 return xcb_ret; 1868 } 1869 1870 1871 /***************************************************************************** 1872 ** 1873 ** xcb_void_cookie_t xcb_sync_destroy_alarm_checked 1874 ** 1875 ** @param xcb_connection_t *c 1876 ** @param xcb_sync_alarm_t alarm 1877 ** @returns xcb_void_cookie_t 1878 ** 1879 *****************************************************************************/ 1880 1881 xcb_void_cookie_t 1882 xcb_sync_destroy_alarm_checked (xcb_connection_t *c /**< */, 1883 xcb_sync_alarm_t alarm /**< */) 1884 { 1885 static const xcb_protocol_request_t xcb_req = { 1886 /* count */ 2, 1887 /* ext */ &xcb_sync_id, 1888 /* opcode */ XCB_SYNC_DESTROY_ALARM, 1889 /* isvoid */ 1 1890 }; 1891 1892 struct iovec xcb_parts[4]; 1893 xcb_void_cookie_t xcb_ret; 1894 xcb_sync_destroy_alarm_request_t xcb_out; 1895 1896 xcb_out.alarm = alarm; 1897 1898 xcb_parts[2].iov_base = (char *) &xcb_out; 1899 xcb_parts[2].iov_len = sizeof(xcb_out); 1900 xcb_parts[3].iov_base = 0; 1901 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1902 1903 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 1904 return xcb_ret; 1905 } 1906 1907 1908 /***************************************************************************** 1909 ** 1910 ** xcb_void_cookie_t xcb_sync_destroy_alarm 1911 ** 1912 ** @param xcb_connection_t *c 1913 ** @param xcb_sync_alarm_t alarm 1914 ** @returns xcb_void_cookie_t 1915 ** 1916 *****************************************************************************/ 1917 1918 xcb_void_cookie_t 1919 xcb_sync_destroy_alarm (xcb_connection_t *c /**< */, 1920 xcb_sync_alarm_t alarm /**< */) 1921 { 1922 static const xcb_protocol_request_t xcb_req = { 1923 /* count */ 2, 1924 /* ext */ &xcb_sync_id, 1925 /* opcode */ XCB_SYNC_DESTROY_ALARM, 1926 /* isvoid */ 1 1927 }; 1928 1929 struct iovec xcb_parts[4]; 1930 xcb_void_cookie_t xcb_ret; 1931 xcb_sync_destroy_alarm_request_t xcb_out; 1932 1933 xcb_out.alarm = alarm; 1934 1935 xcb_parts[2].iov_base = (char *) &xcb_out; 1936 xcb_parts[2].iov_len = sizeof(xcb_out); 1937 xcb_parts[3].iov_base = 0; 1938 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1939 1940 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 1941 return xcb_ret; 1942 } 1943 1944 1945 /***************************************************************************** 1946 ** 1947 ** xcb_sync_query_alarm_cookie_t xcb_sync_query_alarm 1948 ** 1949 ** @param xcb_connection_t *c 1950 ** @param xcb_sync_alarm_t alarm 1951 ** @returns xcb_sync_query_alarm_cookie_t 1952 ** 1953 *****************************************************************************/ 1954 1955 xcb_sync_query_alarm_cookie_t 1956 xcb_sync_query_alarm (xcb_connection_t *c /**< */, 1957 xcb_sync_alarm_t alarm /**< */) 1958 { 1959 static const xcb_protocol_request_t xcb_req = { 1960 /* count */ 2, 1961 /* ext */ &xcb_sync_id, 1962 /* opcode */ XCB_SYNC_QUERY_ALARM, 1963 /* isvoid */ 0 1964 }; 1965 1966 struct iovec xcb_parts[4]; 1967 xcb_sync_query_alarm_cookie_t xcb_ret; 1968 xcb_sync_query_alarm_request_t xcb_out; 1969 1970 xcb_out.alarm = alarm; 1971 1972 xcb_parts[2].iov_base = (char *) &xcb_out; 1973 xcb_parts[2].iov_len = sizeof(xcb_out); 1974 xcb_parts[3].iov_base = 0; 1975 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1976 1977 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 1978 return xcb_ret; 1979 } 1980 1981 1982 /***************************************************************************** 1983 ** 1984 ** xcb_sync_query_alarm_cookie_t xcb_sync_query_alarm_unchecked 1985 ** 1986 ** @param xcb_connection_t *c 1987 ** @param xcb_sync_alarm_t alarm 1988 ** @returns xcb_sync_query_alarm_cookie_t 1989 ** 1990 *****************************************************************************/ 1991 1992 xcb_sync_query_alarm_cookie_t 1993 xcb_sync_query_alarm_unchecked (xcb_connection_t *c /**< */, 1994 xcb_sync_alarm_t alarm /**< */) 1995 { 1996 static const xcb_protocol_request_t xcb_req = { 1997 /* count */ 2, 1998 /* ext */ &xcb_sync_id, 1999 /* opcode */ XCB_SYNC_QUERY_ALARM, 2000 /* isvoid */ 0 2001 }; 2002 2003 struct iovec xcb_parts[4]; 2004 xcb_sync_query_alarm_cookie_t xcb_ret; 2005 xcb_sync_query_alarm_request_t xcb_out; 2006 2007 xcb_out.alarm = alarm; 2008 2009 xcb_parts[2].iov_base = (char *) &xcb_out; 2010 xcb_parts[2].iov_len = sizeof(xcb_out); 2011 xcb_parts[3].iov_base = 0; 2012 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2013 2014 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 2015 return xcb_ret; 2016 } 2017 2018 2019 /***************************************************************************** 2020 ** 2021 ** xcb_sync_query_alarm_reply_t * xcb_sync_query_alarm_reply 2022 ** 2023 ** @param xcb_connection_t *c 2024 ** @param xcb_sync_query_alarm_cookie_t cookie 2025 ** @param xcb_generic_error_t **e 2026 ** @returns xcb_sync_query_alarm_reply_t * 2027 ** 2028 *****************************************************************************/ 2029 2030 xcb_sync_query_alarm_reply_t * 2031 xcb_sync_query_alarm_reply (xcb_connection_t *c /**< */, 2032 xcb_sync_query_alarm_cookie_t cookie /**< */, 2033 xcb_generic_error_t **e /**< */) 2034 { 2035 return (xcb_sync_query_alarm_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 2036 } 2037 2038 2039 /***************************************************************************** 2040 ** 2041 ** xcb_void_cookie_t xcb_sync_set_priority_checked 2042 ** 2043 ** @param xcb_connection_t *c 2044 ** @param uint32_t id 2045 ** @param int32_t priority 2046 ** @returns xcb_void_cookie_t 2047 ** 2048 *****************************************************************************/ 2049 2050 xcb_void_cookie_t 2051 xcb_sync_set_priority_checked (xcb_connection_t *c /**< */, 2052 uint32_t id /**< */, 2053 int32_t priority /**< */) 2054 { 2055 static const xcb_protocol_request_t xcb_req = { 2056 /* count */ 2, 2057 /* ext */ &xcb_sync_id, 2058 /* opcode */ XCB_SYNC_SET_PRIORITY, 2059 /* isvoid */ 1 2060 }; 2061 2062 struct iovec xcb_parts[4]; 2063 xcb_void_cookie_t xcb_ret; 2064 xcb_sync_set_priority_request_t xcb_out; 2065 2066 xcb_out.id = id; 2067 xcb_out.priority = priority; 2068 2069 xcb_parts[2].iov_base = (char *) &xcb_out; 2070 xcb_parts[2].iov_len = sizeof(xcb_out); 2071 xcb_parts[3].iov_base = 0; 2072 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2073 2074 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 2075 return xcb_ret; 2076 } 2077 2078 2079 /***************************************************************************** 2080 ** 2081 ** xcb_void_cookie_t xcb_sync_set_priority 2082 ** 2083 ** @param xcb_connection_t *c 2084 ** @param uint32_t id 2085 ** @param int32_t priority 2086 ** @returns xcb_void_cookie_t 2087 ** 2088 *****************************************************************************/ 2089 2090 xcb_void_cookie_t 2091 xcb_sync_set_priority (xcb_connection_t *c /**< */, 2092 uint32_t id /**< */, 2093 int32_t priority /**< */) 2094 { 2095 static const xcb_protocol_request_t xcb_req = { 2096 /* count */ 2, 2097 /* ext */ &xcb_sync_id, 2098 /* opcode */ XCB_SYNC_SET_PRIORITY, 2099 /* isvoid */ 1 2100 }; 2101 2102 struct iovec xcb_parts[4]; 2103 xcb_void_cookie_t xcb_ret; 2104 xcb_sync_set_priority_request_t xcb_out; 2105 2106 xcb_out.id = id; 2107 xcb_out.priority = priority; 2108 2109 xcb_parts[2].iov_base = (char *) &xcb_out; 2110 xcb_parts[2].iov_len = sizeof(xcb_out); 2111 xcb_parts[3].iov_base = 0; 2112 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2113 2114 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 2115 return xcb_ret; 2116 } 2117 2118 2119 /***************************************************************************** 2120 ** 2121 ** xcb_sync_get_priority_cookie_t xcb_sync_get_priority 2122 ** 2123 ** @param xcb_connection_t *c 2124 ** @param uint32_t id 2125 ** @returns xcb_sync_get_priority_cookie_t 2126 ** 2127 *****************************************************************************/ 2128 2129 xcb_sync_get_priority_cookie_t 2130 xcb_sync_get_priority (xcb_connection_t *c /**< */, 2131 uint32_t id /**< */) 2132 { 2133 static const xcb_protocol_request_t xcb_req = { 2134 /* count */ 2, 2135 /* ext */ &xcb_sync_id, 2136 /* opcode */ XCB_SYNC_GET_PRIORITY, 2137 /* isvoid */ 0 2138 }; 2139 2140 struct iovec xcb_parts[4]; 2141 xcb_sync_get_priority_cookie_t xcb_ret; 2142 xcb_sync_get_priority_request_t xcb_out; 2143 2144 xcb_out.id = id; 2145 2146 xcb_parts[2].iov_base = (char *) &xcb_out; 2147 xcb_parts[2].iov_len = sizeof(xcb_out); 2148 xcb_parts[3].iov_base = 0; 2149 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2150 2151 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 2152 return xcb_ret; 2153 } 2154 2155 2156 /***************************************************************************** 2157 ** 2158 ** xcb_sync_get_priority_cookie_t xcb_sync_get_priority_unchecked 2159 ** 2160 ** @param xcb_connection_t *c 2161 ** @param uint32_t id 2162 ** @returns xcb_sync_get_priority_cookie_t 2163 ** 2164 *****************************************************************************/ 2165 2166 xcb_sync_get_priority_cookie_t 2167 xcb_sync_get_priority_unchecked (xcb_connection_t *c /**< */, 2168 uint32_t id /**< */) 2169 { 2170 static const xcb_protocol_request_t xcb_req = { 2171 /* count */ 2, 2172 /* ext */ &xcb_sync_id, 2173 /* opcode */ XCB_SYNC_GET_PRIORITY, 2174 /* isvoid */ 0 2175 }; 2176 2177 struct iovec xcb_parts[4]; 2178 xcb_sync_get_priority_cookie_t xcb_ret; 2179 xcb_sync_get_priority_request_t xcb_out; 2180 2181 xcb_out.id = id; 2182 2183 xcb_parts[2].iov_base = (char *) &xcb_out; 2184 xcb_parts[2].iov_len = sizeof(xcb_out); 2185 xcb_parts[3].iov_base = 0; 2186 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2187 2188 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 2189 return xcb_ret; 2190 } 2191 2192 2193 /***************************************************************************** 2194 ** 2195 ** xcb_sync_get_priority_reply_t * xcb_sync_get_priority_reply 2196 ** 2197 ** @param xcb_connection_t *c 2198 ** @param xcb_sync_get_priority_cookie_t cookie 2199 ** @param xcb_generic_error_t **e 2200 ** @returns xcb_sync_get_priority_reply_t * 2201 ** 2202 *****************************************************************************/ 2203 2204 xcb_sync_get_priority_reply_t * 2205 xcb_sync_get_priority_reply (xcb_connection_t *c /**< */, 2206 xcb_sync_get_priority_cookie_t cookie /**< */, 2207 xcb_generic_error_t **e /**< */) 2208 { 2209 return (xcb_sync_get_priority_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 2210 } 2211 2212 2213 /***************************************************************************** 2214 ** 2215 ** xcb_void_cookie_t xcb_sync_create_fence_checked 2216 ** 2217 ** @param xcb_connection_t *c 2218 ** @param xcb_drawable_t drawable 2219 ** @param xcb_sync_fence_t fence 2220 ** @param uint8_t initially_triggered 2221 ** @returns xcb_void_cookie_t 2222 ** 2223 *****************************************************************************/ 2224 2225 xcb_void_cookie_t 2226 xcb_sync_create_fence_checked (xcb_connection_t *c /**< */, 2227 xcb_drawable_t drawable /**< */, 2228 xcb_sync_fence_t fence /**< */, 2229 uint8_t initially_triggered /**< */) 2230 { 2231 static const xcb_protocol_request_t xcb_req = { 2232 /* count */ 2, 2233 /* ext */ &xcb_sync_id, 2234 /* opcode */ XCB_SYNC_CREATE_FENCE, 2235 /* isvoid */ 1 2236 }; 2237 2238 struct iovec xcb_parts[4]; 2239 xcb_void_cookie_t xcb_ret; 2240 xcb_sync_create_fence_request_t xcb_out; 2241 2242 xcb_out.drawable = drawable; 2243 xcb_out.fence = fence; 2244 xcb_out.initially_triggered = initially_triggered; 2245 2246 xcb_parts[2].iov_base = (char *) &xcb_out; 2247 xcb_parts[2].iov_len = sizeof(xcb_out); 2248 xcb_parts[3].iov_base = 0; 2249 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2250 2251 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 2252 return xcb_ret; 2253 } 2254 2255 2256 /***************************************************************************** 2257 ** 2258 ** xcb_void_cookie_t xcb_sync_create_fence 2259 ** 2260 ** @param xcb_connection_t *c 2261 ** @param xcb_drawable_t drawable 2262 ** @param xcb_sync_fence_t fence 2263 ** @param uint8_t initially_triggered 2264 ** @returns xcb_void_cookie_t 2265 ** 2266 *****************************************************************************/ 2267 2268 xcb_void_cookie_t 2269 xcb_sync_create_fence (xcb_connection_t *c /**< */, 2270 xcb_drawable_t drawable /**< */, 2271 xcb_sync_fence_t fence /**< */, 2272 uint8_t initially_triggered /**< */) 2273 { 2274 static const xcb_protocol_request_t xcb_req = { 2275 /* count */ 2, 2276 /* ext */ &xcb_sync_id, 2277 /* opcode */ XCB_SYNC_CREATE_FENCE, 2278 /* isvoid */ 1 2279 }; 2280 2281 struct iovec xcb_parts[4]; 2282 xcb_void_cookie_t xcb_ret; 2283 xcb_sync_create_fence_request_t xcb_out; 2284 2285 xcb_out.drawable = drawable; 2286 xcb_out.fence = fence; 2287 xcb_out.initially_triggered = initially_triggered; 2288 2289 xcb_parts[2].iov_base = (char *) &xcb_out; 2290 xcb_parts[2].iov_len = sizeof(xcb_out); 2291 xcb_parts[3].iov_base = 0; 2292 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2293 2294 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 2295 return xcb_ret; 2296 } 2297 2298 2299 /***************************************************************************** 2300 ** 2301 ** xcb_void_cookie_t xcb_sync_trigger_fence_checked 2302 ** 2303 ** @param xcb_connection_t *c 2304 ** @param xcb_sync_fence_t fence 2305 ** @returns xcb_void_cookie_t 2306 ** 2307 *****************************************************************************/ 2308 2309 xcb_void_cookie_t 2310 xcb_sync_trigger_fence_checked (xcb_connection_t *c /**< */, 2311 xcb_sync_fence_t fence /**< */) 2312 { 2313 static const xcb_protocol_request_t xcb_req = { 2314 /* count */ 2, 2315 /* ext */ &xcb_sync_id, 2316 /* opcode */ XCB_SYNC_TRIGGER_FENCE, 2317 /* isvoid */ 1 2318 }; 2319 2320 struct iovec xcb_parts[4]; 2321 xcb_void_cookie_t xcb_ret; 2322 xcb_sync_trigger_fence_request_t xcb_out; 2323 2324 xcb_out.fence = fence; 2325 2326 xcb_parts[2].iov_base = (char *) &xcb_out; 2327 xcb_parts[2].iov_len = sizeof(xcb_out); 2328 xcb_parts[3].iov_base = 0; 2329 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2330 2331 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 2332 return xcb_ret; 2333 } 2334 2335 2336 /***************************************************************************** 2337 ** 2338 ** xcb_void_cookie_t xcb_sync_trigger_fence 2339 ** 2340 ** @param xcb_connection_t *c 2341 ** @param xcb_sync_fence_t fence 2342 ** @returns xcb_void_cookie_t 2343 ** 2344 *****************************************************************************/ 2345 2346 xcb_void_cookie_t 2347 xcb_sync_trigger_fence (xcb_connection_t *c /**< */, 2348 xcb_sync_fence_t fence /**< */) 2349 { 2350 static const xcb_protocol_request_t xcb_req = { 2351 /* count */ 2, 2352 /* ext */ &xcb_sync_id, 2353 /* opcode */ XCB_SYNC_TRIGGER_FENCE, 2354 /* isvoid */ 1 2355 }; 2356 2357 struct iovec xcb_parts[4]; 2358 xcb_void_cookie_t xcb_ret; 2359 xcb_sync_trigger_fence_request_t xcb_out; 2360 2361 xcb_out.fence = fence; 2362 2363 xcb_parts[2].iov_base = (char *) &xcb_out; 2364 xcb_parts[2].iov_len = sizeof(xcb_out); 2365 xcb_parts[3].iov_base = 0; 2366 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2367 2368 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 2369 return xcb_ret; 2370 } 2371 2372 2373 /***************************************************************************** 2374 ** 2375 ** xcb_void_cookie_t xcb_sync_reset_fence_checked 2376 ** 2377 ** @param xcb_connection_t *c 2378 ** @param xcb_sync_fence_t fence 2379 ** @returns xcb_void_cookie_t 2380 ** 2381 *****************************************************************************/ 2382 2383 xcb_void_cookie_t 2384 xcb_sync_reset_fence_checked (xcb_connection_t *c /**< */, 2385 xcb_sync_fence_t fence /**< */) 2386 { 2387 static const xcb_protocol_request_t xcb_req = { 2388 /* count */ 2, 2389 /* ext */ &xcb_sync_id, 2390 /* opcode */ XCB_SYNC_RESET_FENCE, 2391 /* isvoid */ 1 2392 }; 2393 2394 struct iovec xcb_parts[4]; 2395 xcb_void_cookie_t xcb_ret; 2396 xcb_sync_reset_fence_request_t xcb_out; 2397 2398 xcb_out.fence = fence; 2399 2400 xcb_parts[2].iov_base = (char *) &xcb_out; 2401 xcb_parts[2].iov_len = sizeof(xcb_out); 2402 xcb_parts[3].iov_base = 0; 2403 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2404 2405 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 2406 return xcb_ret; 2407 } 2408 2409 2410 /***************************************************************************** 2411 ** 2412 ** xcb_void_cookie_t xcb_sync_reset_fence 2413 ** 2414 ** @param xcb_connection_t *c 2415 ** @param xcb_sync_fence_t fence 2416 ** @returns xcb_void_cookie_t 2417 ** 2418 *****************************************************************************/ 2419 2420 xcb_void_cookie_t 2421 xcb_sync_reset_fence (xcb_connection_t *c /**< */, 2422 xcb_sync_fence_t fence /**< */) 2423 { 2424 static const xcb_protocol_request_t xcb_req = { 2425 /* count */ 2, 2426 /* ext */ &xcb_sync_id, 2427 /* opcode */ XCB_SYNC_RESET_FENCE, 2428 /* isvoid */ 1 2429 }; 2430 2431 struct iovec xcb_parts[4]; 2432 xcb_void_cookie_t xcb_ret; 2433 xcb_sync_reset_fence_request_t xcb_out; 2434 2435 xcb_out.fence = fence; 2436 2437 xcb_parts[2].iov_base = (char *) &xcb_out; 2438 xcb_parts[2].iov_len = sizeof(xcb_out); 2439 xcb_parts[3].iov_base = 0; 2440 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2441 2442 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 2443 return xcb_ret; 2444 } 2445 2446 2447 /***************************************************************************** 2448 ** 2449 ** xcb_void_cookie_t xcb_sync_destroy_fence_checked 2450 ** 2451 ** @param xcb_connection_t *c 2452 ** @param xcb_sync_fence_t fence 2453 ** @returns xcb_void_cookie_t 2454 ** 2455 *****************************************************************************/ 2456 2457 xcb_void_cookie_t 2458 xcb_sync_destroy_fence_checked (xcb_connection_t *c /**< */, 2459 xcb_sync_fence_t fence /**< */) 2460 { 2461 static const xcb_protocol_request_t xcb_req = { 2462 /* count */ 2, 2463 /* ext */ &xcb_sync_id, 2464 /* opcode */ XCB_SYNC_DESTROY_FENCE, 2465 /* isvoid */ 1 2466 }; 2467 2468 struct iovec xcb_parts[4]; 2469 xcb_void_cookie_t xcb_ret; 2470 xcb_sync_destroy_fence_request_t xcb_out; 2471 2472 xcb_out.fence = fence; 2473 2474 xcb_parts[2].iov_base = (char *) &xcb_out; 2475 xcb_parts[2].iov_len = sizeof(xcb_out); 2476 xcb_parts[3].iov_base = 0; 2477 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2478 2479 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 2480 return xcb_ret; 2481 } 2482 2483 2484 /***************************************************************************** 2485 ** 2486 ** xcb_void_cookie_t xcb_sync_destroy_fence 2487 ** 2488 ** @param xcb_connection_t *c 2489 ** @param xcb_sync_fence_t fence 2490 ** @returns xcb_void_cookie_t 2491 ** 2492 *****************************************************************************/ 2493 2494 xcb_void_cookie_t 2495 xcb_sync_destroy_fence (xcb_connection_t *c /**< */, 2496 xcb_sync_fence_t fence /**< */) 2497 { 2498 static const xcb_protocol_request_t xcb_req = { 2499 /* count */ 2, 2500 /* ext */ &xcb_sync_id, 2501 /* opcode */ XCB_SYNC_DESTROY_FENCE, 2502 /* isvoid */ 1 2503 }; 2504 2505 struct iovec xcb_parts[4]; 2506 xcb_void_cookie_t xcb_ret; 2507 xcb_sync_destroy_fence_request_t xcb_out; 2508 2509 xcb_out.fence = fence; 2510 2511 xcb_parts[2].iov_base = (char *) &xcb_out; 2512 xcb_parts[2].iov_len = sizeof(xcb_out); 2513 xcb_parts[3].iov_base = 0; 2514 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2515 2516 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 2517 return xcb_ret; 2518 } 2519 2520 2521 /***************************************************************************** 2522 ** 2523 ** xcb_sync_query_fence_cookie_t xcb_sync_query_fence 2524 ** 2525 ** @param xcb_connection_t *c 2526 ** @param xcb_sync_fence_t fence 2527 ** @returns xcb_sync_query_fence_cookie_t 2528 ** 2529 *****************************************************************************/ 2530 2531 xcb_sync_query_fence_cookie_t 2532 xcb_sync_query_fence (xcb_connection_t *c /**< */, 2533 xcb_sync_fence_t fence /**< */) 2534 { 2535 static const xcb_protocol_request_t xcb_req = { 2536 /* count */ 2, 2537 /* ext */ &xcb_sync_id, 2538 /* opcode */ XCB_SYNC_QUERY_FENCE, 2539 /* isvoid */ 0 2540 }; 2541 2542 struct iovec xcb_parts[4]; 2543 xcb_sync_query_fence_cookie_t xcb_ret; 2544 xcb_sync_query_fence_request_t xcb_out; 2545 2546 xcb_out.fence = fence; 2547 2548 xcb_parts[2].iov_base = (char *) &xcb_out; 2549 xcb_parts[2].iov_len = sizeof(xcb_out); 2550 xcb_parts[3].iov_base = 0; 2551 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2552 2553 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 2554 return xcb_ret; 2555 } 2556 2557 2558 /***************************************************************************** 2559 ** 2560 ** xcb_sync_query_fence_cookie_t xcb_sync_query_fence_unchecked 2561 ** 2562 ** @param xcb_connection_t *c 2563 ** @param xcb_sync_fence_t fence 2564 ** @returns xcb_sync_query_fence_cookie_t 2565 ** 2566 *****************************************************************************/ 2567 2568 xcb_sync_query_fence_cookie_t 2569 xcb_sync_query_fence_unchecked (xcb_connection_t *c /**< */, 2570 xcb_sync_fence_t fence /**< */) 2571 { 2572 static const xcb_protocol_request_t xcb_req = { 2573 /* count */ 2, 2574 /* ext */ &xcb_sync_id, 2575 /* opcode */ XCB_SYNC_QUERY_FENCE, 2576 /* isvoid */ 0 2577 }; 2578 2579 struct iovec xcb_parts[4]; 2580 xcb_sync_query_fence_cookie_t xcb_ret; 2581 xcb_sync_query_fence_request_t xcb_out; 2582 2583 xcb_out.fence = fence; 2584 2585 xcb_parts[2].iov_base = (char *) &xcb_out; 2586 xcb_parts[2].iov_len = sizeof(xcb_out); 2587 xcb_parts[3].iov_base = 0; 2588 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2589 2590 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 2591 return xcb_ret; 2592 } 2593 2594 2595 /***************************************************************************** 2596 ** 2597 ** xcb_sync_query_fence_reply_t * xcb_sync_query_fence_reply 2598 ** 2599 ** @param xcb_connection_t *c 2600 ** @param xcb_sync_query_fence_cookie_t cookie 2601 ** @param xcb_generic_error_t **e 2602 ** @returns xcb_sync_query_fence_reply_t * 2603 ** 2604 *****************************************************************************/ 2605 2606 xcb_sync_query_fence_reply_t * 2607 xcb_sync_query_fence_reply (xcb_connection_t *c /**< */, 2608 xcb_sync_query_fence_cookie_t cookie /**< */, 2609 xcb_generic_error_t **e /**< */) 2610 { 2611 return (xcb_sync_query_fence_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 2612 } 2613 2614 int 2615 xcb_sync_await_fence_sizeof (const void *_buffer /**< */, 2616 uint32_t fence_list_len /**< */) 2617 { 2618 char *xcb_tmp = (char *)_buffer; 2619 unsigned int xcb_buffer_len = 0; 2620 unsigned int xcb_block_len = 0; 2621 unsigned int xcb_pad = 0; 2622 unsigned int xcb_align_to = 0; 2623 2624 2625 xcb_block_len += sizeof(xcb_sync_await_fence_request_t); 2626 xcb_tmp += xcb_block_len; 2627 xcb_buffer_len += xcb_block_len; 2628 xcb_block_len = 0; 2629 /* fence_list */ 2630 xcb_block_len += fence_list_len * sizeof(xcb_sync_fence_t); 2631 xcb_tmp += xcb_block_len; 2632 xcb_align_to = ALIGNOF(xcb_sync_fence_t); 2633 /* insert padding */ 2634 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 2635 xcb_buffer_len += xcb_block_len + xcb_pad; 2636 if (0 != xcb_pad) { 2637 xcb_tmp += xcb_pad; 2638 xcb_pad = 0; 2639 } 2640 xcb_block_len = 0; 2641 2642 return xcb_buffer_len; 2643 } 2644 2645 2646 /***************************************************************************** 2647 ** 2648 ** xcb_void_cookie_t xcb_sync_await_fence_checked 2649 ** 2650 ** @param xcb_connection_t *c 2651 ** @param uint32_t fence_list_len 2652 ** @param const xcb_sync_fence_t *fence_list 2653 ** @returns xcb_void_cookie_t 2654 ** 2655 *****************************************************************************/ 2656 2657 xcb_void_cookie_t 2658 xcb_sync_await_fence_checked (xcb_connection_t *c /**< */, 2659 uint32_t fence_list_len /**< */, 2660 const xcb_sync_fence_t *fence_list /**< */) 2661 { 2662 static const xcb_protocol_request_t xcb_req = { 2663 /* count */ 4, 2664 /* ext */ &xcb_sync_id, 2665 /* opcode */ XCB_SYNC_AWAIT_FENCE, 2666 /* isvoid */ 1 2667 }; 2668 2669 struct iovec xcb_parts[6]; 2670 xcb_void_cookie_t xcb_ret; 2671 xcb_sync_await_fence_request_t xcb_out; 2672 2673 2674 xcb_parts[2].iov_base = (char *) &xcb_out; 2675 xcb_parts[2].iov_len = sizeof(xcb_out); 2676 xcb_parts[3].iov_base = 0; 2677 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2678 /* xcb_sync_fence_t fence_list */ 2679 xcb_parts[4].iov_base = (char *) fence_list; 2680 xcb_parts[4].iov_len = fence_list_len * sizeof(xcb_sync_fence_t); 2681 xcb_parts[5].iov_base = 0; 2682 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 2683 2684 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 2685 return xcb_ret; 2686 } 2687 2688 2689 /***************************************************************************** 2690 ** 2691 ** xcb_void_cookie_t xcb_sync_await_fence 2692 ** 2693 ** @param xcb_connection_t *c 2694 ** @param uint32_t fence_list_len 2695 ** @param const xcb_sync_fence_t *fence_list 2696 ** @returns xcb_void_cookie_t 2697 ** 2698 *****************************************************************************/ 2699 2700 xcb_void_cookie_t 2701 xcb_sync_await_fence (xcb_connection_t *c /**< */, 2702 uint32_t fence_list_len /**< */, 2703 const xcb_sync_fence_t *fence_list /**< */) 2704 { 2705 static const xcb_protocol_request_t xcb_req = { 2706 /* count */ 4, 2707 /* ext */ &xcb_sync_id, 2708 /* opcode */ XCB_SYNC_AWAIT_FENCE, 2709 /* isvoid */ 1 2710 }; 2711 2712 struct iovec xcb_parts[6]; 2713 xcb_void_cookie_t xcb_ret; 2714 xcb_sync_await_fence_request_t xcb_out; 2715 2716 2717 xcb_parts[2].iov_base = (char *) &xcb_out; 2718 xcb_parts[2].iov_len = sizeof(xcb_out); 2719 xcb_parts[3].iov_base = 0; 2720 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2721 /* xcb_sync_fence_t fence_list */ 2722 xcb_parts[4].iov_base = (char *) fence_list; 2723 xcb_parts[4].iov_len = fence_list_len * sizeof(xcb_sync_fence_t); 2724 xcb_parts[5].iov_base = 0; 2725 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 2726 2727 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 2728 return xcb_ret; 2729 } 2730 2731