1 /* 2 * This file generated automatically from record.xml by c_client.py. 3 * Edit at your peril. 4 */ 5 6 #include <string.h> 7 #include <assert.h> 8 #include "xcbext.h" 9 #include "record.h" 10 11 xcb_extension_t xcb_record_id = { "RECORD", 0 }; 12 13 14 /***************************************************************************** 15 ** 16 ** void xcb_record_context_next 17 ** 18 ** @param xcb_record_context_iterator_t *i 19 ** @returns void 20 ** 21 *****************************************************************************/ 22 23 void 24 xcb_record_context_next (xcb_record_context_iterator_t *i /**< */) 25 { 26 --i->rem; 27 ++i->data; 28 i->index += sizeof(xcb_record_context_t); 29 } 30 31 32 /***************************************************************************** 33 ** 34 ** xcb_generic_iterator_t xcb_record_context_end 35 ** 36 ** @param xcb_record_context_iterator_t i 37 ** @returns xcb_generic_iterator_t 38 ** 39 *****************************************************************************/ 40 41 xcb_generic_iterator_t 42 xcb_record_context_end (xcb_record_context_iterator_t i /**< */) 43 { 44 xcb_generic_iterator_t ret; 45 ret.data = i.data + i.rem; 46 ret.index = i.index + ((char *) ret.data - (char *) i.data); 47 ret.rem = 0; 48 return ret; 49 } 50 51 52 /***************************************************************************** 53 ** 54 ** void xcb_record_range_8_next 55 ** 56 ** @param xcb_record_range_8_iterator_t *i 57 ** @returns void 58 ** 59 *****************************************************************************/ 60 61 void 62 xcb_record_range_8_next (xcb_record_range_8_iterator_t *i /**< */) 63 { 64 --i->rem; 65 ++i->data; 66 i->index += sizeof(xcb_record_range_8_t); 67 } 68 69 70 /***************************************************************************** 71 ** 72 ** xcb_generic_iterator_t xcb_record_range_8_end 73 ** 74 ** @param xcb_record_range_8_iterator_t i 75 ** @returns xcb_generic_iterator_t 76 ** 77 *****************************************************************************/ 78 79 xcb_generic_iterator_t 80 xcb_record_range_8_end (xcb_record_range_8_iterator_t i /**< */) 81 { 82 xcb_generic_iterator_t ret; 83 ret.data = i.data + i.rem; 84 ret.index = i.index + ((char *) ret.data - (char *) i.data); 85 ret.rem = 0; 86 return ret; 87 } 88 89 90 /***************************************************************************** 91 ** 92 ** void xcb_record_range_16_next 93 ** 94 ** @param xcb_record_range_16_iterator_t *i 95 ** @returns void 96 ** 97 *****************************************************************************/ 98 99 void 100 xcb_record_range_16_next (xcb_record_range_16_iterator_t *i /**< */) 101 { 102 --i->rem; 103 ++i->data; 104 i->index += sizeof(xcb_record_range_16_t); 105 } 106 107 108 /***************************************************************************** 109 ** 110 ** xcb_generic_iterator_t xcb_record_range_16_end 111 ** 112 ** @param xcb_record_range_16_iterator_t i 113 ** @returns xcb_generic_iterator_t 114 ** 115 *****************************************************************************/ 116 117 xcb_generic_iterator_t 118 xcb_record_range_16_end (xcb_record_range_16_iterator_t i /**< */) 119 { 120 xcb_generic_iterator_t ret; 121 ret.data = i.data + i.rem; 122 ret.index = i.index + ((char *) ret.data - (char *) i.data); 123 ret.rem = 0; 124 return ret; 125 } 126 127 128 /***************************************************************************** 129 ** 130 ** void xcb_record_ext_range_next 131 ** 132 ** @param xcb_record_ext_range_iterator_t *i 133 ** @returns void 134 ** 135 *****************************************************************************/ 136 137 void 138 xcb_record_ext_range_next (xcb_record_ext_range_iterator_t *i /**< */) 139 { 140 --i->rem; 141 ++i->data; 142 i->index += sizeof(xcb_record_ext_range_t); 143 } 144 145 146 /***************************************************************************** 147 ** 148 ** xcb_generic_iterator_t xcb_record_ext_range_end 149 ** 150 ** @param xcb_record_ext_range_iterator_t i 151 ** @returns xcb_generic_iterator_t 152 ** 153 *****************************************************************************/ 154 155 xcb_generic_iterator_t 156 xcb_record_ext_range_end (xcb_record_ext_range_iterator_t i /**< */) 157 { 158 xcb_generic_iterator_t ret; 159 ret.data = i.data + i.rem; 160 ret.index = i.index + ((char *) ret.data - (char *) i.data); 161 ret.rem = 0; 162 return ret; 163 } 164 165 166 /***************************************************************************** 167 ** 168 ** void xcb_record_range_next 169 ** 170 ** @param xcb_record_range_iterator_t *i 171 ** @returns void 172 ** 173 *****************************************************************************/ 174 175 void 176 xcb_record_range_next (xcb_record_range_iterator_t *i /**< */) 177 { 178 --i->rem; 179 ++i->data; 180 i->index += sizeof(xcb_record_range_t); 181 } 182 183 184 /***************************************************************************** 185 ** 186 ** xcb_generic_iterator_t xcb_record_range_end 187 ** 188 ** @param xcb_record_range_iterator_t i 189 ** @returns xcb_generic_iterator_t 190 ** 191 *****************************************************************************/ 192 193 xcb_generic_iterator_t 194 xcb_record_range_end (xcb_record_range_iterator_t i /**< */) 195 { 196 xcb_generic_iterator_t ret; 197 ret.data = i.data + i.rem; 198 ret.index = i.index + ((char *) ret.data - (char *) i.data); 199 ret.rem = 0; 200 return ret; 201 } 202 203 204 /***************************************************************************** 205 ** 206 ** void xcb_record_element_header_next 207 ** 208 ** @param xcb_record_element_header_iterator_t *i 209 ** @returns void 210 ** 211 *****************************************************************************/ 212 213 void 214 xcb_record_element_header_next (xcb_record_element_header_iterator_t *i /**< */) 215 { 216 --i->rem; 217 ++i->data; 218 i->index += sizeof(xcb_record_element_header_t); 219 } 220 221 222 /***************************************************************************** 223 ** 224 ** xcb_generic_iterator_t xcb_record_element_header_end 225 ** 226 ** @param xcb_record_element_header_iterator_t i 227 ** @returns xcb_generic_iterator_t 228 ** 229 *****************************************************************************/ 230 231 xcb_generic_iterator_t 232 xcb_record_element_header_end (xcb_record_element_header_iterator_t i /**< */) 233 { 234 xcb_generic_iterator_t ret; 235 ret.data = i.data + i.rem; 236 ret.index = i.index + ((char *) ret.data - (char *) i.data); 237 ret.rem = 0; 238 return ret; 239 } 240 241 242 /***************************************************************************** 243 ** 244 ** void xcb_record_client_spec_next 245 ** 246 ** @param xcb_record_client_spec_iterator_t *i 247 ** @returns void 248 ** 249 *****************************************************************************/ 250 251 void 252 xcb_record_client_spec_next (xcb_record_client_spec_iterator_t *i /**< */) 253 { 254 --i->rem; 255 ++i->data; 256 i->index += sizeof(xcb_record_client_spec_t); 257 } 258 259 260 /***************************************************************************** 261 ** 262 ** xcb_generic_iterator_t xcb_record_client_spec_end 263 ** 264 ** @param xcb_record_client_spec_iterator_t i 265 ** @returns xcb_generic_iterator_t 266 ** 267 *****************************************************************************/ 268 269 xcb_generic_iterator_t 270 xcb_record_client_spec_end (xcb_record_client_spec_iterator_t i /**< */) 271 { 272 xcb_generic_iterator_t ret; 273 ret.data = i.data + i.rem; 274 ret.index = i.index + ((char *) ret.data - (char *) i.data); 275 ret.rem = 0; 276 return ret; 277 } 278 279 280 /***************************************************************************** 281 ** 282 ** xcb_record_range_t * xcb_record_client_info_ranges 283 ** 284 ** @param const xcb_record_client_info_t *R 285 ** @returns xcb_record_range_t * 286 ** 287 *****************************************************************************/ 288 289 xcb_record_range_t * 290 xcb_record_client_info_ranges (const xcb_record_client_info_t *R /**< */) 291 { 292 return (xcb_record_range_t *) (R + 1); 293 } 294 295 296 /***************************************************************************** 297 ** 298 ** int xcb_record_client_info_ranges_length 299 ** 300 ** @param const xcb_record_client_info_t *R 301 ** @returns int 302 ** 303 *****************************************************************************/ 304 305 int 306 xcb_record_client_info_ranges_length (const xcb_record_client_info_t *R /**< */) 307 { 308 return R->num_ranges; 309 } 310 311 312 /***************************************************************************** 313 ** 314 ** xcb_record_range_iterator_t xcb_record_client_info_ranges_iterator 315 ** 316 ** @param const xcb_record_client_info_t *R 317 ** @returns xcb_record_range_iterator_t 318 ** 319 *****************************************************************************/ 320 321 xcb_record_range_iterator_t 322 xcb_record_client_info_ranges_iterator (const xcb_record_client_info_t *R /**< */) 323 { 324 xcb_record_range_iterator_t i; 325 i.data = (xcb_record_range_t *) (R + 1); 326 i.rem = R->num_ranges; 327 i.index = (char *) i.data - (char *) R; 328 return i; 329 } 330 331 332 /***************************************************************************** 333 ** 334 ** void xcb_record_client_info_next 335 ** 336 ** @param xcb_record_client_info_iterator_t *i 337 ** @returns void 338 ** 339 *****************************************************************************/ 340 341 void 342 xcb_record_client_info_next (xcb_record_client_info_iterator_t *i /**< */) 343 { 344 xcb_record_client_info_t *R = i->data; 345 xcb_generic_iterator_t child = xcb_record_range_end(xcb_record_client_info_ranges_iterator(R)); 346 --i->rem; 347 i->data = (xcb_record_client_info_t *) child.data; 348 i->index = child.index; 349 } 350 351 352 /***************************************************************************** 353 ** 354 ** xcb_generic_iterator_t xcb_record_client_info_end 355 ** 356 ** @param xcb_record_client_info_iterator_t i 357 ** @returns xcb_generic_iterator_t 358 ** 359 *****************************************************************************/ 360 361 xcb_generic_iterator_t 362 xcb_record_client_info_end (xcb_record_client_info_iterator_t i /**< */) 363 { 364 xcb_generic_iterator_t ret; 365 while(i.rem > 0) 366 xcb_record_client_info_next(&i); 367 ret.data = i.data; 368 ret.rem = i.rem; 369 ret.index = i.index; 370 return ret; 371 } 372 373 374 /***************************************************************************** 375 ** 376 ** xcb_record_query_version_cookie_t xcb_record_query_version 377 ** 378 ** @param xcb_connection_t *c 379 ** @param uint16_t major_version 380 ** @param uint16_t minor_version 381 ** @returns xcb_record_query_version_cookie_t 382 ** 383 *****************************************************************************/ 384 385 xcb_record_query_version_cookie_t 386 xcb_record_query_version (xcb_connection_t *c /**< */, 387 uint16_t major_version /**< */, 388 uint16_t minor_version /**< */) 389 { 390 static const xcb_protocol_request_t xcb_req = { 391 /* count */ 2, 392 /* ext */ &xcb_record_id, 393 /* opcode */ XCB_RECORD_QUERY_VERSION, 394 /* isvoid */ 0 395 }; 396 397 struct iovec xcb_parts[4]; 398 xcb_record_query_version_cookie_t xcb_ret; 399 xcb_record_query_version_request_t xcb_out; 400 401 xcb_out.major_version = major_version; 402 xcb_out.minor_version = minor_version; 403 404 xcb_parts[2].iov_base = (char *) &xcb_out; 405 xcb_parts[2].iov_len = sizeof(xcb_out); 406 xcb_parts[3].iov_base = 0; 407 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 408 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 409 return xcb_ret; 410 } 411 412 413 /***************************************************************************** 414 ** 415 ** xcb_record_query_version_cookie_t xcb_record_query_version_unchecked 416 ** 417 ** @param xcb_connection_t *c 418 ** @param uint16_t major_version 419 ** @param uint16_t minor_version 420 ** @returns xcb_record_query_version_cookie_t 421 ** 422 *****************************************************************************/ 423 424 xcb_record_query_version_cookie_t 425 xcb_record_query_version_unchecked (xcb_connection_t *c /**< */, 426 uint16_t major_version /**< */, 427 uint16_t minor_version /**< */) 428 { 429 static const xcb_protocol_request_t xcb_req = { 430 /* count */ 2, 431 /* ext */ &xcb_record_id, 432 /* opcode */ XCB_RECORD_QUERY_VERSION, 433 /* isvoid */ 0 434 }; 435 436 struct iovec xcb_parts[4]; 437 xcb_record_query_version_cookie_t xcb_ret; 438 xcb_record_query_version_request_t xcb_out; 439 440 xcb_out.major_version = major_version; 441 xcb_out.minor_version = minor_version; 442 443 xcb_parts[2].iov_base = (char *) &xcb_out; 444 xcb_parts[2].iov_len = sizeof(xcb_out); 445 xcb_parts[3].iov_base = 0; 446 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 447 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 448 return xcb_ret; 449 } 450 451 452 /***************************************************************************** 453 ** 454 ** xcb_record_query_version_reply_t * xcb_record_query_version_reply 455 ** 456 ** @param xcb_connection_t *c 457 ** @param xcb_record_query_version_cookie_t cookie 458 ** @param xcb_generic_error_t **e 459 ** @returns xcb_record_query_version_reply_t * 460 ** 461 *****************************************************************************/ 462 463 xcb_record_query_version_reply_t * 464 xcb_record_query_version_reply (xcb_connection_t *c /**< */, 465 xcb_record_query_version_cookie_t cookie /**< */, 466 xcb_generic_error_t **e /**< */) 467 { 468 return (xcb_record_query_version_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 469 } 470 471 472 /***************************************************************************** 473 ** 474 ** xcb_void_cookie_t xcb_record_create_context_checked 475 ** 476 ** @param xcb_connection_t *c 477 ** @param xcb_record_context_t context 478 ** @param xcb_record_element_header_t element_header 479 ** @param uint32_t num_client_specs 480 ** @param uint32_t num_ranges 481 ** @param const xcb_record_client_spec_t *client_specs 482 ** @param const xcb_record_range_t *ranges 483 ** @returns xcb_void_cookie_t 484 ** 485 *****************************************************************************/ 486 487 xcb_void_cookie_t 488 xcb_record_create_context_checked (xcb_connection_t *c /**< */, 489 xcb_record_context_t context /**< */, 490 xcb_record_element_header_t element_header /**< */, 491 uint32_t num_client_specs /**< */, 492 uint32_t num_ranges /**< */, 493 const xcb_record_client_spec_t *client_specs /**< */, 494 const xcb_record_range_t *ranges /**< */) 495 { 496 static const xcb_protocol_request_t xcb_req = { 497 /* count */ 6, 498 /* ext */ &xcb_record_id, 499 /* opcode */ XCB_RECORD_CREATE_CONTEXT, 500 /* isvoid */ 1 501 }; 502 503 struct iovec xcb_parts[8]; 504 xcb_void_cookie_t xcb_ret; 505 xcb_record_create_context_request_t xcb_out; 506 507 xcb_out.context = context; 508 xcb_out.element_header = element_header; 509 memset(xcb_out.pad0, 0, 3); 510 xcb_out.num_client_specs = num_client_specs; 511 xcb_out.num_ranges = num_ranges; 512 513 xcb_parts[2].iov_base = (char *) &xcb_out; 514 xcb_parts[2].iov_len = sizeof(xcb_out); 515 xcb_parts[3].iov_base = 0; 516 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 517 xcb_parts[4].iov_base = (char *) client_specs; 518 xcb_parts[4].iov_len = num_client_specs * sizeof(xcb_record_client_spec_t); 519 xcb_parts[5].iov_base = 0; 520 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 521 xcb_parts[6].iov_base = (char *) ranges; 522 xcb_parts[6].iov_len = num_ranges * sizeof(xcb_record_range_t); 523 xcb_parts[7].iov_base = 0; 524 xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3; 525 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 526 return xcb_ret; 527 } 528 529 530 /***************************************************************************** 531 ** 532 ** xcb_void_cookie_t xcb_record_create_context 533 ** 534 ** @param xcb_connection_t *c 535 ** @param xcb_record_context_t context 536 ** @param xcb_record_element_header_t element_header 537 ** @param uint32_t num_client_specs 538 ** @param uint32_t num_ranges 539 ** @param const xcb_record_client_spec_t *client_specs 540 ** @param const xcb_record_range_t *ranges 541 ** @returns xcb_void_cookie_t 542 ** 543 *****************************************************************************/ 544 545 xcb_void_cookie_t 546 xcb_record_create_context (xcb_connection_t *c /**< */, 547 xcb_record_context_t context /**< */, 548 xcb_record_element_header_t element_header /**< */, 549 uint32_t num_client_specs /**< */, 550 uint32_t num_ranges /**< */, 551 const xcb_record_client_spec_t *client_specs /**< */, 552 const xcb_record_range_t *ranges /**< */) 553 { 554 static const xcb_protocol_request_t xcb_req = { 555 /* count */ 6, 556 /* ext */ &xcb_record_id, 557 /* opcode */ XCB_RECORD_CREATE_CONTEXT, 558 /* isvoid */ 1 559 }; 560 561 struct iovec xcb_parts[8]; 562 xcb_void_cookie_t xcb_ret; 563 xcb_record_create_context_request_t xcb_out; 564 565 xcb_out.context = context; 566 xcb_out.element_header = element_header; 567 memset(xcb_out.pad0, 0, 3); 568 xcb_out.num_client_specs = num_client_specs; 569 xcb_out.num_ranges = num_ranges; 570 571 xcb_parts[2].iov_base = (char *) &xcb_out; 572 xcb_parts[2].iov_len = sizeof(xcb_out); 573 xcb_parts[3].iov_base = 0; 574 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 575 xcb_parts[4].iov_base = (char *) client_specs; 576 xcb_parts[4].iov_len = num_client_specs * sizeof(xcb_record_client_spec_t); 577 xcb_parts[5].iov_base = 0; 578 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 579 xcb_parts[6].iov_base = (char *) ranges; 580 xcb_parts[6].iov_len = num_ranges * sizeof(xcb_record_range_t); 581 xcb_parts[7].iov_base = 0; 582 xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3; 583 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 584 return xcb_ret; 585 } 586 587 588 /***************************************************************************** 589 ** 590 ** xcb_void_cookie_t xcb_record_register_clients_checked 591 ** 592 ** @param xcb_connection_t *c 593 ** @param xcb_record_context_t context 594 ** @param xcb_record_element_header_t element_header 595 ** @param uint32_t num_client_specs 596 ** @param uint32_t num_ranges 597 ** @param const xcb_record_client_spec_t *client_specs 598 ** @param const xcb_record_range_t *ranges 599 ** @returns xcb_void_cookie_t 600 ** 601 *****************************************************************************/ 602 603 xcb_void_cookie_t 604 xcb_record_register_clients_checked (xcb_connection_t *c /**< */, 605 xcb_record_context_t context /**< */, 606 xcb_record_element_header_t element_header /**< */, 607 uint32_t num_client_specs /**< */, 608 uint32_t num_ranges /**< */, 609 const xcb_record_client_spec_t *client_specs /**< */, 610 const xcb_record_range_t *ranges /**< */) 611 { 612 static const xcb_protocol_request_t xcb_req = { 613 /* count */ 6, 614 /* ext */ &xcb_record_id, 615 /* opcode */ XCB_RECORD_REGISTER_CLIENTS, 616 /* isvoid */ 1 617 }; 618 619 struct iovec xcb_parts[8]; 620 xcb_void_cookie_t xcb_ret; 621 xcb_record_register_clients_request_t xcb_out; 622 623 xcb_out.context = context; 624 xcb_out.element_header = element_header; 625 memset(xcb_out.pad0, 0, 3); 626 xcb_out.num_client_specs = num_client_specs; 627 xcb_out.num_ranges = num_ranges; 628 629 xcb_parts[2].iov_base = (char *) &xcb_out; 630 xcb_parts[2].iov_len = sizeof(xcb_out); 631 xcb_parts[3].iov_base = 0; 632 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 633 xcb_parts[4].iov_base = (char *) client_specs; 634 xcb_parts[4].iov_len = num_client_specs * sizeof(xcb_record_client_spec_t); 635 xcb_parts[5].iov_base = 0; 636 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 637 xcb_parts[6].iov_base = (char *) ranges; 638 xcb_parts[6].iov_len = num_ranges * sizeof(xcb_record_range_t); 639 xcb_parts[7].iov_base = 0; 640 xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3; 641 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 642 return xcb_ret; 643 } 644 645 646 /***************************************************************************** 647 ** 648 ** xcb_void_cookie_t xcb_record_register_clients 649 ** 650 ** @param xcb_connection_t *c 651 ** @param xcb_record_context_t context 652 ** @param xcb_record_element_header_t element_header 653 ** @param uint32_t num_client_specs 654 ** @param uint32_t num_ranges 655 ** @param const xcb_record_client_spec_t *client_specs 656 ** @param const xcb_record_range_t *ranges 657 ** @returns xcb_void_cookie_t 658 ** 659 *****************************************************************************/ 660 661 xcb_void_cookie_t 662 xcb_record_register_clients (xcb_connection_t *c /**< */, 663 xcb_record_context_t context /**< */, 664 xcb_record_element_header_t element_header /**< */, 665 uint32_t num_client_specs /**< */, 666 uint32_t num_ranges /**< */, 667 const xcb_record_client_spec_t *client_specs /**< */, 668 const xcb_record_range_t *ranges /**< */) 669 { 670 static const xcb_protocol_request_t xcb_req = { 671 /* count */ 6, 672 /* ext */ &xcb_record_id, 673 /* opcode */ XCB_RECORD_REGISTER_CLIENTS, 674 /* isvoid */ 1 675 }; 676 677 struct iovec xcb_parts[8]; 678 xcb_void_cookie_t xcb_ret; 679 xcb_record_register_clients_request_t xcb_out; 680 681 xcb_out.context = context; 682 xcb_out.element_header = element_header; 683 memset(xcb_out.pad0, 0, 3); 684 xcb_out.num_client_specs = num_client_specs; 685 xcb_out.num_ranges = num_ranges; 686 687 xcb_parts[2].iov_base = (char *) &xcb_out; 688 xcb_parts[2].iov_len = sizeof(xcb_out); 689 xcb_parts[3].iov_base = 0; 690 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 691 xcb_parts[4].iov_base = (char *) client_specs; 692 xcb_parts[4].iov_len = num_client_specs * sizeof(xcb_record_client_spec_t); 693 xcb_parts[5].iov_base = 0; 694 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 695 xcb_parts[6].iov_base = (char *) ranges; 696 xcb_parts[6].iov_len = num_ranges * sizeof(xcb_record_range_t); 697 xcb_parts[7].iov_base = 0; 698 xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3; 699 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 700 return xcb_ret; 701 } 702 703 704 /***************************************************************************** 705 ** 706 ** xcb_void_cookie_t xcb_record_unregister_clients_checked 707 ** 708 ** @param xcb_connection_t *c 709 ** @param xcb_record_context_t context 710 ** @param uint32_t num_client_specs 711 ** @param const xcb_record_client_spec_t *client_specs 712 ** @returns xcb_void_cookie_t 713 ** 714 *****************************************************************************/ 715 716 xcb_void_cookie_t 717 xcb_record_unregister_clients_checked (xcb_connection_t *c /**< */, 718 xcb_record_context_t context /**< */, 719 uint32_t num_client_specs /**< */, 720 const xcb_record_client_spec_t *client_specs /**< */) 721 { 722 static const xcb_protocol_request_t xcb_req = { 723 /* count */ 4, 724 /* ext */ &xcb_record_id, 725 /* opcode */ XCB_RECORD_UNREGISTER_CLIENTS, 726 /* isvoid */ 1 727 }; 728 729 struct iovec xcb_parts[6]; 730 xcb_void_cookie_t xcb_ret; 731 xcb_record_unregister_clients_request_t xcb_out; 732 733 xcb_out.context = context; 734 xcb_out.num_client_specs = num_client_specs; 735 736 xcb_parts[2].iov_base = (char *) &xcb_out; 737 xcb_parts[2].iov_len = sizeof(xcb_out); 738 xcb_parts[3].iov_base = 0; 739 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 740 xcb_parts[4].iov_base = (char *) client_specs; 741 xcb_parts[4].iov_len = num_client_specs * sizeof(xcb_record_client_spec_t); 742 xcb_parts[5].iov_base = 0; 743 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 744 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 745 return xcb_ret; 746 } 747 748 749 /***************************************************************************** 750 ** 751 ** xcb_void_cookie_t xcb_record_unregister_clients 752 ** 753 ** @param xcb_connection_t *c 754 ** @param xcb_record_context_t context 755 ** @param uint32_t num_client_specs 756 ** @param const xcb_record_client_spec_t *client_specs 757 ** @returns xcb_void_cookie_t 758 ** 759 *****************************************************************************/ 760 761 xcb_void_cookie_t 762 xcb_record_unregister_clients (xcb_connection_t *c /**< */, 763 xcb_record_context_t context /**< */, 764 uint32_t num_client_specs /**< */, 765 const xcb_record_client_spec_t *client_specs /**< */) 766 { 767 static const xcb_protocol_request_t xcb_req = { 768 /* count */ 4, 769 /* ext */ &xcb_record_id, 770 /* opcode */ XCB_RECORD_UNREGISTER_CLIENTS, 771 /* isvoid */ 1 772 }; 773 774 struct iovec xcb_parts[6]; 775 xcb_void_cookie_t xcb_ret; 776 xcb_record_unregister_clients_request_t xcb_out; 777 778 xcb_out.context = context; 779 xcb_out.num_client_specs = num_client_specs; 780 781 xcb_parts[2].iov_base = (char *) &xcb_out; 782 xcb_parts[2].iov_len = sizeof(xcb_out); 783 xcb_parts[3].iov_base = 0; 784 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 785 xcb_parts[4].iov_base = (char *) client_specs; 786 xcb_parts[4].iov_len = num_client_specs * sizeof(xcb_record_client_spec_t); 787 xcb_parts[5].iov_base = 0; 788 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 789 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 790 return xcb_ret; 791 } 792 793 794 /***************************************************************************** 795 ** 796 ** xcb_record_get_context_cookie_t xcb_record_get_context 797 ** 798 ** @param xcb_connection_t *c 799 ** @param xcb_record_context_t context 800 ** @returns xcb_record_get_context_cookie_t 801 ** 802 *****************************************************************************/ 803 804 xcb_record_get_context_cookie_t 805 xcb_record_get_context (xcb_connection_t *c /**< */, 806 xcb_record_context_t context /**< */) 807 { 808 static const xcb_protocol_request_t xcb_req = { 809 /* count */ 2, 810 /* ext */ &xcb_record_id, 811 /* opcode */ XCB_RECORD_GET_CONTEXT, 812 /* isvoid */ 0 813 }; 814 815 struct iovec xcb_parts[4]; 816 xcb_record_get_context_cookie_t xcb_ret; 817 xcb_record_get_context_request_t xcb_out; 818 819 xcb_out.context = context; 820 821 xcb_parts[2].iov_base = (char *) &xcb_out; 822 xcb_parts[2].iov_len = sizeof(xcb_out); 823 xcb_parts[3].iov_base = 0; 824 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 825 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 826 return xcb_ret; 827 } 828 829 830 /***************************************************************************** 831 ** 832 ** xcb_record_get_context_cookie_t xcb_record_get_context_unchecked 833 ** 834 ** @param xcb_connection_t *c 835 ** @param xcb_record_context_t context 836 ** @returns xcb_record_get_context_cookie_t 837 ** 838 *****************************************************************************/ 839 840 xcb_record_get_context_cookie_t 841 xcb_record_get_context_unchecked (xcb_connection_t *c /**< */, 842 xcb_record_context_t context /**< */) 843 { 844 static const xcb_protocol_request_t xcb_req = { 845 /* count */ 2, 846 /* ext */ &xcb_record_id, 847 /* opcode */ XCB_RECORD_GET_CONTEXT, 848 /* isvoid */ 0 849 }; 850 851 struct iovec xcb_parts[4]; 852 xcb_record_get_context_cookie_t xcb_ret; 853 xcb_record_get_context_request_t xcb_out; 854 855 xcb_out.context = context; 856 857 xcb_parts[2].iov_base = (char *) &xcb_out; 858 xcb_parts[2].iov_len = sizeof(xcb_out); 859 xcb_parts[3].iov_base = 0; 860 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 861 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 862 return xcb_ret; 863 } 864 865 866 /***************************************************************************** 867 ** 868 ** int xcb_record_get_context_intercepted_clients_length 869 ** 870 ** @param const xcb_record_get_context_reply_t *R 871 ** @returns int 872 ** 873 *****************************************************************************/ 874 875 int 876 xcb_record_get_context_intercepted_clients_length (const xcb_record_get_context_reply_t *R /**< */) 877 { 878 return R->num_intercepted_clients; 879 } 880 881 882 /***************************************************************************** 883 ** 884 ** xcb_record_client_info_iterator_t xcb_record_get_context_intercepted_clients_iterator 885 ** 886 ** @param const xcb_record_get_context_reply_t *R 887 ** @returns xcb_record_client_info_iterator_t 888 ** 889 *****************************************************************************/ 890 891 xcb_record_client_info_iterator_t 892 xcb_record_get_context_intercepted_clients_iterator (const xcb_record_get_context_reply_t *R /**< */) 893 { 894 xcb_record_client_info_iterator_t i; 895 i.data = (xcb_record_client_info_t *) (R + 1); 896 i.rem = R->num_intercepted_clients; 897 i.index = (char *) i.data - (char *) R; 898 return i; 899 } 900 901 902 /***************************************************************************** 903 ** 904 ** xcb_record_get_context_reply_t * xcb_record_get_context_reply 905 ** 906 ** @param xcb_connection_t *c 907 ** @param xcb_record_get_context_cookie_t cookie 908 ** @param xcb_generic_error_t **e 909 ** @returns xcb_record_get_context_reply_t * 910 ** 911 *****************************************************************************/ 912 913 xcb_record_get_context_reply_t * 914 xcb_record_get_context_reply (xcb_connection_t *c /**< */, 915 xcb_record_get_context_cookie_t cookie /**< */, 916 xcb_generic_error_t **e /**< */) 917 { 918 return (xcb_record_get_context_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 919 } 920 921 922 /***************************************************************************** 923 ** 924 ** xcb_record_enable_context_cookie_t xcb_record_enable_context 925 ** 926 ** @param xcb_connection_t *c 927 ** @param xcb_record_context_t context 928 ** @returns xcb_record_enable_context_cookie_t 929 ** 930 *****************************************************************************/ 931 932 xcb_record_enable_context_cookie_t 933 xcb_record_enable_context (xcb_connection_t *c /**< */, 934 xcb_record_context_t context /**< */) 935 { 936 static const xcb_protocol_request_t xcb_req = { 937 /* count */ 2, 938 /* ext */ &xcb_record_id, 939 /* opcode */ XCB_RECORD_ENABLE_CONTEXT, 940 /* isvoid */ 0 941 }; 942 943 struct iovec xcb_parts[4]; 944 xcb_record_enable_context_cookie_t xcb_ret; 945 xcb_record_enable_context_request_t xcb_out; 946 947 xcb_out.context = context; 948 949 xcb_parts[2].iov_base = (char *) &xcb_out; 950 xcb_parts[2].iov_len = sizeof(xcb_out); 951 xcb_parts[3].iov_base = 0; 952 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 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_record_enable_context_cookie_t xcb_record_enable_context_unchecked 961 ** 962 ** @param xcb_connection_t *c 963 ** @param xcb_record_context_t context 964 ** @returns xcb_record_enable_context_cookie_t 965 ** 966 *****************************************************************************/ 967 968 xcb_record_enable_context_cookie_t 969 xcb_record_enable_context_unchecked (xcb_connection_t *c /**< */, 970 xcb_record_context_t context /**< */) 971 { 972 static const xcb_protocol_request_t xcb_req = { 973 /* count */ 2, 974 /* ext */ &xcb_record_id, 975 /* opcode */ XCB_RECORD_ENABLE_CONTEXT, 976 /* isvoid */ 0 977 }; 978 979 struct iovec xcb_parts[4]; 980 xcb_record_enable_context_cookie_t xcb_ret; 981 xcb_record_enable_context_request_t xcb_out; 982 983 xcb_out.context = context; 984 985 xcb_parts[2].iov_base = (char *) &xcb_out; 986 xcb_parts[2].iov_len = sizeof(xcb_out); 987 xcb_parts[3].iov_base = 0; 988 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 989 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 990 return xcb_ret; 991 } 992 993 994 /***************************************************************************** 995 ** 996 ** uint8_t * xcb_record_enable_context_data 997 ** 998 ** @param const xcb_record_enable_context_reply_t *R 999 ** @returns uint8_t * 1000 ** 1001 *****************************************************************************/ 1002 1003 uint8_t * 1004 xcb_record_enable_context_data (const xcb_record_enable_context_reply_t *R /**< */) 1005 { 1006 return (uint8_t *) (R + 1); 1007 } 1008 1009 1010 /***************************************************************************** 1011 ** 1012 ** int xcb_record_enable_context_data_length 1013 ** 1014 ** @param const xcb_record_enable_context_reply_t *R 1015 ** @returns int 1016 ** 1017 *****************************************************************************/ 1018 1019 int 1020 xcb_record_enable_context_data_length (const xcb_record_enable_context_reply_t *R /**< */) 1021 { 1022 return (R->length * 4); 1023 } 1024 1025 1026 /***************************************************************************** 1027 ** 1028 ** xcb_generic_iterator_t xcb_record_enable_context_data_end 1029 ** 1030 ** @param const xcb_record_enable_context_reply_t *R 1031 ** @returns xcb_generic_iterator_t 1032 ** 1033 *****************************************************************************/ 1034 1035 xcb_generic_iterator_t 1036 xcb_record_enable_context_data_end (const xcb_record_enable_context_reply_t *R /**< */) 1037 { 1038 xcb_generic_iterator_t i; 1039 i.data = ((uint8_t *) (R + 1)) + ((R->length * 4)); 1040 i.rem = 0; 1041 i.index = (char *) i.data - (char *) R; 1042 return i; 1043 } 1044 1045 1046 /***************************************************************************** 1047 ** 1048 ** xcb_record_enable_context_reply_t * xcb_record_enable_context_reply 1049 ** 1050 ** @param xcb_connection_t *c 1051 ** @param xcb_record_enable_context_cookie_t cookie 1052 ** @param xcb_generic_error_t **e 1053 ** @returns xcb_record_enable_context_reply_t * 1054 ** 1055 *****************************************************************************/ 1056 1057 xcb_record_enable_context_reply_t * 1058 xcb_record_enable_context_reply (xcb_connection_t *c /**< */, 1059 xcb_record_enable_context_cookie_t cookie /**< */, 1060 xcb_generic_error_t **e /**< */) 1061 { 1062 return (xcb_record_enable_context_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 1063 } 1064 1065 1066 /***************************************************************************** 1067 ** 1068 ** xcb_void_cookie_t xcb_record_disable_context_checked 1069 ** 1070 ** @param xcb_connection_t *c 1071 ** @param xcb_record_context_t context 1072 ** @returns xcb_void_cookie_t 1073 ** 1074 *****************************************************************************/ 1075 1076 xcb_void_cookie_t 1077 xcb_record_disable_context_checked (xcb_connection_t *c /**< */, 1078 xcb_record_context_t context /**< */) 1079 { 1080 static const xcb_protocol_request_t xcb_req = { 1081 /* count */ 2, 1082 /* ext */ &xcb_record_id, 1083 /* opcode */ XCB_RECORD_DISABLE_CONTEXT, 1084 /* isvoid */ 1 1085 }; 1086 1087 struct iovec xcb_parts[4]; 1088 xcb_void_cookie_t xcb_ret; 1089 xcb_record_disable_context_request_t xcb_out; 1090 1091 xcb_out.context = context; 1092 1093 xcb_parts[2].iov_base = (char *) &xcb_out; 1094 xcb_parts[2].iov_len = sizeof(xcb_out); 1095 xcb_parts[3].iov_base = 0; 1096 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1097 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 1098 return xcb_ret; 1099 } 1100 1101 1102 /***************************************************************************** 1103 ** 1104 ** xcb_void_cookie_t xcb_record_disable_context 1105 ** 1106 ** @param xcb_connection_t *c 1107 ** @param xcb_record_context_t context 1108 ** @returns xcb_void_cookie_t 1109 ** 1110 *****************************************************************************/ 1111 1112 xcb_void_cookie_t 1113 xcb_record_disable_context (xcb_connection_t *c /**< */, 1114 xcb_record_context_t context /**< */) 1115 { 1116 static const xcb_protocol_request_t xcb_req = { 1117 /* count */ 2, 1118 /* ext */ &xcb_record_id, 1119 /* opcode */ XCB_RECORD_DISABLE_CONTEXT, 1120 /* isvoid */ 1 1121 }; 1122 1123 struct iovec xcb_parts[4]; 1124 xcb_void_cookie_t xcb_ret; 1125 xcb_record_disable_context_request_t xcb_out; 1126 1127 xcb_out.context = context; 1128 1129 xcb_parts[2].iov_base = (char *) &xcb_out; 1130 xcb_parts[2].iov_len = sizeof(xcb_out); 1131 xcb_parts[3].iov_base = 0; 1132 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1133 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 1134 return xcb_ret; 1135 } 1136 1137 1138 /***************************************************************************** 1139 ** 1140 ** xcb_void_cookie_t xcb_record_free_context_checked 1141 ** 1142 ** @param xcb_connection_t *c 1143 ** @param xcb_record_context_t context 1144 ** @returns xcb_void_cookie_t 1145 ** 1146 *****************************************************************************/ 1147 1148 xcb_void_cookie_t 1149 xcb_record_free_context_checked (xcb_connection_t *c /**< */, 1150 xcb_record_context_t context /**< */) 1151 { 1152 static const xcb_protocol_request_t xcb_req = { 1153 /* count */ 2, 1154 /* ext */ &xcb_record_id, 1155 /* opcode */ XCB_RECORD_FREE_CONTEXT, 1156 /* isvoid */ 1 1157 }; 1158 1159 struct iovec xcb_parts[4]; 1160 xcb_void_cookie_t xcb_ret; 1161 xcb_record_free_context_request_t xcb_out; 1162 1163 xcb_out.context = context; 1164 1165 xcb_parts[2].iov_base = (char *) &xcb_out; 1166 xcb_parts[2].iov_len = sizeof(xcb_out); 1167 xcb_parts[3].iov_base = 0; 1168 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1169 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 1170 return xcb_ret; 1171 } 1172 1173 1174 /***************************************************************************** 1175 ** 1176 ** xcb_void_cookie_t xcb_record_free_context 1177 ** 1178 ** @param xcb_connection_t *c 1179 ** @param xcb_record_context_t context 1180 ** @returns xcb_void_cookie_t 1181 ** 1182 *****************************************************************************/ 1183 1184 xcb_void_cookie_t 1185 xcb_record_free_context (xcb_connection_t *c /**< */, 1186 xcb_record_context_t context /**< */) 1187 { 1188 static const xcb_protocol_request_t xcb_req = { 1189 /* count */ 2, 1190 /* ext */ &xcb_record_id, 1191 /* opcode */ XCB_RECORD_FREE_CONTEXT, 1192 /* isvoid */ 1 1193 }; 1194 1195 struct iovec xcb_parts[4]; 1196 xcb_void_cookie_t xcb_ret; 1197 xcb_record_free_context_request_t xcb_out; 1198 1199 xcb_out.context = context; 1200 1201 xcb_parts[2].iov_base = (char *) &xcb_out; 1202 xcb_parts[2].iov_len = sizeof(xcb_out); 1203 xcb_parts[3].iov_base = 0; 1204 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1205 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 1206 return xcb_ret; 1207 } 1208 1209