1 /* 2 * This file generated automatically from randr.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 "randr.h" 15 16 #define ALIGNOF(type) offsetof(struct { char dummy; type member; }, member) 17 #include "xproto.h" 18 #include "render.h" 19 20 xcb_extension_t xcb_randr_id = { "RANDR", 0 }; 21 22 void 23 xcb_randr_mode_next (xcb_randr_mode_iterator_t *i) 24 { 25 --i->rem; 26 ++i->data; 27 i->index += sizeof(xcb_randr_mode_t); 28 } 29 30 xcb_generic_iterator_t 31 xcb_randr_mode_end (xcb_randr_mode_iterator_t i) 32 { 33 xcb_generic_iterator_t ret; 34 ret.data = i.data + i.rem; 35 ret.index = i.index + ((char *) ret.data - (char *) i.data); 36 ret.rem = 0; 37 return ret; 38 } 39 40 void 41 xcb_randr_crtc_next (xcb_randr_crtc_iterator_t *i) 42 { 43 --i->rem; 44 ++i->data; 45 i->index += sizeof(xcb_randr_crtc_t); 46 } 47 48 xcb_generic_iterator_t 49 xcb_randr_crtc_end (xcb_randr_crtc_iterator_t i) 50 { 51 xcb_generic_iterator_t ret; 52 ret.data = i.data + i.rem; 53 ret.index = i.index + ((char *) ret.data - (char *) i.data); 54 ret.rem = 0; 55 return ret; 56 } 57 58 void 59 xcb_randr_output_next (xcb_randr_output_iterator_t *i) 60 { 61 --i->rem; 62 ++i->data; 63 i->index += sizeof(xcb_randr_output_t); 64 } 65 66 xcb_generic_iterator_t 67 xcb_randr_output_end (xcb_randr_output_iterator_t i) 68 { 69 xcb_generic_iterator_t ret; 70 ret.data = i.data + i.rem; 71 ret.index = i.index + ((char *) ret.data - (char *) i.data); 72 ret.rem = 0; 73 return ret; 74 } 75 76 void 77 xcb_randr_provider_next (xcb_randr_provider_iterator_t *i) 78 { 79 --i->rem; 80 ++i->data; 81 i->index += sizeof(xcb_randr_provider_t); 82 } 83 84 xcb_generic_iterator_t 85 xcb_randr_provider_end (xcb_randr_provider_iterator_t i) 86 { 87 xcb_generic_iterator_t ret; 88 ret.data = i.data + i.rem; 89 ret.index = i.index + ((char *) ret.data - (char *) i.data); 90 ret.rem = 0; 91 return ret; 92 } 93 94 void 95 xcb_randr_lease_next (xcb_randr_lease_iterator_t *i) 96 { 97 --i->rem; 98 ++i->data; 99 i->index += sizeof(xcb_randr_lease_t); 100 } 101 102 xcb_generic_iterator_t 103 xcb_randr_lease_end (xcb_randr_lease_iterator_t i) 104 { 105 xcb_generic_iterator_t ret; 106 ret.data = i.data + i.rem; 107 ret.index = i.index + ((char *) ret.data - (char *) i.data); 108 ret.rem = 0; 109 return ret; 110 } 111 112 void 113 xcb_randr_screen_size_next (xcb_randr_screen_size_iterator_t *i) 114 { 115 --i->rem; 116 ++i->data; 117 i->index += sizeof(xcb_randr_screen_size_t); 118 } 119 120 xcb_generic_iterator_t 121 xcb_randr_screen_size_end (xcb_randr_screen_size_iterator_t i) 122 { 123 xcb_generic_iterator_t ret; 124 ret.data = i.data + i.rem; 125 ret.index = i.index + ((char *) ret.data - (char *) i.data); 126 ret.rem = 0; 127 return ret; 128 } 129 130 int 131 xcb_randr_refresh_rates_sizeof (const void *_buffer) 132 { 133 char *xcb_tmp = (char *)_buffer; 134 const xcb_randr_refresh_rates_t *_aux = (xcb_randr_refresh_rates_t *)_buffer; 135 unsigned int xcb_buffer_len = 0; 136 unsigned int xcb_block_len = 0; 137 unsigned int xcb_pad = 0; 138 unsigned int xcb_align_to = 0; 139 140 141 xcb_block_len += sizeof(xcb_randr_refresh_rates_t); 142 xcb_tmp += xcb_block_len; 143 xcb_buffer_len += xcb_block_len; 144 xcb_block_len = 0; 145 /* rates */ 146 xcb_block_len += _aux->nRates * sizeof(uint16_t); 147 xcb_tmp += xcb_block_len; 148 xcb_align_to = ALIGNOF(uint16_t); 149 /* insert padding */ 150 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 151 xcb_buffer_len += xcb_block_len + xcb_pad; 152 if (0 != xcb_pad) { 153 xcb_tmp += xcb_pad; 154 xcb_pad = 0; 155 } 156 xcb_block_len = 0; 157 158 return xcb_buffer_len; 159 } 160 161 uint16_t * 162 xcb_randr_refresh_rates_rates (const xcb_randr_refresh_rates_t *R) 163 { 164 return (uint16_t *) (R + 1); 165 } 166 167 int 168 xcb_randr_refresh_rates_rates_length (const xcb_randr_refresh_rates_t *R) 169 { 170 return R->nRates; 171 } 172 173 xcb_generic_iterator_t 174 xcb_randr_refresh_rates_rates_end (const xcb_randr_refresh_rates_t *R) 175 { 176 xcb_generic_iterator_t i; 177 i.data = ((uint16_t *) (R + 1)) + (R->nRates); 178 i.rem = 0; 179 i.index = (char *) i.data - (char *) R; 180 return i; 181 } 182 183 void 184 xcb_randr_refresh_rates_next (xcb_randr_refresh_rates_iterator_t *i) 185 { 186 xcb_randr_refresh_rates_t *R = i->data; 187 xcb_generic_iterator_t child; 188 child.data = (xcb_randr_refresh_rates_t *)(((char *)R) + xcb_randr_refresh_rates_sizeof(R)); 189 i->index = (char *) child.data - (char *) i->data; 190 --i->rem; 191 i->data = (xcb_randr_refresh_rates_t *) child.data; 192 } 193 194 xcb_generic_iterator_t 195 xcb_randr_refresh_rates_end (xcb_randr_refresh_rates_iterator_t i) 196 { 197 xcb_generic_iterator_t ret; 198 while(i.rem > 0) 199 xcb_randr_refresh_rates_next(&i); 200 ret.data = i.data; 201 ret.rem = i.rem; 202 ret.index = i.index; 203 return ret; 204 } 205 206 xcb_randr_query_version_cookie_t 207 xcb_randr_query_version (xcb_connection_t *c, 208 uint32_t major_version, 209 uint32_t minor_version) 210 { 211 static const xcb_protocol_request_t xcb_req = { 212 .count = 2, 213 .ext = &xcb_randr_id, 214 .opcode = XCB_RANDR_QUERY_VERSION, 215 .isvoid = 0 216 }; 217 218 struct iovec xcb_parts[4]; 219 xcb_randr_query_version_cookie_t xcb_ret; 220 xcb_randr_query_version_request_t xcb_out; 221 222 xcb_out.major_version = major_version; 223 xcb_out.minor_version = minor_version; 224 225 xcb_parts[2].iov_base = (char *) &xcb_out; 226 xcb_parts[2].iov_len = sizeof(xcb_out); 227 xcb_parts[3].iov_base = 0; 228 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 229 230 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 231 return xcb_ret; 232 } 233 234 xcb_randr_query_version_cookie_t 235 xcb_randr_query_version_unchecked (xcb_connection_t *c, 236 uint32_t major_version, 237 uint32_t minor_version) 238 { 239 static const xcb_protocol_request_t xcb_req = { 240 .count = 2, 241 .ext = &xcb_randr_id, 242 .opcode = XCB_RANDR_QUERY_VERSION, 243 .isvoid = 0 244 }; 245 246 struct iovec xcb_parts[4]; 247 xcb_randr_query_version_cookie_t xcb_ret; 248 xcb_randr_query_version_request_t xcb_out; 249 250 xcb_out.major_version = major_version; 251 xcb_out.minor_version = minor_version; 252 253 xcb_parts[2].iov_base = (char *) &xcb_out; 254 xcb_parts[2].iov_len = sizeof(xcb_out); 255 xcb_parts[3].iov_base = 0; 256 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 257 258 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 259 return xcb_ret; 260 } 261 262 xcb_randr_query_version_reply_t * 263 xcb_randr_query_version_reply (xcb_connection_t *c, 264 xcb_randr_query_version_cookie_t cookie /**< */, 265 xcb_generic_error_t **e) 266 { 267 return (xcb_randr_query_version_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 268 } 269 270 xcb_randr_set_screen_config_cookie_t 271 xcb_randr_set_screen_config (xcb_connection_t *c, 272 xcb_window_t window, 273 xcb_timestamp_t timestamp, 274 xcb_timestamp_t config_timestamp, 275 uint16_t sizeID, 276 uint16_t rotation, 277 uint16_t rate) 278 { 279 static const xcb_protocol_request_t xcb_req = { 280 .count = 2, 281 .ext = &xcb_randr_id, 282 .opcode = XCB_RANDR_SET_SCREEN_CONFIG, 283 .isvoid = 0 284 }; 285 286 struct iovec xcb_parts[4]; 287 xcb_randr_set_screen_config_cookie_t xcb_ret; 288 xcb_randr_set_screen_config_request_t xcb_out; 289 290 xcb_out.window = window; 291 xcb_out.timestamp = timestamp; 292 xcb_out.config_timestamp = config_timestamp; 293 xcb_out.sizeID = sizeID; 294 xcb_out.rotation = rotation; 295 xcb_out.rate = rate; 296 memset(xcb_out.pad0, 0, 2); 297 298 xcb_parts[2].iov_base = (char *) &xcb_out; 299 xcb_parts[2].iov_len = sizeof(xcb_out); 300 xcb_parts[3].iov_base = 0; 301 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 302 303 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 304 return xcb_ret; 305 } 306 307 xcb_randr_set_screen_config_cookie_t 308 xcb_randr_set_screen_config_unchecked (xcb_connection_t *c, 309 xcb_window_t window, 310 xcb_timestamp_t timestamp, 311 xcb_timestamp_t config_timestamp, 312 uint16_t sizeID, 313 uint16_t rotation, 314 uint16_t rate) 315 { 316 static const xcb_protocol_request_t xcb_req = { 317 .count = 2, 318 .ext = &xcb_randr_id, 319 .opcode = XCB_RANDR_SET_SCREEN_CONFIG, 320 .isvoid = 0 321 }; 322 323 struct iovec xcb_parts[4]; 324 xcb_randr_set_screen_config_cookie_t xcb_ret; 325 xcb_randr_set_screen_config_request_t xcb_out; 326 327 xcb_out.window = window; 328 xcb_out.timestamp = timestamp; 329 xcb_out.config_timestamp = config_timestamp; 330 xcb_out.sizeID = sizeID; 331 xcb_out.rotation = rotation; 332 xcb_out.rate = rate; 333 memset(xcb_out.pad0, 0, 2); 334 335 xcb_parts[2].iov_base = (char *) &xcb_out; 336 xcb_parts[2].iov_len = sizeof(xcb_out); 337 xcb_parts[3].iov_base = 0; 338 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 339 340 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 341 return xcb_ret; 342 } 343 344 xcb_randr_set_screen_config_reply_t * 345 xcb_randr_set_screen_config_reply (xcb_connection_t *c, 346 xcb_randr_set_screen_config_cookie_t cookie /**< */, 347 xcb_generic_error_t **e) 348 { 349 return (xcb_randr_set_screen_config_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 350 } 351 352 xcb_void_cookie_t 353 xcb_randr_select_input_checked (xcb_connection_t *c, 354 xcb_window_t window, 355 uint16_t enable) 356 { 357 static const xcb_protocol_request_t xcb_req = { 358 .count = 2, 359 .ext = &xcb_randr_id, 360 .opcode = XCB_RANDR_SELECT_INPUT, 361 .isvoid = 1 362 }; 363 364 struct iovec xcb_parts[4]; 365 xcb_void_cookie_t xcb_ret; 366 xcb_randr_select_input_request_t xcb_out; 367 368 xcb_out.window = window; 369 xcb_out.enable = enable; 370 memset(xcb_out.pad0, 0, 2); 371 372 xcb_parts[2].iov_base = (char *) &xcb_out; 373 xcb_parts[2].iov_len = sizeof(xcb_out); 374 xcb_parts[3].iov_base = 0; 375 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 376 377 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 378 return xcb_ret; 379 } 380 381 xcb_void_cookie_t 382 xcb_randr_select_input (xcb_connection_t *c, 383 xcb_window_t window, 384 uint16_t enable) 385 { 386 static const xcb_protocol_request_t xcb_req = { 387 .count = 2, 388 .ext = &xcb_randr_id, 389 .opcode = XCB_RANDR_SELECT_INPUT, 390 .isvoid = 1 391 }; 392 393 struct iovec xcb_parts[4]; 394 xcb_void_cookie_t xcb_ret; 395 xcb_randr_select_input_request_t xcb_out; 396 397 xcb_out.window = window; 398 xcb_out.enable = enable; 399 memset(xcb_out.pad0, 0, 2); 400 401 xcb_parts[2].iov_base = (char *) &xcb_out; 402 xcb_parts[2].iov_len = sizeof(xcb_out); 403 xcb_parts[3].iov_base = 0; 404 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 405 406 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 407 return xcb_ret; 408 } 409 410 int 411 xcb_randr_get_screen_info_sizeof (const void *_buffer) 412 { 413 char *xcb_tmp = (char *)_buffer; 414 const xcb_randr_get_screen_info_reply_t *_aux = (xcb_randr_get_screen_info_reply_t *)_buffer; 415 unsigned int xcb_buffer_len = 0; 416 unsigned int xcb_block_len = 0; 417 unsigned int xcb_pad = 0; 418 unsigned int xcb_align_to = 0; 419 420 unsigned int i; 421 unsigned int xcb_tmp_len; 422 423 xcb_block_len += sizeof(xcb_randr_get_screen_info_reply_t); 424 xcb_tmp += xcb_block_len; 425 xcb_buffer_len += xcb_block_len; 426 xcb_block_len = 0; 427 /* sizes */ 428 xcb_block_len += _aux->nSizes * sizeof(xcb_randr_screen_size_t); 429 xcb_tmp += xcb_block_len; 430 xcb_align_to = ALIGNOF(xcb_randr_screen_size_t); 431 /* insert padding */ 432 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 433 xcb_buffer_len += xcb_block_len + xcb_pad; 434 if (0 != xcb_pad) { 435 xcb_tmp += xcb_pad; 436 xcb_pad = 0; 437 } 438 xcb_block_len = 0; 439 /* rates */ 440 for(i=0; i<(_aux->nInfo - _aux->nSizes); i++) { 441 xcb_tmp_len = xcb_randr_refresh_rates_sizeof(xcb_tmp); 442 xcb_block_len += xcb_tmp_len; 443 xcb_tmp += xcb_tmp_len; 444 } 445 xcb_align_to = ALIGNOF(xcb_randr_refresh_rates_t); 446 /* insert padding */ 447 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 448 xcb_buffer_len += xcb_block_len + xcb_pad; 449 if (0 != xcb_pad) { 450 xcb_tmp += xcb_pad; 451 xcb_pad = 0; 452 } 453 xcb_block_len = 0; 454 455 return xcb_buffer_len; 456 } 457 458 xcb_randr_get_screen_info_cookie_t 459 xcb_randr_get_screen_info (xcb_connection_t *c, 460 xcb_window_t window) 461 { 462 static const xcb_protocol_request_t xcb_req = { 463 .count = 2, 464 .ext = &xcb_randr_id, 465 .opcode = XCB_RANDR_GET_SCREEN_INFO, 466 .isvoid = 0 467 }; 468 469 struct iovec xcb_parts[4]; 470 xcb_randr_get_screen_info_cookie_t xcb_ret; 471 xcb_randr_get_screen_info_request_t xcb_out; 472 473 xcb_out.window = window; 474 475 xcb_parts[2].iov_base = (char *) &xcb_out; 476 xcb_parts[2].iov_len = sizeof(xcb_out); 477 xcb_parts[3].iov_base = 0; 478 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 479 480 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 481 return xcb_ret; 482 } 483 484 xcb_randr_get_screen_info_cookie_t 485 xcb_randr_get_screen_info_unchecked (xcb_connection_t *c, 486 xcb_window_t window) 487 { 488 static const xcb_protocol_request_t xcb_req = { 489 .count = 2, 490 .ext = &xcb_randr_id, 491 .opcode = XCB_RANDR_GET_SCREEN_INFO, 492 .isvoid = 0 493 }; 494 495 struct iovec xcb_parts[4]; 496 xcb_randr_get_screen_info_cookie_t xcb_ret; 497 xcb_randr_get_screen_info_request_t xcb_out; 498 499 xcb_out.window = window; 500 501 xcb_parts[2].iov_base = (char *) &xcb_out; 502 xcb_parts[2].iov_len = sizeof(xcb_out); 503 xcb_parts[3].iov_base = 0; 504 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 505 506 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 507 return xcb_ret; 508 } 509 510 xcb_randr_screen_size_t * 511 xcb_randr_get_screen_info_sizes (const xcb_randr_get_screen_info_reply_t *R) 512 { 513 return (xcb_randr_screen_size_t *) (R + 1); 514 } 515 516 int 517 xcb_randr_get_screen_info_sizes_length (const xcb_randr_get_screen_info_reply_t *R) 518 { 519 return R->nSizes; 520 } 521 522 xcb_randr_screen_size_iterator_t 523 xcb_randr_get_screen_info_sizes_iterator (const xcb_randr_get_screen_info_reply_t *R) 524 { 525 xcb_randr_screen_size_iterator_t i; 526 i.data = (xcb_randr_screen_size_t *) (R + 1); 527 i.rem = R->nSizes; 528 i.index = (char *) i.data - (char *) R; 529 return i; 530 } 531 532 int 533 xcb_randr_get_screen_info_rates_length (const xcb_randr_get_screen_info_reply_t *R) 534 { 535 return (R->nInfo - R->nSizes); 536 } 537 538 xcb_randr_refresh_rates_iterator_t 539 xcb_randr_get_screen_info_rates_iterator (const xcb_randr_get_screen_info_reply_t *R) 540 { 541 xcb_randr_refresh_rates_iterator_t i; 542 xcb_generic_iterator_t prev = xcb_randr_screen_size_end(xcb_randr_get_screen_info_sizes_iterator(R)); 543 i.data = (xcb_randr_refresh_rates_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_randr_refresh_rates_t, prev.index)); 544 i.rem = (R->nInfo - R->nSizes); 545 i.index = (char *) i.data - (char *) R; 546 return i; 547 } 548 549 xcb_randr_get_screen_info_reply_t * 550 xcb_randr_get_screen_info_reply (xcb_connection_t *c, 551 xcb_randr_get_screen_info_cookie_t cookie /**< */, 552 xcb_generic_error_t **e) 553 { 554 return (xcb_randr_get_screen_info_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 555 } 556 557 xcb_randr_get_screen_size_range_cookie_t 558 xcb_randr_get_screen_size_range (xcb_connection_t *c, 559 xcb_window_t window) 560 { 561 static const xcb_protocol_request_t xcb_req = { 562 .count = 2, 563 .ext = &xcb_randr_id, 564 .opcode = XCB_RANDR_GET_SCREEN_SIZE_RANGE, 565 .isvoid = 0 566 }; 567 568 struct iovec xcb_parts[4]; 569 xcb_randr_get_screen_size_range_cookie_t xcb_ret; 570 xcb_randr_get_screen_size_range_request_t xcb_out; 571 572 xcb_out.window = window; 573 574 xcb_parts[2].iov_base = (char *) &xcb_out; 575 xcb_parts[2].iov_len = sizeof(xcb_out); 576 xcb_parts[3].iov_base = 0; 577 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 578 579 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 580 return xcb_ret; 581 } 582 583 xcb_randr_get_screen_size_range_cookie_t 584 xcb_randr_get_screen_size_range_unchecked (xcb_connection_t *c, 585 xcb_window_t window) 586 { 587 static const xcb_protocol_request_t xcb_req = { 588 .count = 2, 589 .ext = &xcb_randr_id, 590 .opcode = XCB_RANDR_GET_SCREEN_SIZE_RANGE, 591 .isvoid = 0 592 }; 593 594 struct iovec xcb_parts[4]; 595 xcb_randr_get_screen_size_range_cookie_t xcb_ret; 596 xcb_randr_get_screen_size_range_request_t xcb_out; 597 598 xcb_out.window = window; 599 600 xcb_parts[2].iov_base = (char *) &xcb_out; 601 xcb_parts[2].iov_len = sizeof(xcb_out); 602 xcb_parts[3].iov_base = 0; 603 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 604 605 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 606 return xcb_ret; 607 } 608 609 xcb_randr_get_screen_size_range_reply_t * 610 xcb_randr_get_screen_size_range_reply (xcb_connection_t *c, 611 xcb_randr_get_screen_size_range_cookie_t cookie /**< */, 612 xcb_generic_error_t **e) 613 { 614 return (xcb_randr_get_screen_size_range_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 615 } 616 617 xcb_void_cookie_t 618 xcb_randr_set_screen_size_checked (xcb_connection_t *c, 619 xcb_window_t window, 620 uint16_t width, 621 uint16_t height, 622 uint32_t mm_width, 623 uint32_t mm_height) 624 { 625 static const xcb_protocol_request_t xcb_req = { 626 .count = 2, 627 .ext = &xcb_randr_id, 628 .opcode = XCB_RANDR_SET_SCREEN_SIZE, 629 .isvoid = 1 630 }; 631 632 struct iovec xcb_parts[4]; 633 xcb_void_cookie_t xcb_ret; 634 xcb_randr_set_screen_size_request_t xcb_out; 635 636 xcb_out.window = window; 637 xcb_out.width = width; 638 xcb_out.height = height; 639 xcb_out.mm_width = mm_width; 640 xcb_out.mm_height = mm_height; 641 642 xcb_parts[2].iov_base = (char *) &xcb_out; 643 xcb_parts[2].iov_len = sizeof(xcb_out); 644 xcb_parts[3].iov_base = 0; 645 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 646 647 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 648 return xcb_ret; 649 } 650 651 xcb_void_cookie_t 652 xcb_randr_set_screen_size (xcb_connection_t *c, 653 xcb_window_t window, 654 uint16_t width, 655 uint16_t height, 656 uint32_t mm_width, 657 uint32_t mm_height) 658 { 659 static const xcb_protocol_request_t xcb_req = { 660 .count = 2, 661 .ext = &xcb_randr_id, 662 .opcode = XCB_RANDR_SET_SCREEN_SIZE, 663 .isvoid = 1 664 }; 665 666 struct iovec xcb_parts[4]; 667 xcb_void_cookie_t xcb_ret; 668 xcb_randr_set_screen_size_request_t xcb_out; 669 670 xcb_out.window = window; 671 xcb_out.width = width; 672 xcb_out.height = height; 673 xcb_out.mm_width = mm_width; 674 xcb_out.mm_height = mm_height; 675 676 xcb_parts[2].iov_base = (char *) &xcb_out; 677 xcb_parts[2].iov_len = sizeof(xcb_out); 678 xcb_parts[3].iov_base = 0; 679 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 680 681 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 682 return xcb_ret; 683 } 684 685 void 686 xcb_randr_mode_info_next (xcb_randr_mode_info_iterator_t *i) 687 { 688 --i->rem; 689 ++i->data; 690 i->index += sizeof(xcb_randr_mode_info_t); 691 } 692 693 xcb_generic_iterator_t 694 xcb_randr_mode_info_end (xcb_randr_mode_info_iterator_t i) 695 { 696 xcb_generic_iterator_t ret; 697 ret.data = i.data + i.rem; 698 ret.index = i.index + ((char *) ret.data - (char *) i.data); 699 ret.rem = 0; 700 return ret; 701 } 702 703 int 704 xcb_randr_get_screen_resources_sizeof (const void *_buffer) 705 { 706 char *xcb_tmp = (char *)_buffer; 707 const xcb_randr_get_screen_resources_reply_t *_aux = (xcb_randr_get_screen_resources_reply_t *)_buffer; 708 unsigned int xcb_buffer_len = 0; 709 unsigned int xcb_block_len = 0; 710 unsigned int xcb_pad = 0; 711 unsigned int xcb_align_to = 0; 712 713 714 xcb_block_len += sizeof(xcb_randr_get_screen_resources_reply_t); 715 xcb_tmp += xcb_block_len; 716 xcb_buffer_len += xcb_block_len; 717 xcb_block_len = 0; 718 /* crtcs */ 719 xcb_block_len += _aux->num_crtcs * sizeof(uint32_t); 720 xcb_tmp += xcb_block_len; 721 xcb_align_to = ALIGNOF(xcb_randr_crtc_t); 722 /* insert padding */ 723 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 724 xcb_buffer_len += xcb_block_len + xcb_pad; 725 if (0 != xcb_pad) { 726 xcb_tmp += xcb_pad; 727 xcb_pad = 0; 728 } 729 xcb_block_len = 0; 730 /* outputs */ 731 xcb_block_len += _aux->num_outputs * sizeof(uint32_t); 732 xcb_tmp += xcb_block_len; 733 xcb_align_to = ALIGNOF(xcb_randr_output_t); 734 /* insert padding */ 735 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 736 xcb_buffer_len += xcb_block_len + xcb_pad; 737 if (0 != xcb_pad) { 738 xcb_tmp += xcb_pad; 739 xcb_pad = 0; 740 } 741 xcb_block_len = 0; 742 /* modes */ 743 xcb_block_len += _aux->num_modes * sizeof(xcb_randr_mode_info_t); 744 xcb_tmp += xcb_block_len; 745 xcb_align_to = ALIGNOF(xcb_randr_mode_info_t); 746 /* insert padding */ 747 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 748 xcb_buffer_len += xcb_block_len + xcb_pad; 749 if (0 != xcb_pad) { 750 xcb_tmp += xcb_pad; 751 xcb_pad = 0; 752 } 753 xcb_block_len = 0; 754 /* names */ 755 xcb_block_len += _aux->names_len * sizeof(uint8_t); 756 xcb_tmp += xcb_block_len; 757 xcb_align_to = ALIGNOF(uint8_t); 758 /* insert padding */ 759 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 760 xcb_buffer_len += xcb_block_len + xcb_pad; 761 if (0 != xcb_pad) { 762 xcb_tmp += xcb_pad; 763 xcb_pad = 0; 764 } 765 xcb_block_len = 0; 766 767 return xcb_buffer_len; 768 } 769 770 xcb_randr_get_screen_resources_cookie_t 771 xcb_randr_get_screen_resources (xcb_connection_t *c, 772 xcb_window_t window) 773 { 774 static const xcb_protocol_request_t xcb_req = { 775 .count = 2, 776 .ext = &xcb_randr_id, 777 .opcode = XCB_RANDR_GET_SCREEN_RESOURCES, 778 .isvoid = 0 779 }; 780 781 struct iovec xcb_parts[4]; 782 xcb_randr_get_screen_resources_cookie_t xcb_ret; 783 xcb_randr_get_screen_resources_request_t xcb_out; 784 785 xcb_out.window = window; 786 787 xcb_parts[2].iov_base = (char *) &xcb_out; 788 xcb_parts[2].iov_len = sizeof(xcb_out); 789 xcb_parts[3].iov_base = 0; 790 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 791 792 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 793 return xcb_ret; 794 } 795 796 xcb_randr_get_screen_resources_cookie_t 797 xcb_randr_get_screen_resources_unchecked (xcb_connection_t *c, 798 xcb_window_t window) 799 { 800 static const xcb_protocol_request_t xcb_req = { 801 .count = 2, 802 .ext = &xcb_randr_id, 803 .opcode = XCB_RANDR_GET_SCREEN_RESOURCES, 804 .isvoid = 0 805 }; 806 807 struct iovec xcb_parts[4]; 808 xcb_randr_get_screen_resources_cookie_t xcb_ret; 809 xcb_randr_get_screen_resources_request_t xcb_out; 810 811 xcb_out.window = window; 812 813 xcb_parts[2].iov_base = (char *) &xcb_out; 814 xcb_parts[2].iov_len = sizeof(xcb_out); 815 xcb_parts[3].iov_base = 0; 816 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 817 818 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 819 return xcb_ret; 820 } 821 822 xcb_randr_crtc_t * 823 xcb_randr_get_screen_resources_crtcs (const xcb_randr_get_screen_resources_reply_t *R) 824 { 825 return (xcb_randr_crtc_t *) (R + 1); 826 } 827 828 int 829 xcb_randr_get_screen_resources_crtcs_length (const xcb_randr_get_screen_resources_reply_t *R) 830 { 831 return R->num_crtcs; 832 } 833 834 xcb_generic_iterator_t 835 xcb_randr_get_screen_resources_crtcs_end (const xcb_randr_get_screen_resources_reply_t *R) 836 { 837 xcb_generic_iterator_t i; 838 i.data = ((xcb_randr_crtc_t *) (R + 1)) + (R->num_crtcs); 839 i.rem = 0; 840 i.index = (char *) i.data - (char *) R; 841 return i; 842 } 843 844 xcb_randr_output_t * 845 xcb_randr_get_screen_resources_outputs (const xcb_randr_get_screen_resources_reply_t *R) 846 { 847 xcb_generic_iterator_t prev = xcb_randr_get_screen_resources_crtcs_end(R); 848 return (xcb_randr_output_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_randr_output_t, prev.index) + 0); 849 } 850 851 int 852 xcb_randr_get_screen_resources_outputs_length (const xcb_randr_get_screen_resources_reply_t *R) 853 { 854 return R->num_outputs; 855 } 856 857 xcb_generic_iterator_t 858 xcb_randr_get_screen_resources_outputs_end (const xcb_randr_get_screen_resources_reply_t *R) 859 { 860 xcb_generic_iterator_t i; 861 xcb_generic_iterator_t prev = xcb_randr_get_screen_resources_crtcs_end(R); 862 i.data = ((xcb_randr_output_t *) ((char*) prev.data + XCB_TYPE_PAD(xcb_randr_output_t, prev.index))) + (R->num_outputs); 863 i.rem = 0; 864 i.index = (char *) i.data - (char *) R; 865 return i; 866 } 867 868 xcb_randr_mode_info_t * 869 xcb_randr_get_screen_resources_modes (const xcb_randr_get_screen_resources_reply_t *R) 870 { 871 xcb_generic_iterator_t prev = xcb_randr_get_screen_resources_outputs_end(R); 872 return (xcb_randr_mode_info_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_randr_mode_info_t, prev.index) + 0); 873 } 874 875 int 876 xcb_randr_get_screen_resources_modes_length (const xcb_randr_get_screen_resources_reply_t *R) 877 { 878 return R->num_modes; 879 } 880 881 xcb_randr_mode_info_iterator_t 882 xcb_randr_get_screen_resources_modes_iterator (const xcb_randr_get_screen_resources_reply_t *R) 883 { 884 xcb_randr_mode_info_iterator_t i; 885 xcb_generic_iterator_t prev = xcb_randr_get_screen_resources_outputs_end(R); 886 i.data = (xcb_randr_mode_info_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_randr_mode_info_t, prev.index)); 887 i.rem = R->num_modes; 888 i.index = (char *) i.data - (char *) R; 889 return i; 890 } 891 892 uint8_t * 893 xcb_randr_get_screen_resources_names (const xcb_randr_get_screen_resources_reply_t *R) 894 { 895 xcb_generic_iterator_t prev = xcb_randr_mode_info_end(xcb_randr_get_screen_resources_modes_iterator(R)); 896 return (uint8_t *) ((char *) prev.data + XCB_TYPE_PAD(uint8_t, prev.index) + 0); 897 } 898 899 int 900 xcb_randr_get_screen_resources_names_length (const xcb_randr_get_screen_resources_reply_t *R) 901 { 902 return R->names_len; 903 } 904 905 xcb_generic_iterator_t 906 xcb_randr_get_screen_resources_names_end (const xcb_randr_get_screen_resources_reply_t *R) 907 { 908 xcb_generic_iterator_t i; 909 xcb_generic_iterator_t prev = xcb_randr_mode_info_end(xcb_randr_get_screen_resources_modes_iterator(R)); 910 i.data = ((uint8_t *) ((char*) prev.data + XCB_TYPE_PAD(uint8_t, prev.index))) + (R->names_len); 911 i.rem = 0; 912 i.index = (char *) i.data - (char *) R; 913 return i; 914 } 915 916 xcb_randr_get_screen_resources_reply_t * 917 xcb_randr_get_screen_resources_reply (xcb_connection_t *c, 918 xcb_randr_get_screen_resources_cookie_t cookie /**< */, 919 xcb_generic_error_t **e) 920 { 921 return (xcb_randr_get_screen_resources_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 922 } 923 924 int 925 xcb_randr_get_output_info_sizeof (const void *_buffer) 926 { 927 char *xcb_tmp = (char *)_buffer; 928 const xcb_randr_get_output_info_reply_t *_aux = (xcb_randr_get_output_info_reply_t *)_buffer; 929 unsigned int xcb_buffer_len = 0; 930 unsigned int xcb_block_len = 0; 931 unsigned int xcb_pad = 0; 932 unsigned int xcb_align_to = 0; 933 934 935 xcb_block_len += sizeof(xcb_randr_get_output_info_reply_t); 936 xcb_tmp += xcb_block_len; 937 xcb_buffer_len += xcb_block_len; 938 xcb_block_len = 0; 939 /* crtcs */ 940 xcb_block_len += _aux->num_crtcs * sizeof(xcb_randr_output_t); 941 xcb_tmp += xcb_block_len; 942 xcb_align_to = ALIGNOF(xcb_randr_crtc_t); 943 /* insert padding */ 944 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 945 xcb_buffer_len += xcb_block_len + xcb_pad; 946 if (0 != xcb_pad) { 947 xcb_tmp += xcb_pad; 948 xcb_pad = 0; 949 } 950 xcb_block_len = 0; 951 /* modes */ 952 xcb_block_len += _aux->num_modes * sizeof(xcb_randr_output_t); 953 xcb_tmp += xcb_block_len; 954 xcb_align_to = ALIGNOF(xcb_randr_mode_t); 955 /* insert padding */ 956 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 957 xcb_buffer_len += xcb_block_len + xcb_pad; 958 if (0 != xcb_pad) { 959 xcb_tmp += xcb_pad; 960 xcb_pad = 0; 961 } 962 xcb_block_len = 0; 963 /* clones */ 964 xcb_block_len += _aux->num_clones * sizeof(xcb_randr_output_t); 965 xcb_tmp += xcb_block_len; 966 xcb_align_to = ALIGNOF(xcb_randr_output_t); 967 /* insert padding */ 968 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 969 xcb_buffer_len += xcb_block_len + xcb_pad; 970 if (0 != xcb_pad) { 971 xcb_tmp += xcb_pad; 972 xcb_pad = 0; 973 } 974 xcb_block_len = 0; 975 /* name */ 976 xcb_block_len += _aux->name_len * sizeof(uint8_t); 977 xcb_tmp += xcb_block_len; 978 xcb_align_to = ALIGNOF(uint8_t); 979 /* insert padding */ 980 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 981 xcb_buffer_len += xcb_block_len + xcb_pad; 982 if (0 != xcb_pad) { 983 xcb_tmp += xcb_pad; 984 xcb_pad = 0; 985 } 986 xcb_block_len = 0; 987 988 return xcb_buffer_len; 989 } 990 991 xcb_randr_get_output_info_cookie_t 992 xcb_randr_get_output_info (xcb_connection_t *c, 993 xcb_randr_output_t output, 994 xcb_timestamp_t config_timestamp) 995 { 996 static const xcb_protocol_request_t xcb_req = { 997 .count = 2, 998 .ext = &xcb_randr_id, 999 .opcode = XCB_RANDR_GET_OUTPUT_INFO, 1000 .isvoid = 0 1001 }; 1002 1003 struct iovec xcb_parts[4]; 1004 xcb_randr_get_output_info_cookie_t xcb_ret; 1005 xcb_randr_get_output_info_request_t xcb_out; 1006 1007 xcb_out.output = output; 1008 xcb_out.config_timestamp = config_timestamp; 1009 1010 xcb_parts[2].iov_base = (char *) &xcb_out; 1011 xcb_parts[2].iov_len = sizeof(xcb_out); 1012 xcb_parts[3].iov_base = 0; 1013 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1014 1015 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 1016 return xcb_ret; 1017 } 1018 1019 xcb_randr_get_output_info_cookie_t 1020 xcb_randr_get_output_info_unchecked (xcb_connection_t *c, 1021 xcb_randr_output_t output, 1022 xcb_timestamp_t config_timestamp) 1023 { 1024 static const xcb_protocol_request_t xcb_req = { 1025 .count = 2, 1026 .ext = &xcb_randr_id, 1027 .opcode = XCB_RANDR_GET_OUTPUT_INFO, 1028 .isvoid = 0 1029 }; 1030 1031 struct iovec xcb_parts[4]; 1032 xcb_randr_get_output_info_cookie_t xcb_ret; 1033 xcb_randr_get_output_info_request_t xcb_out; 1034 1035 xcb_out.output = output; 1036 xcb_out.config_timestamp = config_timestamp; 1037 1038 xcb_parts[2].iov_base = (char *) &xcb_out; 1039 xcb_parts[2].iov_len = sizeof(xcb_out); 1040 xcb_parts[3].iov_base = 0; 1041 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1042 1043 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 1044 return xcb_ret; 1045 } 1046 1047 xcb_randr_crtc_t * 1048 xcb_randr_get_output_info_crtcs (const xcb_randr_get_output_info_reply_t *R) 1049 { 1050 return (xcb_randr_crtc_t *) (R + 1); 1051 } 1052 1053 int 1054 xcb_randr_get_output_info_crtcs_length (const xcb_randr_get_output_info_reply_t *R) 1055 { 1056 return R->num_crtcs; 1057 } 1058 1059 xcb_generic_iterator_t 1060 xcb_randr_get_output_info_crtcs_end (const xcb_randr_get_output_info_reply_t *R) 1061 { 1062 xcb_generic_iterator_t i; 1063 i.data = ((xcb_randr_crtc_t *) (R + 1)) + (R->num_crtcs); 1064 i.rem = 0; 1065 i.index = (char *) i.data - (char *) R; 1066 return i; 1067 } 1068 1069 xcb_randr_mode_t * 1070 xcb_randr_get_output_info_modes (const xcb_randr_get_output_info_reply_t *R) 1071 { 1072 xcb_generic_iterator_t prev = xcb_randr_get_output_info_crtcs_end(R); 1073 return (xcb_randr_mode_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_randr_mode_t, prev.index) + 0); 1074 } 1075 1076 int 1077 xcb_randr_get_output_info_modes_length (const xcb_randr_get_output_info_reply_t *R) 1078 { 1079 return R->num_modes; 1080 } 1081 1082 xcb_generic_iterator_t 1083 xcb_randr_get_output_info_modes_end (const xcb_randr_get_output_info_reply_t *R) 1084 { 1085 xcb_generic_iterator_t i; 1086 xcb_generic_iterator_t prev = xcb_randr_get_output_info_crtcs_end(R); 1087 i.data = ((xcb_randr_mode_t *) ((char*) prev.data + XCB_TYPE_PAD(xcb_randr_mode_t, prev.index))) + (R->num_modes); 1088 i.rem = 0; 1089 i.index = (char *) i.data - (char *) R; 1090 return i; 1091 } 1092 1093 xcb_randr_output_t * 1094 xcb_randr_get_output_info_clones (const xcb_randr_get_output_info_reply_t *R) 1095 { 1096 xcb_generic_iterator_t prev = xcb_randr_get_output_info_modes_end(R); 1097 return (xcb_randr_output_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_randr_output_t, prev.index) + 0); 1098 } 1099 1100 int 1101 xcb_randr_get_output_info_clones_length (const xcb_randr_get_output_info_reply_t *R) 1102 { 1103 return R->num_clones; 1104 } 1105 1106 xcb_generic_iterator_t 1107 xcb_randr_get_output_info_clones_end (const xcb_randr_get_output_info_reply_t *R) 1108 { 1109 xcb_generic_iterator_t i; 1110 xcb_generic_iterator_t prev = xcb_randr_get_output_info_modes_end(R); 1111 i.data = ((xcb_randr_output_t *) ((char*) prev.data + XCB_TYPE_PAD(xcb_randr_output_t, prev.index))) + (R->num_clones); 1112 i.rem = 0; 1113 i.index = (char *) i.data - (char *) R; 1114 return i; 1115 } 1116 1117 uint8_t * 1118 xcb_randr_get_output_info_name (const xcb_randr_get_output_info_reply_t *R) 1119 { 1120 xcb_generic_iterator_t prev = xcb_randr_get_output_info_clones_end(R); 1121 return (uint8_t *) ((char *) prev.data + XCB_TYPE_PAD(uint8_t, prev.index) + 0); 1122 } 1123 1124 int 1125 xcb_randr_get_output_info_name_length (const xcb_randr_get_output_info_reply_t *R) 1126 { 1127 return R->name_len; 1128 } 1129 1130 xcb_generic_iterator_t 1131 xcb_randr_get_output_info_name_end (const xcb_randr_get_output_info_reply_t *R) 1132 { 1133 xcb_generic_iterator_t i; 1134 xcb_generic_iterator_t prev = xcb_randr_get_output_info_clones_end(R); 1135 i.data = ((uint8_t *) ((char*) prev.data + XCB_TYPE_PAD(uint8_t, prev.index))) + (R->name_len); 1136 i.rem = 0; 1137 i.index = (char *) i.data - (char *) R; 1138 return i; 1139 } 1140 1141 xcb_randr_get_output_info_reply_t * 1142 xcb_randr_get_output_info_reply (xcb_connection_t *c, 1143 xcb_randr_get_output_info_cookie_t cookie /**< */, 1144 xcb_generic_error_t **e) 1145 { 1146 return (xcb_randr_get_output_info_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 1147 } 1148 1149 int 1150 xcb_randr_list_output_properties_sizeof (const void *_buffer) 1151 { 1152 char *xcb_tmp = (char *)_buffer; 1153 const xcb_randr_list_output_properties_reply_t *_aux = (xcb_randr_list_output_properties_reply_t *)_buffer; 1154 unsigned int xcb_buffer_len = 0; 1155 unsigned int xcb_block_len = 0; 1156 unsigned int xcb_pad = 0; 1157 unsigned int xcb_align_to = 0; 1158 1159 1160 xcb_block_len += sizeof(xcb_randr_list_output_properties_reply_t); 1161 xcb_tmp += xcb_block_len; 1162 xcb_buffer_len += xcb_block_len; 1163 xcb_block_len = 0; 1164 /* atoms */ 1165 xcb_block_len += _aux->num_atoms * sizeof(xcb_atom_t); 1166 xcb_tmp += xcb_block_len; 1167 xcb_align_to = ALIGNOF(xcb_atom_t); 1168 /* insert padding */ 1169 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 1170 xcb_buffer_len += xcb_block_len + xcb_pad; 1171 if (0 != xcb_pad) { 1172 xcb_tmp += xcb_pad; 1173 xcb_pad = 0; 1174 } 1175 xcb_block_len = 0; 1176 1177 return xcb_buffer_len; 1178 } 1179 1180 xcb_randr_list_output_properties_cookie_t 1181 xcb_randr_list_output_properties (xcb_connection_t *c, 1182 xcb_randr_output_t output) 1183 { 1184 static const xcb_protocol_request_t xcb_req = { 1185 .count = 2, 1186 .ext = &xcb_randr_id, 1187 .opcode = XCB_RANDR_LIST_OUTPUT_PROPERTIES, 1188 .isvoid = 0 1189 }; 1190 1191 struct iovec xcb_parts[4]; 1192 xcb_randr_list_output_properties_cookie_t xcb_ret; 1193 xcb_randr_list_output_properties_request_t xcb_out; 1194 1195 xcb_out.output = output; 1196 1197 xcb_parts[2].iov_base = (char *) &xcb_out; 1198 xcb_parts[2].iov_len = sizeof(xcb_out); 1199 xcb_parts[3].iov_base = 0; 1200 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1201 1202 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 1203 return xcb_ret; 1204 } 1205 1206 xcb_randr_list_output_properties_cookie_t 1207 xcb_randr_list_output_properties_unchecked (xcb_connection_t *c, 1208 xcb_randr_output_t output) 1209 { 1210 static const xcb_protocol_request_t xcb_req = { 1211 .count = 2, 1212 .ext = &xcb_randr_id, 1213 .opcode = XCB_RANDR_LIST_OUTPUT_PROPERTIES, 1214 .isvoid = 0 1215 }; 1216 1217 struct iovec xcb_parts[4]; 1218 xcb_randr_list_output_properties_cookie_t xcb_ret; 1219 xcb_randr_list_output_properties_request_t xcb_out; 1220 1221 xcb_out.output = output; 1222 1223 xcb_parts[2].iov_base = (char *) &xcb_out; 1224 xcb_parts[2].iov_len = sizeof(xcb_out); 1225 xcb_parts[3].iov_base = 0; 1226 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1227 1228 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 1229 return xcb_ret; 1230 } 1231 1232 xcb_atom_t * 1233 xcb_randr_list_output_properties_atoms (const xcb_randr_list_output_properties_reply_t *R) 1234 { 1235 return (xcb_atom_t *) (R + 1); 1236 } 1237 1238 int 1239 xcb_randr_list_output_properties_atoms_length (const xcb_randr_list_output_properties_reply_t *R) 1240 { 1241 return R->num_atoms; 1242 } 1243 1244 xcb_generic_iterator_t 1245 xcb_randr_list_output_properties_atoms_end (const xcb_randr_list_output_properties_reply_t *R) 1246 { 1247 xcb_generic_iterator_t i; 1248 i.data = ((xcb_atom_t *) (R + 1)) + (R->num_atoms); 1249 i.rem = 0; 1250 i.index = (char *) i.data - (char *) R; 1251 return i; 1252 } 1253 1254 xcb_randr_list_output_properties_reply_t * 1255 xcb_randr_list_output_properties_reply (xcb_connection_t *c, 1256 xcb_randr_list_output_properties_cookie_t cookie /**< */, 1257 xcb_generic_error_t **e) 1258 { 1259 return (xcb_randr_list_output_properties_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 1260 } 1261 1262 int 1263 xcb_randr_query_output_property_sizeof (const void *_buffer) 1264 { 1265 char *xcb_tmp = (char *)_buffer; 1266 const xcb_randr_query_output_property_reply_t *_aux = (xcb_randr_query_output_property_reply_t *)_buffer; 1267 unsigned int xcb_buffer_len = 0; 1268 unsigned int xcb_block_len = 0; 1269 unsigned int xcb_pad = 0; 1270 unsigned int xcb_align_to = 0; 1271 1272 1273 xcb_block_len += sizeof(xcb_randr_query_output_property_reply_t); 1274 xcb_tmp += xcb_block_len; 1275 xcb_buffer_len += xcb_block_len; 1276 xcb_block_len = 0; 1277 /* validValues */ 1278 xcb_block_len += _aux->length * sizeof(int32_t); 1279 xcb_tmp += xcb_block_len; 1280 xcb_align_to = ALIGNOF(int32_t); 1281 /* insert padding */ 1282 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 1283 xcb_buffer_len += xcb_block_len + xcb_pad; 1284 if (0 != xcb_pad) { 1285 xcb_tmp += xcb_pad; 1286 xcb_pad = 0; 1287 } 1288 xcb_block_len = 0; 1289 1290 return xcb_buffer_len; 1291 } 1292 1293 xcb_randr_query_output_property_cookie_t 1294 xcb_randr_query_output_property (xcb_connection_t *c, 1295 xcb_randr_output_t output, 1296 xcb_atom_t property) 1297 { 1298 static const xcb_protocol_request_t xcb_req = { 1299 .count = 2, 1300 .ext = &xcb_randr_id, 1301 .opcode = XCB_RANDR_QUERY_OUTPUT_PROPERTY, 1302 .isvoid = 0 1303 }; 1304 1305 struct iovec xcb_parts[4]; 1306 xcb_randr_query_output_property_cookie_t xcb_ret; 1307 xcb_randr_query_output_property_request_t xcb_out; 1308 1309 xcb_out.output = output; 1310 xcb_out.property = property; 1311 1312 xcb_parts[2].iov_base = (char *) &xcb_out; 1313 xcb_parts[2].iov_len = sizeof(xcb_out); 1314 xcb_parts[3].iov_base = 0; 1315 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1316 1317 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 1318 return xcb_ret; 1319 } 1320 1321 xcb_randr_query_output_property_cookie_t 1322 xcb_randr_query_output_property_unchecked (xcb_connection_t *c, 1323 xcb_randr_output_t output, 1324 xcb_atom_t property) 1325 { 1326 static const xcb_protocol_request_t xcb_req = { 1327 .count = 2, 1328 .ext = &xcb_randr_id, 1329 .opcode = XCB_RANDR_QUERY_OUTPUT_PROPERTY, 1330 .isvoid = 0 1331 }; 1332 1333 struct iovec xcb_parts[4]; 1334 xcb_randr_query_output_property_cookie_t xcb_ret; 1335 xcb_randr_query_output_property_request_t xcb_out; 1336 1337 xcb_out.output = output; 1338 xcb_out.property = property; 1339 1340 xcb_parts[2].iov_base = (char *) &xcb_out; 1341 xcb_parts[2].iov_len = sizeof(xcb_out); 1342 xcb_parts[3].iov_base = 0; 1343 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1344 1345 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 1346 return xcb_ret; 1347 } 1348 1349 int32_t * 1350 xcb_randr_query_output_property_valid_values (const xcb_randr_query_output_property_reply_t *R) 1351 { 1352 return (int32_t *) (R + 1); 1353 } 1354 1355 int 1356 xcb_randr_query_output_property_valid_values_length (const xcb_randr_query_output_property_reply_t *R) 1357 { 1358 return R->length; 1359 } 1360 1361 xcb_generic_iterator_t 1362 xcb_randr_query_output_property_valid_values_end (const xcb_randr_query_output_property_reply_t *R) 1363 { 1364 xcb_generic_iterator_t i; 1365 i.data = ((int32_t *) (R + 1)) + (R->length); 1366 i.rem = 0; 1367 i.index = (char *) i.data - (char *) R; 1368 return i; 1369 } 1370 1371 xcb_randr_query_output_property_reply_t * 1372 xcb_randr_query_output_property_reply (xcb_connection_t *c, 1373 xcb_randr_query_output_property_cookie_t cookie /**< */, 1374 xcb_generic_error_t **e) 1375 { 1376 return (xcb_randr_query_output_property_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 1377 } 1378 1379 int 1380 xcb_randr_configure_output_property_sizeof (const void *_buffer, 1381 uint32_t values_len) 1382 { 1383 char *xcb_tmp = (char *)_buffer; 1384 unsigned int xcb_buffer_len = 0; 1385 unsigned int xcb_block_len = 0; 1386 unsigned int xcb_pad = 0; 1387 unsigned int xcb_align_to = 0; 1388 1389 1390 xcb_block_len += sizeof(xcb_randr_configure_output_property_request_t); 1391 xcb_tmp += xcb_block_len; 1392 xcb_buffer_len += xcb_block_len; 1393 xcb_block_len = 0; 1394 /* values */ 1395 xcb_block_len += values_len * sizeof(int32_t); 1396 xcb_tmp += xcb_block_len; 1397 xcb_align_to = ALIGNOF(int32_t); 1398 /* insert padding */ 1399 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 1400 xcb_buffer_len += xcb_block_len + xcb_pad; 1401 if (0 != xcb_pad) { 1402 xcb_tmp += xcb_pad; 1403 xcb_pad = 0; 1404 } 1405 xcb_block_len = 0; 1406 1407 return xcb_buffer_len; 1408 } 1409 1410 xcb_void_cookie_t 1411 xcb_randr_configure_output_property_checked (xcb_connection_t *c, 1412 xcb_randr_output_t output, 1413 xcb_atom_t property, 1414 uint8_t pending, 1415 uint8_t range, 1416 uint32_t values_len, 1417 const int32_t *values) 1418 { 1419 static const xcb_protocol_request_t xcb_req = { 1420 .count = 4, 1421 .ext = &xcb_randr_id, 1422 .opcode = XCB_RANDR_CONFIGURE_OUTPUT_PROPERTY, 1423 .isvoid = 1 1424 }; 1425 1426 struct iovec xcb_parts[6]; 1427 xcb_void_cookie_t xcb_ret; 1428 xcb_randr_configure_output_property_request_t xcb_out; 1429 1430 xcb_out.output = output; 1431 xcb_out.property = property; 1432 xcb_out.pending = pending; 1433 xcb_out.range = range; 1434 memset(xcb_out.pad0, 0, 2); 1435 1436 xcb_parts[2].iov_base = (char *) &xcb_out; 1437 xcb_parts[2].iov_len = sizeof(xcb_out); 1438 xcb_parts[3].iov_base = 0; 1439 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1440 /* int32_t values */ 1441 xcb_parts[4].iov_base = (char *) values; 1442 xcb_parts[4].iov_len = values_len * sizeof(int32_t); 1443 xcb_parts[5].iov_base = 0; 1444 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 1445 1446 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 1447 return xcb_ret; 1448 } 1449 1450 xcb_void_cookie_t 1451 xcb_randr_configure_output_property (xcb_connection_t *c, 1452 xcb_randr_output_t output, 1453 xcb_atom_t property, 1454 uint8_t pending, 1455 uint8_t range, 1456 uint32_t values_len, 1457 const int32_t *values) 1458 { 1459 static const xcb_protocol_request_t xcb_req = { 1460 .count = 4, 1461 .ext = &xcb_randr_id, 1462 .opcode = XCB_RANDR_CONFIGURE_OUTPUT_PROPERTY, 1463 .isvoid = 1 1464 }; 1465 1466 struct iovec xcb_parts[6]; 1467 xcb_void_cookie_t xcb_ret; 1468 xcb_randr_configure_output_property_request_t xcb_out; 1469 1470 xcb_out.output = output; 1471 xcb_out.property = property; 1472 xcb_out.pending = pending; 1473 xcb_out.range = range; 1474 memset(xcb_out.pad0, 0, 2); 1475 1476 xcb_parts[2].iov_base = (char *) &xcb_out; 1477 xcb_parts[2].iov_len = sizeof(xcb_out); 1478 xcb_parts[3].iov_base = 0; 1479 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1480 /* int32_t values */ 1481 xcb_parts[4].iov_base = (char *) values; 1482 xcb_parts[4].iov_len = values_len * sizeof(int32_t); 1483 xcb_parts[5].iov_base = 0; 1484 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 1485 1486 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 1487 return xcb_ret; 1488 } 1489 1490 int32_t * 1491 xcb_randr_configure_output_property_values (const xcb_randr_configure_output_property_request_t *R) 1492 { 1493 return (int32_t *) (R + 1); 1494 } 1495 1496 int 1497 xcb_randr_configure_output_property_values_length (const xcb_randr_configure_output_property_request_t *R) 1498 { 1499 return (((R->length * 4) - sizeof(xcb_randr_configure_output_property_request_t))/sizeof(int32_t)); 1500 } 1501 1502 xcb_generic_iterator_t 1503 xcb_randr_configure_output_property_values_end (const xcb_randr_configure_output_property_request_t *R) 1504 { 1505 xcb_generic_iterator_t i; 1506 i.data = ((int32_t *) (R + 1)) + ((((R->length * 4) - sizeof(xcb_randr_configure_output_property_request_t))/sizeof(int32_t))); 1507 i.rem = 0; 1508 i.index = (char *) i.data - (char *) R; 1509 return i; 1510 } 1511 1512 int 1513 xcb_randr_change_output_property_sizeof (const void *_buffer) 1514 { 1515 char *xcb_tmp = (char *)_buffer; 1516 const xcb_randr_change_output_property_request_t *_aux = (xcb_randr_change_output_property_request_t *)_buffer; 1517 unsigned int xcb_buffer_len = 0; 1518 unsigned int xcb_block_len = 0; 1519 unsigned int xcb_pad = 0; 1520 unsigned int xcb_align_to = 0; 1521 1522 1523 xcb_block_len += sizeof(xcb_randr_change_output_property_request_t); 1524 xcb_tmp += xcb_block_len; 1525 xcb_buffer_len += xcb_block_len; 1526 xcb_block_len = 0; 1527 /* data */ 1528 xcb_block_len += ((_aux->num_units * _aux->format) / 8) * sizeof(char); 1529 xcb_tmp += xcb_block_len; 1530 xcb_align_to = ALIGNOF(char); 1531 /* insert padding */ 1532 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 1533 xcb_buffer_len += xcb_block_len + xcb_pad; 1534 if (0 != xcb_pad) { 1535 xcb_tmp += xcb_pad; 1536 xcb_pad = 0; 1537 } 1538 xcb_block_len = 0; 1539 1540 return xcb_buffer_len; 1541 } 1542 1543 xcb_void_cookie_t 1544 xcb_randr_change_output_property_checked (xcb_connection_t *c, 1545 xcb_randr_output_t output, 1546 xcb_atom_t property, 1547 xcb_atom_t type, 1548 uint8_t format, 1549 uint8_t mode, 1550 uint32_t num_units, 1551 const void *data) 1552 { 1553 static const xcb_protocol_request_t xcb_req = { 1554 .count = 4, 1555 .ext = &xcb_randr_id, 1556 .opcode = XCB_RANDR_CHANGE_OUTPUT_PROPERTY, 1557 .isvoid = 1 1558 }; 1559 1560 struct iovec xcb_parts[6]; 1561 xcb_void_cookie_t xcb_ret; 1562 xcb_randr_change_output_property_request_t xcb_out; 1563 1564 xcb_out.output = output; 1565 xcb_out.property = property; 1566 xcb_out.type = type; 1567 xcb_out.format = format; 1568 xcb_out.mode = mode; 1569 memset(xcb_out.pad0, 0, 2); 1570 xcb_out.num_units = num_units; 1571 1572 xcb_parts[2].iov_base = (char *) &xcb_out; 1573 xcb_parts[2].iov_len = sizeof(xcb_out); 1574 xcb_parts[3].iov_base = 0; 1575 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1576 /* void data */ 1577 xcb_parts[4].iov_base = (char *) data; 1578 xcb_parts[4].iov_len = ((num_units * format) / 8) * sizeof(char); 1579 xcb_parts[5].iov_base = 0; 1580 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 1581 1582 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 1583 return xcb_ret; 1584 } 1585 1586 xcb_void_cookie_t 1587 xcb_randr_change_output_property (xcb_connection_t *c, 1588 xcb_randr_output_t output, 1589 xcb_atom_t property, 1590 xcb_atom_t type, 1591 uint8_t format, 1592 uint8_t mode, 1593 uint32_t num_units, 1594 const void *data) 1595 { 1596 static const xcb_protocol_request_t xcb_req = { 1597 .count = 4, 1598 .ext = &xcb_randr_id, 1599 .opcode = XCB_RANDR_CHANGE_OUTPUT_PROPERTY, 1600 .isvoid = 1 1601 }; 1602 1603 struct iovec xcb_parts[6]; 1604 xcb_void_cookie_t xcb_ret; 1605 xcb_randr_change_output_property_request_t xcb_out; 1606 1607 xcb_out.output = output; 1608 xcb_out.property = property; 1609 xcb_out.type = type; 1610 xcb_out.format = format; 1611 xcb_out.mode = mode; 1612 memset(xcb_out.pad0, 0, 2); 1613 xcb_out.num_units = num_units; 1614 1615 xcb_parts[2].iov_base = (char *) &xcb_out; 1616 xcb_parts[2].iov_len = sizeof(xcb_out); 1617 xcb_parts[3].iov_base = 0; 1618 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1619 /* void data */ 1620 xcb_parts[4].iov_base = (char *) data; 1621 xcb_parts[4].iov_len = ((num_units * format) / 8) * sizeof(char); 1622 xcb_parts[5].iov_base = 0; 1623 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 1624 1625 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 1626 return xcb_ret; 1627 } 1628 1629 void * 1630 xcb_randr_change_output_property_data (const xcb_randr_change_output_property_request_t *R) 1631 { 1632 return (void *) (R + 1); 1633 } 1634 1635 int 1636 xcb_randr_change_output_property_data_length (const xcb_randr_change_output_property_request_t *R) 1637 { 1638 return ((R->num_units * R->format) / 8); 1639 } 1640 1641 xcb_generic_iterator_t 1642 xcb_randr_change_output_property_data_end (const xcb_randr_change_output_property_request_t *R) 1643 { 1644 xcb_generic_iterator_t i; 1645 i.data = ((char *) (R + 1)) + (((R->num_units * R->format) / 8)); 1646 i.rem = 0; 1647 i.index = (char *) i.data - (char *) R; 1648 return i; 1649 } 1650 1651 xcb_void_cookie_t 1652 xcb_randr_delete_output_property_checked (xcb_connection_t *c, 1653 xcb_randr_output_t output, 1654 xcb_atom_t property) 1655 { 1656 static const xcb_protocol_request_t xcb_req = { 1657 .count = 2, 1658 .ext = &xcb_randr_id, 1659 .opcode = XCB_RANDR_DELETE_OUTPUT_PROPERTY, 1660 .isvoid = 1 1661 }; 1662 1663 struct iovec xcb_parts[4]; 1664 xcb_void_cookie_t xcb_ret; 1665 xcb_randr_delete_output_property_request_t xcb_out; 1666 1667 xcb_out.output = output; 1668 xcb_out.property = property; 1669 1670 xcb_parts[2].iov_base = (char *) &xcb_out; 1671 xcb_parts[2].iov_len = sizeof(xcb_out); 1672 xcb_parts[3].iov_base = 0; 1673 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1674 1675 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 1676 return xcb_ret; 1677 } 1678 1679 xcb_void_cookie_t 1680 xcb_randr_delete_output_property (xcb_connection_t *c, 1681 xcb_randr_output_t output, 1682 xcb_atom_t property) 1683 { 1684 static const xcb_protocol_request_t xcb_req = { 1685 .count = 2, 1686 .ext = &xcb_randr_id, 1687 .opcode = XCB_RANDR_DELETE_OUTPUT_PROPERTY, 1688 .isvoid = 1 1689 }; 1690 1691 struct iovec xcb_parts[4]; 1692 xcb_void_cookie_t xcb_ret; 1693 xcb_randr_delete_output_property_request_t xcb_out; 1694 1695 xcb_out.output = output; 1696 xcb_out.property = property; 1697 1698 xcb_parts[2].iov_base = (char *) &xcb_out; 1699 xcb_parts[2].iov_len = sizeof(xcb_out); 1700 xcb_parts[3].iov_base = 0; 1701 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1702 1703 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 1704 return xcb_ret; 1705 } 1706 1707 int 1708 xcb_randr_get_output_property_sizeof (const void *_buffer) 1709 { 1710 char *xcb_tmp = (char *)_buffer; 1711 const xcb_randr_get_output_property_reply_t *_aux = (xcb_randr_get_output_property_reply_t *)_buffer; 1712 unsigned int xcb_buffer_len = 0; 1713 unsigned int xcb_block_len = 0; 1714 unsigned int xcb_pad = 0; 1715 unsigned int xcb_align_to = 0; 1716 1717 1718 xcb_block_len += sizeof(xcb_randr_get_output_property_reply_t); 1719 xcb_tmp += xcb_block_len; 1720 xcb_buffer_len += xcb_block_len; 1721 xcb_block_len = 0; 1722 /* data */ 1723 xcb_block_len += (_aux->num_items * (_aux->format / 8)) * sizeof(uint8_t); 1724 xcb_tmp += xcb_block_len; 1725 xcb_align_to = ALIGNOF(uint8_t); 1726 /* insert padding */ 1727 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 1728 xcb_buffer_len += xcb_block_len + xcb_pad; 1729 if (0 != xcb_pad) { 1730 xcb_tmp += xcb_pad; 1731 xcb_pad = 0; 1732 } 1733 xcb_block_len = 0; 1734 1735 return xcb_buffer_len; 1736 } 1737 1738 xcb_randr_get_output_property_cookie_t 1739 xcb_randr_get_output_property (xcb_connection_t *c, 1740 xcb_randr_output_t output, 1741 xcb_atom_t property, 1742 xcb_atom_t type, 1743 uint32_t long_offset, 1744 uint32_t long_length, 1745 uint8_t _delete, 1746 uint8_t pending) 1747 { 1748 static const xcb_protocol_request_t xcb_req = { 1749 .count = 2, 1750 .ext = &xcb_randr_id, 1751 .opcode = XCB_RANDR_GET_OUTPUT_PROPERTY, 1752 .isvoid = 0 1753 }; 1754 1755 struct iovec xcb_parts[4]; 1756 xcb_randr_get_output_property_cookie_t xcb_ret; 1757 xcb_randr_get_output_property_request_t xcb_out; 1758 1759 xcb_out.output = output; 1760 xcb_out.property = property; 1761 xcb_out.type = type; 1762 xcb_out.long_offset = long_offset; 1763 xcb_out.long_length = long_length; 1764 xcb_out._delete = _delete; 1765 xcb_out.pending = pending; 1766 memset(xcb_out.pad0, 0, 2); 1767 1768 xcb_parts[2].iov_base = (char *) &xcb_out; 1769 xcb_parts[2].iov_len = sizeof(xcb_out); 1770 xcb_parts[3].iov_base = 0; 1771 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1772 1773 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 1774 return xcb_ret; 1775 } 1776 1777 xcb_randr_get_output_property_cookie_t 1778 xcb_randr_get_output_property_unchecked (xcb_connection_t *c, 1779 xcb_randr_output_t output, 1780 xcb_atom_t property, 1781 xcb_atom_t type, 1782 uint32_t long_offset, 1783 uint32_t long_length, 1784 uint8_t _delete, 1785 uint8_t pending) 1786 { 1787 static const xcb_protocol_request_t xcb_req = { 1788 .count = 2, 1789 .ext = &xcb_randr_id, 1790 .opcode = XCB_RANDR_GET_OUTPUT_PROPERTY, 1791 .isvoid = 0 1792 }; 1793 1794 struct iovec xcb_parts[4]; 1795 xcb_randr_get_output_property_cookie_t xcb_ret; 1796 xcb_randr_get_output_property_request_t xcb_out; 1797 1798 xcb_out.output = output; 1799 xcb_out.property = property; 1800 xcb_out.type = type; 1801 xcb_out.long_offset = long_offset; 1802 xcb_out.long_length = long_length; 1803 xcb_out._delete = _delete; 1804 xcb_out.pending = pending; 1805 memset(xcb_out.pad0, 0, 2); 1806 1807 xcb_parts[2].iov_base = (char *) &xcb_out; 1808 xcb_parts[2].iov_len = sizeof(xcb_out); 1809 xcb_parts[3].iov_base = 0; 1810 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1811 1812 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 1813 return xcb_ret; 1814 } 1815 1816 uint8_t * 1817 xcb_randr_get_output_property_data (const xcb_randr_get_output_property_reply_t *R) 1818 { 1819 return (uint8_t *) (R + 1); 1820 } 1821 1822 int 1823 xcb_randr_get_output_property_data_length (const xcb_randr_get_output_property_reply_t *R) 1824 { 1825 return (R->num_items * (R->format / 8)); 1826 } 1827 1828 xcb_generic_iterator_t 1829 xcb_randr_get_output_property_data_end (const xcb_randr_get_output_property_reply_t *R) 1830 { 1831 xcb_generic_iterator_t i; 1832 i.data = ((uint8_t *) (R + 1)) + ((R->num_items * (R->format / 8))); 1833 i.rem = 0; 1834 i.index = (char *) i.data - (char *) R; 1835 return i; 1836 } 1837 1838 xcb_randr_get_output_property_reply_t * 1839 xcb_randr_get_output_property_reply (xcb_connection_t *c, 1840 xcb_randr_get_output_property_cookie_t cookie /**< */, 1841 xcb_generic_error_t **e) 1842 { 1843 return (xcb_randr_get_output_property_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 1844 } 1845 1846 int 1847 xcb_randr_create_mode_sizeof (const void *_buffer, 1848 uint32_t name_len) 1849 { 1850 char *xcb_tmp = (char *)_buffer; 1851 unsigned int xcb_buffer_len = 0; 1852 unsigned int xcb_block_len = 0; 1853 unsigned int xcb_pad = 0; 1854 unsigned int xcb_align_to = 0; 1855 1856 1857 xcb_block_len += sizeof(xcb_randr_create_mode_request_t); 1858 xcb_tmp += xcb_block_len; 1859 xcb_buffer_len += xcb_block_len; 1860 xcb_block_len = 0; 1861 /* name */ 1862 xcb_block_len += name_len * sizeof(char); 1863 xcb_tmp += xcb_block_len; 1864 xcb_align_to = ALIGNOF(char); 1865 /* insert padding */ 1866 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 1867 xcb_buffer_len += xcb_block_len + xcb_pad; 1868 if (0 != xcb_pad) { 1869 xcb_tmp += xcb_pad; 1870 xcb_pad = 0; 1871 } 1872 xcb_block_len = 0; 1873 1874 return xcb_buffer_len; 1875 } 1876 1877 xcb_randr_create_mode_cookie_t 1878 xcb_randr_create_mode (xcb_connection_t *c, 1879 xcb_window_t window, 1880 xcb_randr_mode_info_t mode_info, 1881 uint32_t name_len, 1882 const char *name) 1883 { 1884 static const xcb_protocol_request_t xcb_req = { 1885 .count = 4, 1886 .ext = &xcb_randr_id, 1887 .opcode = XCB_RANDR_CREATE_MODE, 1888 .isvoid = 0 1889 }; 1890 1891 struct iovec xcb_parts[6]; 1892 xcb_randr_create_mode_cookie_t xcb_ret; 1893 xcb_randr_create_mode_request_t xcb_out; 1894 1895 xcb_out.window = window; 1896 xcb_out.mode_info = mode_info; 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 /* char name */ 1903 xcb_parts[4].iov_base = (char *) name; 1904 xcb_parts[4].iov_len = name_len * sizeof(char); 1905 xcb_parts[5].iov_base = 0; 1906 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 1907 1908 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 1909 return xcb_ret; 1910 } 1911 1912 xcb_randr_create_mode_cookie_t 1913 xcb_randr_create_mode_unchecked (xcb_connection_t *c, 1914 xcb_window_t window, 1915 xcb_randr_mode_info_t mode_info, 1916 uint32_t name_len, 1917 const char *name) 1918 { 1919 static const xcb_protocol_request_t xcb_req = { 1920 .count = 4, 1921 .ext = &xcb_randr_id, 1922 .opcode = XCB_RANDR_CREATE_MODE, 1923 .isvoid = 0 1924 }; 1925 1926 struct iovec xcb_parts[6]; 1927 xcb_randr_create_mode_cookie_t xcb_ret; 1928 xcb_randr_create_mode_request_t xcb_out; 1929 1930 xcb_out.window = window; 1931 xcb_out.mode_info = mode_info; 1932 1933 xcb_parts[2].iov_base = (char *) &xcb_out; 1934 xcb_parts[2].iov_len = sizeof(xcb_out); 1935 xcb_parts[3].iov_base = 0; 1936 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1937 /* char name */ 1938 xcb_parts[4].iov_base = (char *) name; 1939 xcb_parts[4].iov_len = name_len * sizeof(char); 1940 xcb_parts[5].iov_base = 0; 1941 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 1942 1943 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 1944 return xcb_ret; 1945 } 1946 1947 xcb_randr_create_mode_reply_t * 1948 xcb_randr_create_mode_reply (xcb_connection_t *c, 1949 xcb_randr_create_mode_cookie_t cookie /**< */, 1950 xcb_generic_error_t **e) 1951 { 1952 return (xcb_randr_create_mode_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 1953 } 1954 1955 xcb_void_cookie_t 1956 xcb_randr_destroy_mode_checked (xcb_connection_t *c, 1957 xcb_randr_mode_t mode) 1958 { 1959 static const xcb_protocol_request_t xcb_req = { 1960 .count = 2, 1961 .ext = &xcb_randr_id, 1962 .opcode = XCB_RANDR_DESTROY_MODE, 1963 .isvoid = 1 1964 }; 1965 1966 struct iovec xcb_parts[4]; 1967 xcb_void_cookie_t xcb_ret; 1968 xcb_randr_destroy_mode_request_t xcb_out; 1969 1970 xcb_out.mode = mode; 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 xcb_void_cookie_t 1982 xcb_randr_destroy_mode (xcb_connection_t *c, 1983 xcb_randr_mode_t mode) 1984 { 1985 static const xcb_protocol_request_t xcb_req = { 1986 .count = 2, 1987 .ext = &xcb_randr_id, 1988 .opcode = XCB_RANDR_DESTROY_MODE, 1989 .isvoid = 1 1990 }; 1991 1992 struct iovec xcb_parts[4]; 1993 xcb_void_cookie_t xcb_ret; 1994 xcb_randr_destroy_mode_request_t xcb_out; 1995 1996 xcb_out.mode = mode; 1997 1998 xcb_parts[2].iov_base = (char *) &xcb_out; 1999 xcb_parts[2].iov_len = sizeof(xcb_out); 2000 xcb_parts[3].iov_base = 0; 2001 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2002 2003 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 2004 return xcb_ret; 2005 } 2006 2007 xcb_void_cookie_t 2008 xcb_randr_add_output_mode_checked (xcb_connection_t *c, 2009 xcb_randr_output_t output, 2010 xcb_randr_mode_t mode) 2011 { 2012 static const xcb_protocol_request_t xcb_req = { 2013 .count = 2, 2014 .ext = &xcb_randr_id, 2015 .opcode = XCB_RANDR_ADD_OUTPUT_MODE, 2016 .isvoid = 1 2017 }; 2018 2019 struct iovec xcb_parts[4]; 2020 xcb_void_cookie_t xcb_ret; 2021 xcb_randr_add_output_mode_request_t xcb_out; 2022 2023 xcb_out.output = output; 2024 xcb_out.mode = mode; 2025 2026 xcb_parts[2].iov_base = (char *) &xcb_out; 2027 xcb_parts[2].iov_len = sizeof(xcb_out); 2028 xcb_parts[3].iov_base = 0; 2029 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2030 2031 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 2032 return xcb_ret; 2033 } 2034 2035 xcb_void_cookie_t 2036 xcb_randr_add_output_mode (xcb_connection_t *c, 2037 xcb_randr_output_t output, 2038 xcb_randr_mode_t mode) 2039 { 2040 static const xcb_protocol_request_t xcb_req = { 2041 .count = 2, 2042 .ext = &xcb_randr_id, 2043 .opcode = XCB_RANDR_ADD_OUTPUT_MODE, 2044 .isvoid = 1 2045 }; 2046 2047 struct iovec xcb_parts[4]; 2048 xcb_void_cookie_t xcb_ret; 2049 xcb_randr_add_output_mode_request_t xcb_out; 2050 2051 xcb_out.output = output; 2052 xcb_out.mode = mode; 2053 2054 xcb_parts[2].iov_base = (char *) &xcb_out; 2055 xcb_parts[2].iov_len = sizeof(xcb_out); 2056 xcb_parts[3].iov_base = 0; 2057 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2058 2059 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 2060 return xcb_ret; 2061 } 2062 2063 xcb_void_cookie_t 2064 xcb_randr_delete_output_mode_checked (xcb_connection_t *c, 2065 xcb_randr_output_t output, 2066 xcb_randr_mode_t mode) 2067 { 2068 static const xcb_protocol_request_t xcb_req = { 2069 .count = 2, 2070 .ext = &xcb_randr_id, 2071 .opcode = XCB_RANDR_DELETE_OUTPUT_MODE, 2072 .isvoid = 1 2073 }; 2074 2075 struct iovec xcb_parts[4]; 2076 xcb_void_cookie_t xcb_ret; 2077 xcb_randr_delete_output_mode_request_t xcb_out; 2078 2079 xcb_out.output = output; 2080 xcb_out.mode = mode; 2081 2082 xcb_parts[2].iov_base = (char *) &xcb_out; 2083 xcb_parts[2].iov_len = sizeof(xcb_out); 2084 xcb_parts[3].iov_base = 0; 2085 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2086 2087 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 2088 return xcb_ret; 2089 } 2090 2091 xcb_void_cookie_t 2092 xcb_randr_delete_output_mode (xcb_connection_t *c, 2093 xcb_randr_output_t output, 2094 xcb_randr_mode_t mode) 2095 { 2096 static const xcb_protocol_request_t xcb_req = { 2097 .count = 2, 2098 .ext = &xcb_randr_id, 2099 .opcode = XCB_RANDR_DELETE_OUTPUT_MODE, 2100 .isvoid = 1 2101 }; 2102 2103 struct iovec xcb_parts[4]; 2104 xcb_void_cookie_t xcb_ret; 2105 xcb_randr_delete_output_mode_request_t xcb_out; 2106 2107 xcb_out.output = output; 2108 xcb_out.mode = mode; 2109 2110 xcb_parts[2].iov_base = (char *) &xcb_out; 2111 xcb_parts[2].iov_len = sizeof(xcb_out); 2112 xcb_parts[3].iov_base = 0; 2113 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2114 2115 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 2116 return xcb_ret; 2117 } 2118 2119 int 2120 xcb_randr_get_crtc_info_sizeof (const void *_buffer) 2121 { 2122 char *xcb_tmp = (char *)_buffer; 2123 const xcb_randr_get_crtc_info_reply_t *_aux = (xcb_randr_get_crtc_info_reply_t *)_buffer; 2124 unsigned int xcb_buffer_len = 0; 2125 unsigned int xcb_block_len = 0; 2126 unsigned int xcb_pad = 0; 2127 unsigned int xcb_align_to = 0; 2128 2129 2130 xcb_block_len += sizeof(xcb_randr_get_crtc_info_reply_t); 2131 xcb_tmp += xcb_block_len; 2132 xcb_buffer_len += xcb_block_len; 2133 xcb_block_len = 0; 2134 /* outputs */ 2135 xcb_block_len += _aux->num_outputs * sizeof(xcb_randr_output_t); 2136 xcb_tmp += xcb_block_len; 2137 xcb_align_to = ALIGNOF(xcb_randr_output_t); 2138 /* insert padding */ 2139 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 2140 xcb_buffer_len += xcb_block_len + xcb_pad; 2141 if (0 != xcb_pad) { 2142 xcb_tmp += xcb_pad; 2143 xcb_pad = 0; 2144 } 2145 xcb_block_len = 0; 2146 /* possible */ 2147 xcb_block_len += _aux->num_possible_outputs * sizeof(xcb_randr_output_t); 2148 xcb_tmp += xcb_block_len; 2149 xcb_align_to = ALIGNOF(xcb_randr_output_t); 2150 /* insert padding */ 2151 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 2152 xcb_buffer_len += xcb_block_len + xcb_pad; 2153 if (0 != xcb_pad) { 2154 xcb_tmp += xcb_pad; 2155 xcb_pad = 0; 2156 } 2157 xcb_block_len = 0; 2158 2159 return xcb_buffer_len; 2160 } 2161 2162 xcb_randr_get_crtc_info_cookie_t 2163 xcb_randr_get_crtc_info (xcb_connection_t *c, 2164 xcb_randr_crtc_t crtc, 2165 xcb_timestamp_t config_timestamp) 2166 { 2167 static const xcb_protocol_request_t xcb_req = { 2168 .count = 2, 2169 .ext = &xcb_randr_id, 2170 .opcode = XCB_RANDR_GET_CRTC_INFO, 2171 .isvoid = 0 2172 }; 2173 2174 struct iovec xcb_parts[4]; 2175 xcb_randr_get_crtc_info_cookie_t xcb_ret; 2176 xcb_randr_get_crtc_info_request_t xcb_out; 2177 2178 xcb_out.crtc = crtc; 2179 xcb_out.config_timestamp = config_timestamp; 2180 2181 xcb_parts[2].iov_base = (char *) &xcb_out; 2182 xcb_parts[2].iov_len = sizeof(xcb_out); 2183 xcb_parts[3].iov_base = 0; 2184 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2185 2186 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 2187 return xcb_ret; 2188 } 2189 2190 xcb_randr_get_crtc_info_cookie_t 2191 xcb_randr_get_crtc_info_unchecked (xcb_connection_t *c, 2192 xcb_randr_crtc_t crtc, 2193 xcb_timestamp_t config_timestamp) 2194 { 2195 static const xcb_protocol_request_t xcb_req = { 2196 .count = 2, 2197 .ext = &xcb_randr_id, 2198 .opcode = XCB_RANDR_GET_CRTC_INFO, 2199 .isvoid = 0 2200 }; 2201 2202 struct iovec xcb_parts[4]; 2203 xcb_randr_get_crtc_info_cookie_t xcb_ret; 2204 xcb_randr_get_crtc_info_request_t xcb_out; 2205 2206 xcb_out.crtc = crtc; 2207 xcb_out.config_timestamp = config_timestamp; 2208 2209 xcb_parts[2].iov_base = (char *) &xcb_out; 2210 xcb_parts[2].iov_len = sizeof(xcb_out); 2211 xcb_parts[3].iov_base = 0; 2212 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2213 2214 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 2215 return xcb_ret; 2216 } 2217 2218 xcb_randr_output_t * 2219 xcb_randr_get_crtc_info_outputs (const xcb_randr_get_crtc_info_reply_t *R) 2220 { 2221 return (xcb_randr_output_t *) (R + 1); 2222 } 2223 2224 int 2225 xcb_randr_get_crtc_info_outputs_length (const xcb_randr_get_crtc_info_reply_t *R) 2226 { 2227 return R->num_outputs; 2228 } 2229 2230 xcb_generic_iterator_t 2231 xcb_randr_get_crtc_info_outputs_end (const xcb_randr_get_crtc_info_reply_t *R) 2232 { 2233 xcb_generic_iterator_t i; 2234 i.data = ((xcb_randr_output_t *) (R + 1)) + (R->num_outputs); 2235 i.rem = 0; 2236 i.index = (char *) i.data - (char *) R; 2237 return i; 2238 } 2239 2240 xcb_randr_output_t * 2241 xcb_randr_get_crtc_info_possible (const xcb_randr_get_crtc_info_reply_t *R) 2242 { 2243 xcb_generic_iterator_t prev = xcb_randr_get_crtc_info_outputs_end(R); 2244 return (xcb_randr_output_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_randr_output_t, prev.index) + 0); 2245 } 2246 2247 int 2248 xcb_randr_get_crtc_info_possible_length (const xcb_randr_get_crtc_info_reply_t *R) 2249 { 2250 return R->num_possible_outputs; 2251 } 2252 2253 xcb_generic_iterator_t 2254 xcb_randr_get_crtc_info_possible_end (const xcb_randr_get_crtc_info_reply_t *R) 2255 { 2256 xcb_generic_iterator_t i; 2257 xcb_generic_iterator_t prev = xcb_randr_get_crtc_info_outputs_end(R); 2258 i.data = ((xcb_randr_output_t *) ((char*) prev.data + XCB_TYPE_PAD(xcb_randr_output_t, prev.index))) + (R->num_possible_outputs); 2259 i.rem = 0; 2260 i.index = (char *) i.data - (char *) R; 2261 return i; 2262 } 2263 2264 xcb_randr_get_crtc_info_reply_t * 2265 xcb_randr_get_crtc_info_reply (xcb_connection_t *c, 2266 xcb_randr_get_crtc_info_cookie_t cookie /**< */, 2267 xcb_generic_error_t **e) 2268 { 2269 return (xcb_randr_get_crtc_info_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 2270 } 2271 2272 int 2273 xcb_randr_set_crtc_config_sizeof (const void *_buffer, 2274 uint32_t outputs_len) 2275 { 2276 char *xcb_tmp = (char *)_buffer; 2277 unsigned int xcb_buffer_len = 0; 2278 unsigned int xcb_block_len = 0; 2279 unsigned int xcb_pad = 0; 2280 unsigned int xcb_align_to = 0; 2281 2282 2283 xcb_block_len += sizeof(xcb_randr_set_crtc_config_request_t); 2284 xcb_tmp += xcb_block_len; 2285 xcb_buffer_len += xcb_block_len; 2286 xcb_block_len = 0; 2287 /* outputs */ 2288 xcb_block_len += outputs_len * sizeof(xcb_randr_output_t); 2289 xcb_tmp += xcb_block_len; 2290 xcb_align_to = ALIGNOF(xcb_randr_output_t); 2291 /* insert padding */ 2292 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 2293 xcb_buffer_len += xcb_block_len + xcb_pad; 2294 if (0 != xcb_pad) { 2295 xcb_tmp += xcb_pad; 2296 xcb_pad = 0; 2297 } 2298 xcb_block_len = 0; 2299 2300 return xcb_buffer_len; 2301 } 2302 2303 xcb_randr_set_crtc_config_cookie_t 2304 xcb_randr_set_crtc_config (xcb_connection_t *c, 2305 xcb_randr_crtc_t crtc, 2306 xcb_timestamp_t timestamp, 2307 xcb_timestamp_t config_timestamp, 2308 int16_t x, 2309 int16_t y, 2310 xcb_randr_mode_t mode, 2311 uint16_t rotation, 2312 uint32_t outputs_len, 2313 const xcb_randr_output_t *outputs) 2314 { 2315 static const xcb_protocol_request_t xcb_req = { 2316 .count = 4, 2317 .ext = &xcb_randr_id, 2318 .opcode = XCB_RANDR_SET_CRTC_CONFIG, 2319 .isvoid = 0 2320 }; 2321 2322 struct iovec xcb_parts[6]; 2323 xcb_randr_set_crtc_config_cookie_t xcb_ret; 2324 xcb_randr_set_crtc_config_request_t xcb_out; 2325 2326 xcb_out.crtc = crtc; 2327 xcb_out.timestamp = timestamp; 2328 xcb_out.config_timestamp = config_timestamp; 2329 xcb_out.x = x; 2330 xcb_out.y = y; 2331 xcb_out.mode = mode; 2332 xcb_out.rotation = rotation; 2333 memset(xcb_out.pad0, 0, 2); 2334 2335 xcb_parts[2].iov_base = (char *) &xcb_out; 2336 xcb_parts[2].iov_len = sizeof(xcb_out); 2337 xcb_parts[3].iov_base = 0; 2338 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2339 /* xcb_randr_output_t outputs */ 2340 xcb_parts[4].iov_base = (char *) outputs; 2341 xcb_parts[4].iov_len = outputs_len * sizeof(xcb_timestamp_t); 2342 xcb_parts[5].iov_base = 0; 2343 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 2344 2345 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 2346 return xcb_ret; 2347 } 2348 2349 xcb_randr_set_crtc_config_cookie_t 2350 xcb_randr_set_crtc_config_unchecked (xcb_connection_t *c, 2351 xcb_randr_crtc_t crtc, 2352 xcb_timestamp_t timestamp, 2353 xcb_timestamp_t config_timestamp, 2354 int16_t x, 2355 int16_t y, 2356 xcb_randr_mode_t mode, 2357 uint16_t rotation, 2358 uint32_t outputs_len, 2359 const xcb_randr_output_t *outputs) 2360 { 2361 static const xcb_protocol_request_t xcb_req = { 2362 .count = 4, 2363 .ext = &xcb_randr_id, 2364 .opcode = XCB_RANDR_SET_CRTC_CONFIG, 2365 .isvoid = 0 2366 }; 2367 2368 struct iovec xcb_parts[6]; 2369 xcb_randr_set_crtc_config_cookie_t xcb_ret; 2370 xcb_randr_set_crtc_config_request_t xcb_out; 2371 2372 xcb_out.crtc = crtc; 2373 xcb_out.timestamp = timestamp; 2374 xcb_out.config_timestamp = config_timestamp; 2375 xcb_out.x = x; 2376 xcb_out.y = y; 2377 xcb_out.mode = mode; 2378 xcb_out.rotation = rotation; 2379 memset(xcb_out.pad0, 0, 2); 2380 2381 xcb_parts[2].iov_base = (char *) &xcb_out; 2382 xcb_parts[2].iov_len = sizeof(xcb_out); 2383 xcb_parts[3].iov_base = 0; 2384 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2385 /* xcb_randr_output_t outputs */ 2386 xcb_parts[4].iov_base = (char *) outputs; 2387 xcb_parts[4].iov_len = outputs_len * sizeof(xcb_timestamp_t); 2388 xcb_parts[5].iov_base = 0; 2389 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 2390 2391 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 2392 return xcb_ret; 2393 } 2394 2395 xcb_randr_set_crtc_config_reply_t * 2396 xcb_randr_set_crtc_config_reply (xcb_connection_t *c, 2397 xcb_randr_set_crtc_config_cookie_t cookie /**< */, 2398 xcb_generic_error_t **e) 2399 { 2400 return (xcb_randr_set_crtc_config_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 2401 } 2402 2403 xcb_randr_get_crtc_gamma_size_cookie_t 2404 xcb_randr_get_crtc_gamma_size (xcb_connection_t *c, 2405 xcb_randr_crtc_t crtc) 2406 { 2407 static const xcb_protocol_request_t xcb_req = { 2408 .count = 2, 2409 .ext = &xcb_randr_id, 2410 .opcode = XCB_RANDR_GET_CRTC_GAMMA_SIZE, 2411 .isvoid = 0 2412 }; 2413 2414 struct iovec xcb_parts[4]; 2415 xcb_randr_get_crtc_gamma_size_cookie_t xcb_ret; 2416 xcb_randr_get_crtc_gamma_size_request_t xcb_out; 2417 2418 xcb_out.crtc = crtc; 2419 2420 xcb_parts[2].iov_base = (char *) &xcb_out; 2421 xcb_parts[2].iov_len = sizeof(xcb_out); 2422 xcb_parts[3].iov_base = 0; 2423 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2424 2425 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 2426 return xcb_ret; 2427 } 2428 2429 xcb_randr_get_crtc_gamma_size_cookie_t 2430 xcb_randr_get_crtc_gamma_size_unchecked (xcb_connection_t *c, 2431 xcb_randr_crtc_t crtc) 2432 { 2433 static const xcb_protocol_request_t xcb_req = { 2434 .count = 2, 2435 .ext = &xcb_randr_id, 2436 .opcode = XCB_RANDR_GET_CRTC_GAMMA_SIZE, 2437 .isvoid = 0 2438 }; 2439 2440 struct iovec xcb_parts[4]; 2441 xcb_randr_get_crtc_gamma_size_cookie_t xcb_ret; 2442 xcb_randr_get_crtc_gamma_size_request_t xcb_out; 2443 2444 xcb_out.crtc = crtc; 2445 2446 xcb_parts[2].iov_base = (char *) &xcb_out; 2447 xcb_parts[2].iov_len = sizeof(xcb_out); 2448 xcb_parts[3].iov_base = 0; 2449 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2450 2451 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 2452 return xcb_ret; 2453 } 2454 2455 xcb_randr_get_crtc_gamma_size_reply_t * 2456 xcb_randr_get_crtc_gamma_size_reply (xcb_connection_t *c, 2457 xcb_randr_get_crtc_gamma_size_cookie_t cookie /**< */, 2458 xcb_generic_error_t **e) 2459 { 2460 return (xcb_randr_get_crtc_gamma_size_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 2461 } 2462 2463 int 2464 xcb_randr_get_crtc_gamma_sizeof (const void *_buffer) 2465 { 2466 char *xcb_tmp = (char *)_buffer; 2467 const xcb_randr_get_crtc_gamma_reply_t *_aux = (xcb_randr_get_crtc_gamma_reply_t *)_buffer; 2468 unsigned int xcb_buffer_len = 0; 2469 unsigned int xcb_block_len = 0; 2470 unsigned int xcb_pad = 0; 2471 unsigned int xcb_align_to = 0; 2472 2473 2474 xcb_block_len += sizeof(xcb_randr_get_crtc_gamma_reply_t); 2475 xcb_tmp += xcb_block_len; 2476 xcb_buffer_len += xcb_block_len; 2477 xcb_block_len = 0; 2478 /* red */ 2479 xcb_block_len += _aux->size * sizeof(uint16_t); 2480 xcb_tmp += xcb_block_len; 2481 xcb_align_to = ALIGNOF(uint16_t); 2482 /* insert padding */ 2483 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 2484 xcb_buffer_len += xcb_block_len + xcb_pad; 2485 if (0 != xcb_pad) { 2486 xcb_tmp += xcb_pad; 2487 xcb_pad = 0; 2488 } 2489 xcb_block_len = 0; 2490 /* green */ 2491 xcb_block_len += _aux->size * sizeof(uint16_t); 2492 xcb_tmp += xcb_block_len; 2493 xcb_align_to = ALIGNOF(uint16_t); 2494 /* insert padding */ 2495 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 2496 xcb_buffer_len += xcb_block_len + xcb_pad; 2497 if (0 != xcb_pad) { 2498 xcb_tmp += xcb_pad; 2499 xcb_pad = 0; 2500 } 2501 xcb_block_len = 0; 2502 /* blue */ 2503 xcb_block_len += _aux->size * sizeof(uint16_t); 2504 xcb_tmp += xcb_block_len; 2505 xcb_align_to = ALIGNOF(uint16_t); 2506 /* insert padding */ 2507 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 2508 xcb_buffer_len += xcb_block_len + xcb_pad; 2509 if (0 != xcb_pad) { 2510 xcb_tmp += xcb_pad; 2511 xcb_pad = 0; 2512 } 2513 xcb_block_len = 0; 2514 2515 return xcb_buffer_len; 2516 } 2517 2518 xcb_randr_get_crtc_gamma_cookie_t 2519 xcb_randr_get_crtc_gamma (xcb_connection_t *c, 2520 xcb_randr_crtc_t crtc) 2521 { 2522 static const xcb_protocol_request_t xcb_req = { 2523 .count = 2, 2524 .ext = &xcb_randr_id, 2525 .opcode = XCB_RANDR_GET_CRTC_GAMMA, 2526 .isvoid = 0 2527 }; 2528 2529 struct iovec xcb_parts[4]; 2530 xcb_randr_get_crtc_gamma_cookie_t xcb_ret; 2531 xcb_randr_get_crtc_gamma_request_t xcb_out; 2532 2533 xcb_out.crtc = crtc; 2534 2535 xcb_parts[2].iov_base = (char *) &xcb_out; 2536 xcb_parts[2].iov_len = sizeof(xcb_out); 2537 xcb_parts[3].iov_base = 0; 2538 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2539 2540 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 2541 return xcb_ret; 2542 } 2543 2544 xcb_randr_get_crtc_gamma_cookie_t 2545 xcb_randr_get_crtc_gamma_unchecked (xcb_connection_t *c, 2546 xcb_randr_crtc_t crtc) 2547 { 2548 static const xcb_protocol_request_t xcb_req = { 2549 .count = 2, 2550 .ext = &xcb_randr_id, 2551 .opcode = XCB_RANDR_GET_CRTC_GAMMA, 2552 .isvoid = 0 2553 }; 2554 2555 struct iovec xcb_parts[4]; 2556 xcb_randr_get_crtc_gamma_cookie_t xcb_ret; 2557 xcb_randr_get_crtc_gamma_request_t xcb_out; 2558 2559 xcb_out.crtc = crtc; 2560 2561 xcb_parts[2].iov_base = (char *) &xcb_out; 2562 xcb_parts[2].iov_len = sizeof(xcb_out); 2563 xcb_parts[3].iov_base = 0; 2564 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2565 2566 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 2567 return xcb_ret; 2568 } 2569 2570 uint16_t * 2571 xcb_randr_get_crtc_gamma_red (const xcb_randr_get_crtc_gamma_reply_t *R) 2572 { 2573 return (uint16_t *) (R + 1); 2574 } 2575 2576 int 2577 xcb_randr_get_crtc_gamma_red_length (const xcb_randr_get_crtc_gamma_reply_t *R) 2578 { 2579 return R->size; 2580 } 2581 2582 xcb_generic_iterator_t 2583 xcb_randr_get_crtc_gamma_red_end (const xcb_randr_get_crtc_gamma_reply_t *R) 2584 { 2585 xcb_generic_iterator_t i; 2586 i.data = ((uint16_t *) (R + 1)) + (R->size); 2587 i.rem = 0; 2588 i.index = (char *) i.data - (char *) R; 2589 return i; 2590 } 2591 2592 uint16_t * 2593 xcb_randr_get_crtc_gamma_green (const xcb_randr_get_crtc_gamma_reply_t *R) 2594 { 2595 xcb_generic_iterator_t prev = xcb_randr_get_crtc_gamma_red_end(R); 2596 return (uint16_t *) ((char *) prev.data + XCB_TYPE_PAD(uint16_t, prev.index) + 0); 2597 } 2598 2599 int 2600 xcb_randr_get_crtc_gamma_green_length (const xcb_randr_get_crtc_gamma_reply_t *R) 2601 { 2602 return R->size; 2603 } 2604 2605 xcb_generic_iterator_t 2606 xcb_randr_get_crtc_gamma_green_end (const xcb_randr_get_crtc_gamma_reply_t *R) 2607 { 2608 xcb_generic_iterator_t i; 2609 xcb_generic_iterator_t prev = xcb_randr_get_crtc_gamma_red_end(R); 2610 i.data = ((uint16_t *) ((char*) prev.data + XCB_TYPE_PAD(uint16_t, prev.index))) + (R->size); 2611 i.rem = 0; 2612 i.index = (char *) i.data - (char *) R; 2613 return i; 2614 } 2615 2616 uint16_t * 2617 xcb_randr_get_crtc_gamma_blue (const xcb_randr_get_crtc_gamma_reply_t *R) 2618 { 2619 xcb_generic_iterator_t prev = xcb_randr_get_crtc_gamma_green_end(R); 2620 return (uint16_t *) ((char *) prev.data + XCB_TYPE_PAD(uint16_t, prev.index) + 0); 2621 } 2622 2623 int 2624 xcb_randr_get_crtc_gamma_blue_length (const xcb_randr_get_crtc_gamma_reply_t *R) 2625 { 2626 return R->size; 2627 } 2628 2629 xcb_generic_iterator_t 2630 xcb_randr_get_crtc_gamma_blue_end (const xcb_randr_get_crtc_gamma_reply_t *R) 2631 { 2632 xcb_generic_iterator_t i; 2633 xcb_generic_iterator_t prev = xcb_randr_get_crtc_gamma_green_end(R); 2634 i.data = ((uint16_t *) ((char*) prev.data + XCB_TYPE_PAD(uint16_t, prev.index))) + (R->size); 2635 i.rem = 0; 2636 i.index = (char *) i.data - (char *) R; 2637 return i; 2638 } 2639 2640 xcb_randr_get_crtc_gamma_reply_t * 2641 xcb_randr_get_crtc_gamma_reply (xcb_connection_t *c, 2642 xcb_randr_get_crtc_gamma_cookie_t cookie /**< */, 2643 xcb_generic_error_t **e) 2644 { 2645 return (xcb_randr_get_crtc_gamma_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 2646 } 2647 2648 int 2649 xcb_randr_set_crtc_gamma_sizeof (const void *_buffer) 2650 { 2651 char *xcb_tmp = (char *)_buffer; 2652 const xcb_randr_set_crtc_gamma_request_t *_aux = (xcb_randr_set_crtc_gamma_request_t *)_buffer; 2653 unsigned int xcb_buffer_len = 0; 2654 unsigned int xcb_block_len = 0; 2655 unsigned int xcb_pad = 0; 2656 unsigned int xcb_align_to = 0; 2657 2658 2659 xcb_block_len += sizeof(xcb_randr_set_crtc_gamma_request_t); 2660 xcb_tmp += xcb_block_len; 2661 xcb_buffer_len += xcb_block_len; 2662 xcb_block_len = 0; 2663 /* red */ 2664 xcb_block_len += _aux->size * sizeof(uint16_t); 2665 xcb_tmp += xcb_block_len; 2666 xcb_align_to = ALIGNOF(uint16_t); 2667 /* insert padding */ 2668 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 2669 xcb_buffer_len += xcb_block_len + xcb_pad; 2670 if (0 != xcb_pad) { 2671 xcb_tmp += xcb_pad; 2672 xcb_pad = 0; 2673 } 2674 xcb_block_len = 0; 2675 /* green */ 2676 xcb_block_len += _aux->size * sizeof(uint16_t); 2677 xcb_tmp += xcb_block_len; 2678 xcb_align_to = ALIGNOF(uint16_t); 2679 /* insert padding */ 2680 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 2681 xcb_buffer_len += xcb_block_len + xcb_pad; 2682 if (0 != xcb_pad) { 2683 xcb_tmp += xcb_pad; 2684 xcb_pad = 0; 2685 } 2686 xcb_block_len = 0; 2687 /* blue */ 2688 xcb_block_len += _aux->size * sizeof(uint16_t); 2689 xcb_tmp += xcb_block_len; 2690 xcb_align_to = ALIGNOF(uint16_t); 2691 /* insert padding */ 2692 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 2693 xcb_buffer_len += xcb_block_len + xcb_pad; 2694 if (0 != xcb_pad) { 2695 xcb_tmp += xcb_pad; 2696 xcb_pad = 0; 2697 } 2698 xcb_block_len = 0; 2699 2700 return xcb_buffer_len; 2701 } 2702 2703 xcb_void_cookie_t 2704 xcb_randr_set_crtc_gamma_checked (xcb_connection_t *c, 2705 xcb_randr_crtc_t crtc, 2706 uint16_t size, 2707 const uint16_t *red, 2708 const uint16_t *green, 2709 const uint16_t *blue) 2710 { 2711 static const xcb_protocol_request_t xcb_req = { 2712 .count = 8, 2713 .ext = &xcb_randr_id, 2714 .opcode = XCB_RANDR_SET_CRTC_GAMMA, 2715 .isvoid = 1 2716 }; 2717 2718 struct iovec xcb_parts[10]; 2719 xcb_void_cookie_t xcb_ret; 2720 xcb_randr_set_crtc_gamma_request_t xcb_out; 2721 2722 xcb_out.crtc = crtc; 2723 xcb_out.size = size; 2724 memset(xcb_out.pad0, 0, 2); 2725 2726 xcb_parts[2].iov_base = (char *) &xcb_out; 2727 xcb_parts[2].iov_len = sizeof(xcb_out); 2728 xcb_parts[3].iov_base = 0; 2729 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2730 /* uint16_t red */ 2731 xcb_parts[4].iov_base = (char *) red; 2732 xcb_parts[4].iov_len = size * sizeof(uint16_t); 2733 xcb_parts[5].iov_base = 0; 2734 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 2735 /* uint16_t green */ 2736 xcb_parts[6].iov_base = (char *) green; 2737 xcb_parts[6].iov_len = size * sizeof(uint16_t); 2738 xcb_parts[7].iov_base = 0; 2739 xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3; 2740 /* uint16_t blue */ 2741 xcb_parts[8].iov_base = (char *) blue; 2742 xcb_parts[8].iov_len = size * sizeof(uint16_t); 2743 xcb_parts[9].iov_base = 0; 2744 xcb_parts[9].iov_len = -xcb_parts[8].iov_len & 3; 2745 2746 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 2747 return xcb_ret; 2748 } 2749 2750 xcb_void_cookie_t 2751 xcb_randr_set_crtc_gamma (xcb_connection_t *c, 2752 xcb_randr_crtc_t crtc, 2753 uint16_t size, 2754 const uint16_t *red, 2755 const uint16_t *green, 2756 const uint16_t *blue) 2757 { 2758 static const xcb_protocol_request_t xcb_req = { 2759 .count = 8, 2760 .ext = &xcb_randr_id, 2761 .opcode = XCB_RANDR_SET_CRTC_GAMMA, 2762 .isvoid = 1 2763 }; 2764 2765 struct iovec xcb_parts[10]; 2766 xcb_void_cookie_t xcb_ret; 2767 xcb_randr_set_crtc_gamma_request_t xcb_out; 2768 2769 xcb_out.crtc = crtc; 2770 xcb_out.size = size; 2771 memset(xcb_out.pad0, 0, 2); 2772 2773 xcb_parts[2].iov_base = (char *) &xcb_out; 2774 xcb_parts[2].iov_len = sizeof(xcb_out); 2775 xcb_parts[3].iov_base = 0; 2776 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2777 /* uint16_t red */ 2778 xcb_parts[4].iov_base = (char *) red; 2779 xcb_parts[4].iov_len = size * sizeof(uint16_t); 2780 xcb_parts[5].iov_base = 0; 2781 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 2782 /* uint16_t green */ 2783 xcb_parts[6].iov_base = (char *) green; 2784 xcb_parts[6].iov_len = size * sizeof(uint16_t); 2785 xcb_parts[7].iov_base = 0; 2786 xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3; 2787 /* uint16_t blue */ 2788 xcb_parts[8].iov_base = (char *) blue; 2789 xcb_parts[8].iov_len = size * sizeof(uint16_t); 2790 xcb_parts[9].iov_base = 0; 2791 xcb_parts[9].iov_len = -xcb_parts[8].iov_len & 3; 2792 2793 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 2794 return xcb_ret; 2795 } 2796 2797 uint16_t * 2798 xcb_randr_set_crtc_gamma_red (const xcb_randr_set_crtc_gamma_request_t *R) 2799 { 2800 return (uint16_t *) (R + 1); 2801 } 2802 2803 int 2804 xcb_randr_set_crtc_gamma_red_length (const xcb_randr_set_crtc_gamma_request_t *R) 2805 { 2806 return R->size; 2807 } 2808 2809 xcb_generic_iterator_t 2810 xcb_randr_set_crtc_gamma_red_end (const xcb_randr_set_crtc_gamma_request_t *R) 2811 { 2812 xcb_generic_iterator_t i; 2813 i.data = ((uint16_t *) (R + 1)) + (R->size); 2814 i.rem = 0; 2815 i.index = (char *) i.data - (char *) R; 2816 return i; 2817 } 2818 2819 uint16_t * 2820 xcb_randr_set_crtc_gamma_green (const xcb_randr_set_crtc_gamma_request_t *R) 2821 { 2822 xcb_generic_iterator_t prev = xcb_randr_set_crtc_gamma_red_end(R); 2823 return (uint16_t *) ((char *) prev.data + XCB_TYPE_PAD(uint16_t, prev.index) + 0); 2824 } 2825 2826 int 2827 xcb_randr_set_crtc_gamma_green_length (const xcb_randr_set_crtc_gamma_request_t *R) 2828 { 2829 return R->size; 2830 } 2831 2832 xcb_generic_iterator_t 2833 xcb_randr_set_crtc_gamma_green_end (const xcb_randr_set_crtc_gamma_request_t *R) 2834 { 2835 xcb_generic_iterator_t i; 2836 xcb_generic_iterator_t prev = xcb_randr_set_crtc_gamma_red_end(R); 2837 i.data = ((uint16_t *) ((char*) prev.data + XCB_TYPE_PAD(uint16_t, prev.index))) + (R->size); 2838 i.rem = 0; 2839 i.index = (char *) i.data - (char *) R; 2840 return i; 2841 } 2842 2843 uint16_t * 2844 xcb_randr_set_crtc_gamma_blue (const xcb_randr_set_crtc_gamma_request_t *R) 2845 { 2846 xcb_generic_iterator_t prev = xcb_randr_set_crtc_gamma_green_end(R); 2847 return (uint16_t *) ((char *) prev.data + XCB_TYPE_PAD(uint16_t, prev.index) + 0); 2848 } 2849 2850 int 2851 xcb_randr_set_crtc_gamma_blue_length (const xcb_randr_set_crtc_gamma_request_t *R) 2852 { 2853 return R->size; 2854 } 2855 2856 xcb_generic_iterator_t 2857 xcb_randr_set_crtc_gamma_blue_end (const xcb_randr_set_crtc_gamma_request_t *R) 2858 { 2859 xcb_generic_iterator_t i; 2860 xcb_generic_iterator_t prev = xcb_randr_set_crtc_gamma_green_end(R); 2861 i.data = ((uint16_t *) ((char*) prev.data + XCB_TYPE_PAD(uint16_t, prev.index))) + (R->size); 2862 i.rem = 0; 2863 i.index = (char *) i.data - (char *) R; 2864 return i; 2865 } 2866 2867 int 2868 xcb_randr_get_screen_resources_current_sizeof (const void *_buffer) 2869 { 2870 char *xcb_tmp = (char *)_buffer; 2871 const xcb_randr_get_screen_resources_current_reply_t *_aux = (xcb_randr_get_screen_resources_current_reply_t *)_buffer; 2872 unsigned int xcb_buffer_len = 0; 2873 unsigned int xcb_block_len = 0; 2874 unsigned int xcb_pad = 0; 2875 unsigned int xcb_align_to = 0; 2876 2877 2878 xcb_block_len += sizeof(xcb_randr_get_screen_resources_current_reply_t); 2879 xcb_tmp += xcb_block_len; 2880 xcb_buffer_len += xcb_block_len; 2881 xcb_block_len = 0; 2882 /* crtcs */ 2883 xcb_block_len += _aux->num_crtcs * sizeof(uint32_t); 2884 xcb_tmp += xcb_block_len; 2885 xcb_align_to = ALIGNOF(xcb_randr_crtc_t); 2886 /* insert padding */ 2887 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 2888 xcb_buffer_len += xcb_block_len + xcb_pad; 2889 if (0 != xcb_pad) { 2890 xcb_tmp += xcb_pad; 2891 xcb_pad = 0; 2892 } 2893 xcb_block_len = 0; 2894 /* outputs */ 2895 xcb_block_len += _aux->num_outputs * sizeof(uint32_t); 2896 xcb_tmp += xcb_block_len; 2897 xcb_align_to = ALIGNOF(xcb_randr_output_t); 2898 /* insert padding */ 2899 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 2900 xcb_buffer_len += xcb_block_len + xcb_pad; 2901 if (0 != xcb_pad) { 2902 xcb_tmp += xcb_pad; 2903 xcb_pad = 0; 2904 } 2905 xcb_block_len = 0; 2906 /* modes */ 2907 xcb_block_len += _aux->num_modes * sizeof(xcb_randr_mode_info_t); 2908 xcb_tmp += xcb_block_len; 2909 xcb_align_to = ALIGNOF(xcb_randr_mode_info_t); 2910 /* insert padding */ 2911 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 2912 xcb_buffer_len += xcb_block_len + xcb_pad; 2913 if (0 != xcb_pad) { 2914 xcb_tmp += xcb_pad; 2915 xcb_pad = 0; 2916 } 2917 xcb_block_len = 0; 2918 /* names */ 2919 xcb_block_len += _aux->names_len * sizeof(uint8_t); 2920 xcb_tmp += xcb_block_len; 2921 xcb_align_to = ALIGNOF(uint8_t); 2922 /* insert padding */ 2923 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 2924 xcb_buffer_len += xcb_block_len + xcb_pad; 2925 if (0 != xcb_pad) { 2926 xcb_tmp += xcb_pad; 2927 xcb_pad = 0; 2928 } 2929 xcb_block_len = 0; 2930 2931 return xcb_buffer_len; 2932 } 2933 2934 xcb_randr_get_screen_resources_current_cookie_t 2935 xcb_randr_get_screen_resources_current (xcb_connection_t *c, 2936 xcb_window_t window) 2937 { 2938 static const xcb_protocol_request_t xcb_req = { 2939 .count = 2, 2940 .ext = &xcb_randr_id, 2941 .opcode = XCB_RANDR_GET_SCREEN_RESOURCES_CURRENT, 2942 .isvoid = 0 2943 }; 2944 2945 struct iovec xcb_parts[4]; 2946 xcb_randr_get_screen_resources_current_cookie_t xcb_ret; 2947 xcb_randr_get_screen_resources_current_request_t xcb_out; 2948 2949 xcb_out.window = window; 2950 2951 xcb_parts[2].iov_base = (char *) &xcb_out; 2952 xcb_parts[2].iov_len = sizeof(xcb_out); 2953 xcb_parts[3].iov_base = 0; 2954 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2955 2956 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 2957 return xcb_ret; 2958 } 2959 2960 xcb_randr_get_screen_resources_current_cookie_t 2961 xcb_randr_get_screen_resources_current_unchecked (xcb_connection_t *c, 2962 xcb_window_t window) 2963 { 2964 static const xcb_protocol_request_t xcb_req = { 2965 .count = 2, 2966 .ext = &xcb_randr_id, 2967 .opcode = XCB_RANDR_GET_SCREEN_RESOURCES_CURRENT, 2968 .isvoid = 0 2969 }; 2970 2971 struct iovec xcb_parts[4]; 2972 xcb_randr_get_screen_resources_current_cookie_t xcb_ret; 2973 xcb_randr_get_screen_resources_current_request_t xcb_out; 2974 2975 xcb_out.window = window; 2976 2977 xcb_parts[2].iov_base = (char *) &xcb_out; 2978 xcb_parts[2].iov_len = sizeof(xcb_out); 2979 xcb_parts[3].iov_base = 0; 2980 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2981 2982 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 2983 return xcb_ret; 2984 } 2985 2986 xcb_randr_crtc_t * 2987 xcb_randr_get_screen_resources_current_crtcs (const xcb_randr_get_screen_resources_current_reply_t *R) 2988 { 2989 return (xcb_randr_crtc_t *) (R + 1); 2990 } 2991 2992 int 2993 xcb_randr_get_screen_resources_current_crtcs_length (const xcb_randr_get_screen_resources_current_reply_t *R) 2994 { 2995 return R->num_crtcs; 2996 } 2997 2998 xcb_generic_iterator_t 2999 xcb_randr_get_screen_resources_current_crtcs_end (const xcb_randr_get_screen_resources_current_reply_t *R) 3000 { 3001 xcb_generic_iterator_t i; 3002 i.data = ((xcb_randr_crtc_t *) (R + 1)) + (R->num_crtcs); 3003 i.rem = 0; 3004 i.index = (char *) i.data - (char *) R; 3005 return i; 3006 } 3007 3008 xcb_randr_output_t * 3009 xcb_randr_get_screen_resources_current_outputs (const xcb_randr_get_screen_resources_current_reply_t *R) 3010 { 3011 xcb_generic_iterator_t prev = xcb_randr_get_screen_resources_current_crtcs_end(R); 3012 return (xcb_randr_output_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_randr_output_t, prev.index) + 0); 3013 } 3014 3015 int 3016 xcb_randr_get_screen_resources_current_outputs_length (const xcb_randr_get_screen_resources_current_reply_t *R) 3017 { 3018 return R->num_outputs; 3019 } 3020 3021 xcb_generic_iterator_t 3022 xcb_randr_get_screen_resources_current_outputs_end (const xcb_randr_get_screen_resources_current_reply_t *R) 3023 { 3024 xcb_generic_iterator_t i; 3025 xcb_generic_iterator_t prev = xcb_randr_get_screen_resources_current_crtcs_end(R); 3026 i.data = ((xcb_randr_output_t *) ((char*) prev.data + XCB_TYPE_PAD(xcb_randr_output_t, prev.index))) + (R->num_outputs); 3027 i.rem = 0; 3028 i.index = (char *) i.data - (char *) R; 3029 return i; 3030 } 3031 3032 xcb_randr_mode_info_t * 3033 xcb_randr_get_screen_resources_current_modes (const xcb_randr_get_screen_resources_current_reply_t *R) 3034 { 3035 xcb_generic_iterator_t prev = xcb_randr_get_screen_resources_current_outputs_end(R); 3036 return (xcb_randr_mode_info_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_randr_mode_info_t, prev.index) + 0); 3037 } 3038 3039 int 3040 xcb_randr_get_screen_resources_current_modes_length (const xcb_randr_get_screen_resources_current_reply_t *R) 3041 { 3042 return R->num_modes; 3043 } 3044 3045 xcb_randr_mode_info_iterator_t 3046 xcb_randr_get_screen_resources_current_modes_iterator (const xcb_randr_get_screen_resources_current_reply_t *R) 3047 { 3048 xcb_randr_mode_info_iterator_t i; 3049 xcb_generic_iterator_t prev = xcb_randr_get_screen_resources_current_outputs_end(R); 3050 i.data = (xcb_randr_mode_info_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_randr_mode_info_t, prev.index)); 3051 i.rem = R->num_modes; 3052 i.index = (char *) i.data - (char *) R; 3053 return i; 3054 } 3055 3056 uint8_t * 3057 xcb_randr_get_screen_resources_current_names (const xcb_randr_get_screen_resources_current_reply_t *R) 3058 { 3059 xcb_generic_iterator_t prev = xcb_randr_mode_info_end(xcb_randr_get_screen_resources_current_modes_iterator(R)); 3060 return (uint8_t *) ((char *) prev.data + XCB_TYPE_PAD(uint8_t, prev.index) + 0); 3061 } 3062 3063 int 3064 xcb_randr_get_screen_resources_current_names_length (const xcb_randr_get_screen_resources_current_reply_t *R) 3065 { 3066 return R->names_len; 3067 } 3068 3069 xcb_generic_iterator_t 3070 xcb_randr_get_screen_resources_current_names_end (const xcb_randr_get_screen_resources_current_reply_t *R) 3071 { 3072 xcb_generic_iterator_t i; 3073 xcb_generic_iterator_t prev = xcb_randr_mode_info_end(xcb_randr_get_screen_resources_current_modes_iterator(R)); 3074 i.data = ((uint8_t *) ((char*) prev.data + XCB_TYPE_PAD(uint8_t, prev.index))) + (R->names_len); 3075 i.rem = 0; 3076 i.index = (char *) i.data - (char *) R; 3077 return i; 3078 } 3079 3080 xcb_randr_get_screen_resources_current_reply_t * 3081 xcb_randr_get_screen_resources_current_reply (xcb_connection_t *c, 3082 xcb_randr_get_screen_resources_current_cookie_t cookie /**< */, 3083 xcb_generic_error_t **e) 3084 { 3085 return (xcb_randr_get_screen_resources_current_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 3086 } 3087 3088 int 3089 xcb_randr_set_crtc_transform_sizeof (const void *_buffer, 3090 uint32_t filter_params_len) 3091 { 3092 char *xcb_tmp = (char *)_buffer; 3093 const xcb_randr_set_crtc_transform_request_t *_aux = (xcb_randr_set_crtc_transform_request_t *)_buffer; 3094 unsigned int xcb_buffer_len = 0; 3095 unsigned int xcb_block_len = 0; 3096 unsigned int xcb_pad = 0; 3097 unsigned int xcb_align_to = 0; 3098 3099 3100 xcb_block_len += sizeof(xcb_randr_set_crtc_transform_request_t); 3101 xcb_tmp += xcb_block_len; 3102 xcb_buffer_len += xcb_block_len; 3103 xcb_block_len = 0; 3104 /* filter_name */ 3105 xcb_block_len += _aux->filter_len * sizeof(char); 3106 xcb_tmp += xcb_block_len; 3107 xcb_align_to = ALIGNOF(char); 3108 xcb_align_to = 4; 3109 /* insert padding */ 3110 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 3111 xcb_buffer_len += xcb_block_len + xcb_pad; 3112 if (0 != xcb_pad) { 3113 xcb_tmp += xcb_pad; 3114 xcb_pad = 0; 3115 } 3116 xcb_block_len = 0; 3117 /* insert padding */ 3118 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 3119 xcb_buffer_len += xcb_block_len + xcb_pad; 3120 if (0 != xcb_pad) { 3121 xcb_tmp += xcb_pad; 3122 xcb_pad = 0; 3123 } 3124 xcb_block_len = 0; 3125 /* filter_params */ 3126 xcb_block_len += filter_params_len * sizeof(xcb_render_fixed_t); 3127 xcb_tmp += xcb_block_len; 3128 xcb_align_to = ALIGNOF(xcb_render_fixed_t); 3129 /* insert padding */ 3130 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 3131 xcb_buffer_len += xcb_block_len + xcb_pad; 3132 if (0 != xcb_pad) { 3133 xcb_tmp += xcb_pad; 3134 xcb_pad = 0; 3135 } 3136 xcb_block_len = 0; 3137 3138 return xcb_buffer_len; 3139 } 3140 3141 xcb_void_cookie_t 3142 xcb_randr_set_crtc_transform_checked (xcb_connection_t *c, 3143 xcb_randr_crtc_t crtc, 3144 xcb_render_transform_t transform, 3145 uint16_t filter_len, 3146 const char *filter_name, 3147 uint32_t filter_params_len, 3148 const xcb_render_fixed_t *filter_params) 3149 { 3150 static const xcb_protocol_request_t xcb_req = { 3151 .count = 6, 3152 .ext = &xcb_randr_id, 3153 .opcode = XCB_RANDR_SET_CRTC_TRANSFORM, 3154 .isvoid = 1 3155 }; 3156 3157 struct iovec xcb_parts[8]; 3158 xcb_void_cookie_t xcb_ret; 3159 xcb_randr_set_crtc_transform_request_t xcb_out; 3160 3161 xcb_out.crtc = crtc; 3162 xcb_out.transform = transform; 3163 xcb_out.filter_len = filter_len; 3164 memset(xcb_out.pad0, 0, 2); 3165 3166 xcb_parts[2].iov_base = (char *) &xcb_out; 3167 xcb_parts[2].iov_len = sizeof(xcb_out); 3168 xcb_parts[3].iov_base = 0; 3169 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 3170 /* char filter_name */ 3171 xcb_parts[4].iov_base = (char *) filter_name; 3172 xcb_parts[4].iov_len = filter_len * sizeof(char); 3173 xcb_parts[5].iov_base = 0; 3174 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 3175 /* xcb_render_fixed_t filter_params */ 3176 xcb_parts[6].iov_base = (char *) filter_params; 3177 xcb_parts[6].iov_len = filter_params_len * sizeof(xcb_render_fixed_t); 3178 xcb_parts[7].iov_base = 0; 3179 xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3; 3180 3181 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 3182 return xcb_ret; 3183 } 3184 3185 xcb_void_cookie_t 3186 xcb_randr_set_crtc_transform (xcb_connection_t *c, 3187 xcb_randr_crtc_t crtc, 3188 xcb_render_transform_t transform, 3189 uint16_t filter_len, 3190 const char *filter_name, 3191 uint32_t filter_params_len, 3192 const xcb_render_fixed_t *filter_params) 3193 { 3194 static const xcb_protocol_request_t xcb_req = { 3195 .count = 6, 3196 .ext = &xcb_randr_id, 3197 .opcode = XCB_RANDR_SET_CRTC_TRANSFORM, 3198 .isvoid = 1 3199 }; 3200 3201 struct iovec xcb_parts[8]; 3202 xcb_void_cookie_t xcb_ret; 3203 xcb_randr_set_crtc_transform_request_t xcb_out; 3204 3205 xcb_out.crtc = crtc; 3206 xcb_out.transform = transform; 3207 xcb_out.filter_len = filter_len; 3208 memset(xcb_out.pad0, 0, 2); 3209 3210 xcb_parts[2].iov_base = (char *) &xcb_out; 3211 xcb_parts[2].iov_len = sizeof(xcb_out); 3212 xcb_parts[3].iov_base = 0; 3213 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 3214 /* char filter_name */ 3215 xcb_parts[4].iov_base = (char *) filter_name; 3216 xcb_parts[4].iov_len = filter_len * sizeof(char); 3217 xcb_parts[5].iov_base = 0; 3218 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 3219 /* xcb_render_fixed_t filter_params */ 3220 xcb_parts[6].iov_base = (char *) filter_params; 3221 xcb_parts[6].iov_len = filter_params_len * sizeof(xcb_render_fixed_t); 3222 xcb_parts[7].iov_base = 0; 3223 xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3; 3224 3225 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 3226 return xcb_ret; 3227 } 3228 3229 char * 3230 xcb_randr_set_crtc_transform_filter_name (const xcb_randr_set_crtc_transform_request_t *R) 3231 { 3232 return (char *) (R + 1); 3233 } 3234 3235 int 3236 xcb_randr_set_crtc_transform_filter_name_length (const xcb_randr_set_crtc_transform_request_t *R) 3237 { 3238 return R->filter_len; 3239 } 3240 3241 xcb_generic_iterator_t 3242 xcb_randr_set_crtc_transform_filter_name_end (const xcb_randr_set_crtc_transform_request_t *R) 3243 { 3244 xcb_generic_iterator_t i; 3245 i.data = ((char *) (R + 1)) + (R->filter_len); 3246 i.rem = 0; 3247 i.index = (char *) i.data - (char *) R; 3248 return i; 3249 } 3250 3251 xcb_render_fixed_t * 3252 xcb_randr_set_crtc_transform_filter_params (const xcb_randr_set_crtc_transform_request_t *R) 3253 { 3254 xcb_generic_iterator_t prev = xcb_randr_set_crtc_transform_filter_name_end(R); 3255 return (xcb_render_fixed_t *) ((char *) prev.data + ((-prev.index) & (4 - 1)) + 0); 3256 } 3257 3258 int 3259 xcb_randr_set_crtc_transform_filter_params_length (const xcb_randr_set_crtc_transform_request_t *R) 3260 { 3261 return ((((char*)R) + R->length * 4) - (char*)(xcb_randr_set_crtc_transform_filter_params(R))) / sizeof(xcb_render_fixed_t); 3262 } 3263 3264 xcb_generic_iterator_t 3265 xcb_randr_set_crtc_transform_filter_params_end (const xcb_randr_set_crtc_transform_request_t *R) 3266 { 3267 xcb_generic_iterator_t i; 3268 xcb_generic_iterator_t prev = xcb_randr_set_crtc_transform_filter_name_end(R); 3269 i.data = ((xcb_render_fixed_t *) ((char*) prev.data + ((-prev.index) & (4 - 1)))) + (((((char*)R) + R->length * 4) - (char*)(xcb_randr_set_crtc_transform_filter_params(R))) / sizeof(xcb_render_fixed_t)); 3270 i.rem = 0; 3271 i.index = (char *) i.data - (char *) R; 3272 return i; 3273 } 3274 3275 int 3276 xcb_randr_get_crtc_transform_sizeof (const void *_buffer) 3277 { 3278 char *xcb_tmp = (char *)_buffer; 3279 const xcb_randr_get_crtc_transform_reply_t *_aux = (xcb_randr_get_crtc_transform_reply_t *)_buffer; 3280 unsigned int xcb_buffer_len = 0; 3281 unsigned int xcb_block_len = 0; 3282 unsigned int xcb_pad = 0; 3283 unsigned int xcb_align_to = 0; 3284 3285 3286 xcb_block_len += sizeof(xcb_randr_get_crtc_transform_reply_t); 3287 xcb_tmp += xcb_block_len; 3288 xcb_buffer_len += xcb_block_len; 3289 xcb_block_len = 0; 3290 /* pending_filter_name */ 3291 xcb_block_len += _aux->pending_len * sizeof(char); 3292 xcb_tmp += xcb_block_len; 3293 xcb_align_to = ALIGNOF(char); 3294 xcb_align_to = 4; 3295 /* insert padding */ 3296 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 3297 xcb_buffer_len += xcb_block_len + xcb_pad; 3298 if (0 != xcb_pad) { 3299 xcb_tmp += xcb_pad; 3300 xcb_pad = 0; 3301 } 3302 xcb_block_len = 0; 3303 /* insert padding */ 3304 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 3305 xcb_buffer_len += xcb_block_len + xcb_pad; 3306 if (0 != xcb_pad) { 3307 xcb_tmp += xcb_pad; 3308 xcb_pad = 0; 3309 } 3310 xcb_block_len = 0; 3311 /* pending_params */ 3312 xcb_block_len += _aux->pending_nparams * sizeof(xcb_render_fixed_t); 3313 xcb_tmp += xcb_block_len; 3314 xcb_align_to = ALIGNOF(xcb_render_fixed_t); 3315 /* insert padding */ 3316 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 3317 xcb_buffer_len += xcb_block_len + xcb_pad; 3318 if (0 != xcb_pad) { 3319 xcb_tmp += xcb_pad; 3320 xcb_pad = 0; 3321 } 3322 xcb_block_len = 0; 3323 /* current_filter_name */ 3324 xcb_block_len += _aux->current_len * sizeof(char); 3325 xcb_tmp += xcb_block_len; 3326 xcb_align_to = ALIGNOF(char); 3327 xcb_align_to = 4; 3328 /* insert padding */ 3329 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 3330 xcb_buffer_len += xcb_block_len + xcb_pad; 3331 if (0 != xcb_pad) { 3332 xcb_tmp += xcb_pad; 3333 xcb_pad = 0; 3334 } 3335 xcb_block_len = 0; 3336 /* insert padding */ 3337 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 3338 xcb_buffer_len += xcb_block_len + xcb_pad; 3339 if (0 != xcb_pad) { 3340 xcb_tmp += xcb_pad; 3341 xcb_pad = 0; 3342 } 3343 xcb_block_len = 0; 3344 /* current_params */ 3345 xcb_block_len += _aux->current_nparams * sizeof(xcb_render_fixed_t); 3346 xcb_tmp += xcb_block_len; 3347 xcb_align_to = ALIGNOF(xcb_render_fixed_t); 3348 /* insert padding */ 3349 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 3350 xcb_buffer_len += xcb_block_len + xcb_pad; 3351 if (0 != xcb_pad) { 3352 xcb_tmp += xcb_pad; 3353 xcb_pad = 0; 3354 } 3355 xcb_block_len = 0; 3356 3357 return xcb_buffer_len; 3358 } 3359 3360 xcb_randr_get_crtc_transform_cookie_t 3361 xcb_randr_get_crtc_transform (xcb_connection_t *c, 3362 xcb_randr_crtc_t crtc) 3363 { 3364 static const xcb_protocol_request_t xcb_req = { 3365 .count = 2, 3366 .ext = &xcb_randr_id, 3367 .opcode = XCB_RANDR_GET_CRTC_TRANSFORM, 3368 .isvoid = 0 3369 }; 3370 3371 struct iovec xcb_parts[4]; 3372 xcb_randr_get_crtc_transform_cookie_t xcb_ret; 3373 xcb_randr_get_crtc_transform_request_t xcb_out; 3374 3375 xcb_out.crtc = crtc; 3376 3377 xcb_parts[2].iov_base = (char *) &xcb_out; 3378 xcb_parts[2].iov_len = sizeof(xcb_out); 3379 xcb_parts[3].iov_base = 0; 3380 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 3381 3382 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 3383 return xcb_ret; 3384 } 3385 3386 xcb_randr_get_crtc_transform_cookie_t 3387 xcb_randr_get_crtc_transform_unchecked (xcb_connection_t *c, 3388 xcb_randr_crtc_t crtc) 3389 { 3390 static const xcb_protocol_request_t xcb_req = { 3391 .count = 2, 3392 .ext = &xcb_randr_id, 3393 .opcode = XCB_RANDR_GET_CRTC_TRANSFORM, 3394 .isvoid = 0 3395 }; 3396 3397 struct iovec xcb_parts[4]; 3398 xcb_randr_get_crtc_transform_cookie_t xcb_ret; 3399 xcb_randr_get_crtc_transform_request_t xcb_out; 3400 3401 xcb_out.crtc = crtc; 3402 3403 xcb_parts[2].iov_base = (char *) &xcb_out; 3404 xcb_parts[2].iov_len = sizeof(xcb_out); 3405 xcb_parts[3].iov_base = 0; 3406 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 3407 3408 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 3409 return xcb_ret; 3410 } 3411 3412 char * 3413 xcb_randr_get_crtc_transform_pending_filter_name (const xcb_randr_get_crtc_transform_reply_t *R) 3414 { 3415 return (char *) (R + 1); 3416 } 3417 3418 int 3419 xcb_randr_get_crtc_transform_pending_filter_name_length (const xcb_randr_get_crtc_transform_reply_t *R) 3420 { 3421 return R->pending_len; 3422 } 3423 3424 xcb_generic_iterator_t 3425 xcb_randr_get_crtc_transform_pending_filter_name_end (const xcb_randr_get_crtc_transform_reply_t *R) 3426 { 3427 xcb_generic_iterator_t i; 3428 i.data = ((char *) (R + 1)) + (R->pending_len); 3429 i.rem = 0; 3430 i.index = (char *) i.data - (char *) R; 3431 return i; 3432 } 3433 3434 xcb_render_fixed_t * 3435 xcb_randr_get_crtc_transform_pending_params (const xcb_randr_get_crtc_transform_reply_t *R) 3436 { 3437 xcb_generic_iterator_t prev = xcb_randr_get_crtc_transform_pending_filter_name_end(R); 3438 return (xcb_render_fixed_t *) ((char *) prev.data + ((-prev.index) & (4 - 1)) + 0); 3439 } 3440 3441 int 3442 xcb_randr_get_crtc_transform_pending_params_length (const xcb_randr_get_crtc_transform_reply_t *R) 3443 { 3444 return R->pending_nparams; 3445 } 3446 3447 xcb_generic_iterator_t 3448 xcb_randr_get_crtc_transform_pending_params_end (const xcb_randr_get_crtc_transform_reply_t *R) 3449 { 3450 xcb_generic_iterator_t i; 3451 xcb_generic_iterator_t prev = xcb_randr_get_crtc_transform_pending_filter_name_end(R); 3452 i.data = ((xcb_render_fixed_t *) ((char*) prev.data + ((-prev.index) & (4 - 1)))) + (R->pending_nparams); 3453 i.rem = 0; 3454 i.index = (char *) i.data - (char *) R; 3455 return i; 3456 } 3457 3458 char * 3459 xcb_randr_get_crtc_transform_current_filter_name (const xcb_randr_get_crtc_transform_reply_t *R) 3460 { 3461 xcb_generic_iterator_t prev = xcb_randr_get_crtc_transform_pending_params_end(R); 3462 return (char *) ((char *) prev.data + XCB_TYPE_PAD(char, prev.index) + 0); 3463 } 3464 3465 int 3466 xcb_randr_get_crtc_transform_current_filter_name_length (const xcb_randr_get_crtc_transform_reply_t *R) 3467 { 3468 return R->current_len; 3469 } 3470 3471 xcb_generic_iterator_t 3472 xcb_randr_get_crtc_transform_current_filter_name_end (const xcb_randr_get_crtc_transform_reply_t *R) 3473 { 3474 xcb_generic_iterator_t i; 3475 xcb_generic_iterator_t prev = xcb_randr_get_crtc_transform_pending_params_end(R); 3476 i.data = ((char *) ((char*) prev.data + XCB_TYPE_PAD(char, prev.index))) + (R->current_len); 3477 i.rem = 0; 3478 i.index = (char *) i.data - (char *) R; 3479 return i; 3480 } 3481 3482 xcb_render_fixed_t * 3483 xcb_randr_get_crtc_transform_current_params (const xcb_randr_get_crtc_transform_reply_t *R) 3484 { 3485 xcb_generic_iterator_t prev = xcb_randr_get_crtc_transform_current_filter_name_end(R); 3486 return (xcb_render_fixed_t *) ((char *) prev.data + ((-prev.index) & (4 - 1)) + 0); 3487 } 3488 3489 int 3490 xcb_randr_get_crtc_transform_current_params_length (const xcb_randr_get_crtc_transform_reply_t *R) 3491 { 3492 return R->current_nparams; 3493 } 3494 3495 xcb_generic_iterator_t 3496 xcb_randr_get_crtc_transform_current_params_end (const xcb_randr_get_crtc_transform_reply_t *R) 3497 { 3498 xcb_generic_iterator_t i; 3499 xcb_generic_iterator_t prev = xcb_randr_get_crtc_transform_current_filter_name_end(R); 3500 i.data = ((xcb_render_fixed_t *) ((char*) prev.data + ((-prev.index) & (4 - 1)))) + (R->current_nparams); 3501 i.rem = 0; 3502 i.index = (char *) i.data - (char *) R; 3503 return i; 3504 } 3505 3506 xcb_randr_get_crtc_transform_reply_t * 3507 xcb_randr_get_crtc_transform_reply (xcb_connection_t *c, 3508 xcb_randr_get_crtc_transform_cookie_t cookie /**< */, 3509 xcb_generic_error_t **e) 3510 { 3511 return (xcb_randr_get_crtc_transform_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 3512 } 3513 3514 xcb_randr_get_panning_cookie_t 3515 xcb_randr_get_panning (xcb_connection_t *c, 3516 xcb_randr_crtc_t crtc) 3517 { 3518 static const xcb_protocol_request_t xcb_req = { 3519 .count = 2, 3520 .ext = &xcb_randr_id, 3521 .opcode = XCB_RANDR_GET_PANNING, 3522 .isvoid = 0 3523 }; 3524 3525 struct iovec xcb_parts[4]; 3526 xcb_randr_get_panning_cookie_t xcb_ret; 3527 xcb_randr_get_panning_request_t xcb_out; 3528 3529 xcb_out.crtc = crtc; 3530 3531 xcb_parts[2].iov_base = (char *) &xcb_out; 3532 xcb_parts[2].iov_len = sizeof(xcb_out); 3533 xcb_parts[3].iov_base = 0; 3534 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 3535 3536 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 3537 return xcb_ret; 3538 } 3539 3540 xcb_randr_get_panning_cookie_t 3541 xcb_randr_get_panning_unchecked (xcb_connection_t *c, 3542 xcb_randr_crtc_t crtc) 3543 { 3544 static const xcb_protocol_request_t xcb_req = { 3545 .count = 2, 3546 .ext = &xcb_randr_id, 3547 .opcode = XCB_RANDR_GET_PANNING, 3548 .isvoid = 0 3549 }; 3550 3551 struct iovec xcb_parts[4]; 3552 xcb_randr_get_panning_cookie_t xcb_ret; 3553 xcb_randr_get_panning_request_t xcb_out; 3554 3555 xcb_out.crtc = crtc; 3556 3557 xcb_parts[2].iov_base = (char *) &xcb_out; 3558 xcb_parts[2].iov_len = sizeof(xcb_out); 3559 xcb_parts[3].iov_base = 0; 3560 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 3561 3562 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 3563 return xcb_ret; 3564 } 3565 3566 xcb_randr_get_panning_reply_t * 3567 xcb_randr_get_panning_reply (xcb_connection_t *c, 3568 xcb_randr_get_panning_cookie_t cookie /**< */, 3569 xcb_generic_error_t **e) 3570 { 3571 return (xcb_randr_get_panning_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 3572 } 3573 3574 xcb_randr_set_panning_cookie_t 3575 xcb_randr_set_panning (xcb_connection_t *c, 3576 xcb_randr_crtc_t crtc, 3577 xcb_timestamp_t timestamp, 3578 uint16_t left, 3579 uint16_t top, 3580 uint16_t width, 3581 uint16_t height, 3582 uint16_t track_left, 3583 uint16_t track_top, 3584 uint16_t track_width, 3585 uint16_t track_height, 3586 int16_t border_left, 3587 int16_t border_top, 3588 int16_t border_right, 3589 int16_t border_bottom) 3590 { 3591 static const xcb_protocol_request_t xcb_req = { 3592 .count = 2, 3593 .ext = &xcb_randr_id, 3594 .opcode = XCB_RANDR_SET_PANNING, 3595 .isvoid = 0 3596 }; 3597 3598 struct iovec xcb_parts[4]; 3599 xcb_randr_set_panning_cookie_t xcb_ret; 3600 xcb_randr_set_panning_request_t xcb_out; 3601 3602 xcb_out.crtc = crtc; 3603 xcb_out.timestamp = timestamp; 3604 xcb_out.left = left; 3605 xcb_out.top = top; 3606 xcb_out.width = width; 3607 xcb_out.height = height; 3608 xcb_out.track_left = track_left; 3609 xcb_out.track_top = track_top; 3610 xcb_out.track_width = track_width; 3611 xcb_out.track_height = track_height; 3612 xcb_out.border_left = border_left; 3613 xcb_out.border_top = border_top; 3614 xcb_out.border_right = border_right; 3615 xcb_out.border_bottom = border_bottom; 3616 3617 xcb_parts[2].iov_base = (char *) &xcb_out; 3618 xcb_parts[2].iov_len = sizeof(xcb_out); 3619 xcb_parts[3].iov_base = 0; 3620 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 3621 3622 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 3623 return xcb_ret; 3624 } 3625 3626 xcb_randr_set_panning_cookie_t 3627 xcb_randr_set_panning_unchecked (xcb_connection_t *c, 3628 xcb_randr_crtc_t crtc, 3629 xcb_timestamp_t timestamp, 3630 uint16_t left, 3631 uint16_t top, 3632 uint16_t width, 3633 uint16_t height, 3634 uint16_t track_left, 3635 uint16_t track_top, 3636 uint16_t track_width, 3637 uint16_t track_height, 3638 int16_t border_left, 3639 int16_t border_top, 3640 int16_t border_right, 3641 int16_t border_bottom) 3642 { 3643 static const xcb_protocol_request_t xcb_req = { 3644 .count = 2, 3645 .ext = &xcb_randr_id, 3646 .opcode = XCB_RANDR_SET_PANNING, 3647 .isvoid = 0 3648 }; 3649 3650 struct iovec xcb_parts[4]; 3651 xcb_randr_set_panning_cookie_t xcb_ret; 3652 xcb_randr_set_panning_request_t xcb_out; 3653 3654 xcb_out.crtc = crtc; 3655 xcb_out.timestamp = timestamp; 3656 xcb_out.left = left; 3657 xcb_out.top = top; 3658 xcb_out.width = width; 3659 xcb_out.height = height; 3660 xcb_out.track_left = track_left; 3661 xcb_out.track_top = track_top; 3662 xcb_out.track_width = track_width; 3663 xcb_out.track_height = track_height; 3664 xcb_out.border_left = border_left; 3665 xcb_out.border_top = border_top; 3666 xcb_out.border_right = border_right; 3667 xcb_out.border_bottom = border_bottom; 3668 3669 xcb_parts[2].iov_base = (char *) &xcb_out; 3670 xcb_parts[2].iov_len = sizeof(xcb_out); 3671 xcb_parts[3].iov_base = 0; 3672 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 3673 3674 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 3675 return xcb_ret; 3676 } 3677 3678 xcb_randr_set_panning_reply_t * 3679 xcb_randr_set_panning_reply (xcb_connection_t *c, 3680 xcb_randr_set_panning_cookie_t cookie /**< */, 3681 xcb_generic_error_t **e) 3682 { 3683 return (xcb_randr_set_panning_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 3684 } 3685 3686 xcb_void_cookie_t 3687 xcb_randr_set_output_primary_checked (xcb_connection_t *c, 3688 xcb_window_t window, 3689 xcb_randr_output_t output) 3690 { 3691 static const xcb_protocol_request_t xcb_req = { 3692 .count = 2, 3693 .ext = &xcb_randr_id, 3694 .opcode = XCB_RANDR_SET_OUTPUT_PRIMARY, 3695 .isvoid = 1 3696 }; 3697 3698 struct iovec xcb_parts[4]; 3699 xcb_void_cookie_t xcb_ret; 3700 xcb_randr_set_output_primary_request_t xcb_out; 3701 3702 xcb_out.window = window; 3703 xcb_out.output = output; 3704 3705 xcb_parts[2].iov_base = (char *) &xcb_out; 3706 xcb_parts[2].iov_len = sizeof(xcb_out); 3707 xcb_parts[3].iov_base = 0; 3708 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 3709 3710 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 3711 return xcb_ret; 3712 } 3713 3714 xcb_void_cookie_t 3715 xcb_randr_set_output_primary (xcb_connection_t *c, 3716 xcb_window_t window, 3717 xcb_randr_output_t output) 3718 { 3719 static const xcb_protocol_request_t xcb_req = { 3720 .count = 2, 3721 .ext = &xcb_randr_id, 3722 .opcode = XCB_RANDR_SET_OUTPUT_PRIMARY, 3723 .isvoid = 1 3724 }; 3725 3726 struct iovec xcb_parts[4]; 3727 xcb_void_cookie_t xcb_ret; 3728 xcb_randr_set_output_primary_request_t xcb_out; 3729 3730 xcb_out.window = window; 3731 xcb_out.output = output; 3732 3733 xcb_parts[2].iov_base = (char *) &xcb_out; 3734 xcb_parts[2].iov_len = sizeof(xcb_out); 3735 xcb_parts[3].iov_base = 0; 3736 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 3737 3738 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 3739 return xcb_ret; 3740 } 3741 3742 xcb_randr_get_output_primary_cookie_t 3743 xcb_randr_get_output_primary (xcb_connection_t *c, 3744 xcb_window_t window) 3745 { 3746 static const xcb_protocol_request_t xcb_req = { 3747 .count = 2, 3748 .ext = &xcb_randr_id, 3749 .opcode = XCB_RANDR_GET_OUTPUT_PRIMARY, 3750 .isvoid = 0 3751 }; 3752 3753 struct iovec xcb_parts[4]; 3754 xcb_randr_get_output_primary_cookie_t xcb_ret; 3755 xcb_randr_get_output_primary_request_t xcb_out; 3756 3757 xcb_out.window = window; 3758 3759 xcb_parts[2].iov_base = (char *) &xcb_out; 3760 xcb_parts[2].iov_len = sizeof(xcb_out); 3761 xcb_parts[3].iov_base = 0; 3762 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 3763 3764 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 3765 return xcb_ret; 3766 } 3767 3768 xcb_randr_get_output_primary_cookie_t 3769 xcb_randr_get_output_primary_unchecked (xcb_connection_t *c, 3770 xcb_window_t window) 3771 { 3772 static const xcb_protocol_request_t xcb_req = { 3773 .count = 2, 3774 .ext = &xcb_randr_id, 3775 .opcode = XCB_RANDR_GET_OUTPUT_PRIMARY, 3776 .isvoid = 0 3777 }; 3778 3779 struct iovec xcb_parts[4]; 3780 xcb_randr_get_output_primary_cookie_t xcb_ret; 3781 xcb_randr_get_output_primary_request_t xcb_out; 3782 3783 xcb_out.window = window; 3784 3785 xcb_parts[2].iov_base = (char *) &xcb_out; 3786 xcb_parts[2].iov_len = sizeof(xcb_out); 3787 xcb_parts[3].iov_base = 0; 3788 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 3789 3790 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 3791 return xcb_ret; 3792 } 3793 3794 xcb_randr_get_output_primary_reply_t * 3795 xcb_randr_get_output_primary_reply (xcb_connection_t *c, 3796 xcb_randr_get_output_primary_cookie_t cookie /**< */, 3797 xcb_generic_error_t **e) 3798 { 3799 return (xcb_randr_get_output_primary_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 3800 } 3801 3802 int 3803 xcb_randr_get_providers_sizeof (const void *_buffer) 3804 { 3805 char *xcb_tmp = (char *)_buffer; 3806 const xcb_randr_get_providers_reply_t *_aux = (xcb_randr_get_providers_reply_t *)_buffer; 3807 unsigned int xcb_buffer_len = 0; 3808 unsigned int xcb_block_len = 0; 3809 unsigned int xcb_pad = 0; 3810 unsigned int xcb_align_to = 0; 3811 3812 3813 xcb_block_len += sizeof(xcb_randr_get_providers_reply_t); 3814 xcb_tmp += xcb_block_len; 3815 xcb_buffer_len += xcb_block_len; 3816 xcb_block_len = 0; 3817 /* providers */ 3818 xcb_block_len += _aux->num_providers * sizeof(xcb_randr_provider_t); 3819 xcb_tmp += xcb_block_len; 3820 xcb_align_to = ALIGNOF(xcb_randr_provider_t); 3821 /* insert padding */ 3822 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 3823 xcb_buffer_len += xcb_block_len + xcb_pad; 3824 if (0 != xcb_pad) { 3825 xcb_tmp += xcb_pad; 3826 xcb_pad = 0; 3827 } 3828 xcb_block_len = 0; 3829 3830 return xcb_buffer_len; 3831 } 3832 3833 xcb_randr_get_providers_cookie_t 3834 xcb_randr_get_providers (xcb_connection_t *c, 3835 xcb_window_t window) 3836 { 3837 static const xcb_protocol_request_t xcb_req = { 3838 .count = 2, 3839 .ext = &xcb_randr_id, 3840 .opcode = XCB_RANDR_GET_PROVIDERS, 3841 .isvoid = 0 3842 }; 3843 3844 struct iovec xcb_parts[4]; 3845 xcb_randr_get_providers_cookie_t xcb_ret; 3846 xcb_randr_get_providers_request_t xcb_out; 3847 3848 xcb_out.window = window; 3849 3850 xcb_parts[2].iov_base = (char *) &xcb_out; 3851 xcb_parts[2].iov_len = sizeof(xcb_out); 3852 xcb_parts[3].iov_base = 0; 3853 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 3854 3855 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 3856 return xcb_ret; 3857 } 3858 3859 xcb_randr_get_providers_cookie_t 3860 xcb_randr_get_providers_unchecked (xcb_connection_t *c, 3861 xcb_window_t window) 3862 { 3863 static const xcb_protocol_request_t xcb_req = { 3864 .count = 2, 3865 .ext = &xcb_randr_id, 3866 .opcode = XCB_RANDR_GET_PROVIDERS, 3867 .isvoid = 0 3868 }; 3869 3870 struct iovec xcb_parts[4]; 3871 xcb_randr_get_providers_cookie_t xcb_ret; 3872 xcb_randr_get_providers_request_t xcb_out; 3873 3874 xcb_out.window = window; 3875 3876 xcb_parts[2].iov_base = (char *) &xcb_out; 3877 xcb_parts[2].iov_len = sizeof(xcb_out); 3878 xcb_parts[3].iov_base = 0; 3879 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 3880 3881 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 3882 return xcb_ret; 3883 } 3884 3885 xcb_randr_provider_t * 3886 xcb_randr_get_providers_providers (const xcb_randr_get_providers_reply_t *R) 3887 { 3888 return (xcb_randr_provider_t *) (R + 1); 3889 } 3890 3891 int 3892 xcb_randr_get_providers_providers_length (const xcb_randr_get_providers_reply_t *R) 3893 { 3894 return R->num_providers; 3895 } 3896 3897 xcb_generic_iterator_t 3898 xcb_randr_get_providers_providers_end (const xcb_randr_get_providers_reply_t *R) 3899 { 3900 xcb_generic_iterator_t i; 3901 i.data = ((xcb_randr_provider_t *) (R + 1)) + (R->num_providers); 3902 i.rem = 0; 3903 i.index = (char *) i.data - (char *) R; 3904 return i; 3905 } 3906 3907 xcb_randr_get_providers_reply_t * 3908 xcb_randr_get_providers_reply (xcb_connection_t *c, 3909 xcb_randr_get_providers_cookie_t cookie /**< */, 3910 xcb_generic_error_t **e) 3911 { 3912 return (xcb_randr_get_providers_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 3913 } 3914 3915 int 3916 xcb_randr_get_provider_info_sizeof (const void *_buffer) 3917 { 3918 char *xcb_tmp = (char *)_buffer; 3919 const xcb_randr_get_provider_info_reply_t *_aux = (xcb_randr_get_provider_info_reply_t *)_buffer; 3920 unsigned int xcb_buffer_len = 0; 3921 unsigned int xcb_block_len = 0; 3922 unsigned int xcb_pad = 0; 3923 unsigned int xcb_align_to = 0; 3924 3925 3926 xcb_block_len += sizeof(xcb_randr_get_provider_info_reply_t); 3927 xcb_tmp += xcb_block_len; 3928 xcb_buffer_len += xcb_block_len; 3929 xcb_block_len = 0; 3930 /* crtcs */ 3931 xcb_block_len += _aux->num_crtcs * sizeof(uint32_t); 3932 xcb_tmp += xcb_block_len; 3933 xcb_align_to = ALIGNOF(xcb_randr_crtc_t); 3934 /* insert padding */ 3935 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 3936 xcb_buffer_len += xcb_block_len + xcb_pad; 3937 if (0 != xcb_pad) { 3938 xcb_tmp += xcb_pad; 3939 xcb_pad = 0; 3940 } 3941 xcb_block_len = 0; 3942 /* outputs */ 3943 xcb_block_len += _aux->num_outputs * sizeof(uint32_t); 3944 xcb_tmp += xcb_block_len; 3945 xcb_align_to = ALIGNOF(xcb_randr_output_t); 3946 /* insert padding */ 3947 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 3948 xcb_buffer_len += xcb_block_len + xcb_pad; 3949 if (0 != xcb_pad) { 3950 xcb_tmp += xcb_pad; 3951 xcb_pad = 0; 3952 } 3953 xcb_block_len = 0; 3954 /* associated_providers */ 3955 xcb_block_len += _aux->num_associated_providers * sizeof(uint32_t); 3956 xcb_tmp += xcb_block_len; 3957 xcb_align_to = ALIGNOF(xcb_randr_provider_t); 3958 /* insert padding */ 3959 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 3960 xcb_buffer_len += xcb_block_len + xcb_pad; 3961 if (0 != xcb_pad) { 3962 xcb_tmp += xcb_pad; 3963 xcb_pad = 0; 3964 } 3965 xcb_block_len = 0; 3966 /* associated_capability */ 3967 xcb_block_len += _aux->num_associated_providers * sizeof(uint32_t); 3968 xcb_tmp += xcb_block_len; 3969 xcb_align_to = ALIGNOF(uint32_t); 3970 /* insert padding */ 3971 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 3972 xcb_buffer_len += xcb_block_len + xcb_pad; 3973 if (0 != xcb_pad) { 3974 xcb_tmp += xcb_pad; 3975 xcb_pad = 0; 3976 } 3977 xcb_block_len = 0; 3978 /* name */ 3979 xcb_block_len += _aux->name_len * sizeof(char); 3980 xcb_tmp += xcb_block_len; 3981 xcb_align_to = ALIGNOF(char); 3982 /* insert padding */ 3983 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 3984 xcb_buffer_len += xcb_block_len + xcb_pad; 3985 if (0 != xcb_pad) { 3986 xcb_tmp += xcb_pad; 3987 xcb_pad = 0; 3988 } 3989 xcb_block_len = 0; 3990 3991 return xcb_buffer_len; 3992 } 3993 3994 xcb_randr_get_provider_info_cookie_t 3995 xcb_randr_get_provider_info (xcb_connection_t *c, 3996 xcb_randr_provider_t provider, 3997 xcb_timestamp_t config_timestamp) 3998 { 3999 static const xcb_protocol_request_t xcb_req = { 4000 .count = 2, 4001 .ext = &xcb_randr_id, 4002 .opcode = XCB_RANDR_GET_PROVIDER_INFO, 4003 .isvoid = 0 4004 }; 4005 4006 struct iovec xcb_parts[4]; 4007 xcb_randr_get_provider_info_cookie_t xcb_ret; 4008 xcb_randr_get_provider_info_request_t xcb_out; 4009 4010 xcb_out.provider = provider; 4011 xcb_out.config_timestamp = config_timestamp; 4012 4013 xcb_parts[2].iov_base = (char *) &xcb_out; 4014 xcb_parts[2].iov_len = sizeof(xcb_out); 4015 xcb_parts[3].iov_base = 0; 4016 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 4017 4018 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 4019 return xcb_ret; 4020 } 4021 4022 xcb_randr_get_provider_info_cookie_t 4023 xcb_randr_get_provider_info_unchecked (xcb_connection_t *c, 4024 xcb_randr_provider_t provider, 4025 xcb_timestamp_t config_timestamp) 4026 { 4027 static const xcb_protocol_request_t xcb_req = { 4028 .count = 2, 4029 .ext = &xcb_randr_id, 4030 .opcode = XCB_RANDR_GET_PROVIDER_INFO, 4031 .isvoid = 0 4032 }; 4033 4034 struct iovec xcb_parts[4]; 4035 xcb_randr_get_provider_info_cookie_t xcb_ret; 4036 xcb_randr_get_provider_info_request_t xcb_out; 4037 4038 xcb_out.provider = provider; 4039 xcb_out.config_timestamp = config_timestamp; 4040 4041 xcb_parts[2].iov_base = (char *) &xcb_out; 4042 xcb_parts[2].iov_len = sizeof(xcb_out); 4043 xcb_parts[3].iov_base = 0; 4044 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 4045 4046 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 4047 return xcb_ret; 4048 } 4049 4050 xcb_randr_crtc_t * 4051 xcb_randr_get_provider_info_crtcs (const xcb_randr_get_provider_info_reply_t *R) 4052 { 4053 return (xcb_randr_crtc_t *) (R + 1); 4054 } 4055 4056 int 4057 xcb_randr_get_provider_info_crtcs_length (const xcb_randr_get_provider_info_reply_t *R) 4058 { 4059 return R->num_crtcs; 4060 } 4061 4062 xcb_generic_iterator_t 4063 xcb_randr_get_provider_info_crtcs_end (const xcb_randr_get_provider_info_reply_t *R) 4064 { 4065 xcb_generic_iterator_t i; 4066 i.data = ((xcb_randr_crtc_t *) (R + 1)) + (R->num_crtcs); 4067 i.rem = 0; 4068 i.index = (char *) i.data - (char *) R; 4069 return i; 4070 } 4071 4072 xcb_randr_output_t * 4073 xcb_randr_get_provider_info_outputs (const xcb_randr_get_provider_info_reply_t *R) 4074 { 4075 xcb_generic_iterator_t prev = xcb_randr_get_provider_info_crtcs_end(R); 4076 return (xcb_randr_output_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_randr_output_t, prev.index) + 0); 4077 } 4078 4079 int 4080 xcb_randr_get_provider_info_outputs_length (const xcb_randr_get_provider_info_reply_t *R) 4081 { 4082 return R->num_outputs; 4083 } 4084 4085 xcb_generic_iterator_t 4086 xcb_randr_get_provider_info_outputs_end (const xcb_randr_get_provider_info_reply_t *R) 4087 { 4088 xcb_generic_iterator_t i; 4089 xcb_generic_iterator_t prev = xcb_randr_get_provider_info_crtcs_end(R); 4090 i.data = ((xcb_randr_output_t *) ((char*) prev.data + XCB_TYPE_PAD(xcb_randr_output_t, prev.index))) + (R->num_outputs); 4091 i.rem = 0; 4092 i.index = (char *) i.data - (char *) R; 4093 return i; 4094 } 4095 4096 xcb_randr_provider_t * 4097 xcb_randr_get_provider_info_associated_providers (const xcb_randr_get_provider_info_reply_t *R) 4098 { 4099 xcb_generic_iterator_t prev = xcb_randr_get_provider_info_outputs_end(R); 4100 return (xcb_randr_provider_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_randr_provider_t, prev.index) + 0); 4101 } 4102 4103 int 4104 xcb_randr_get_provider_info_associated_providers_length (const xcb_randr_get_provider_info_reply_t *R) 4105 { 4106 return R->num_associated_providers; 4107 } 4108 4109 xcb_generic_iterator_t 4110 xcb_randr_get_provider_info_associated_providers_end (const xcb_randr_get_provider_info_reply_t *R) 4111 { 4112 xcb_generic_iterator_t i; 4113 xcb_generic_iterator_t prev = xcb_randr_get_provider_info_outputs_end(R); 4114 i.data = ((xcb_randr_provider_t *) ((char*) prev.data + XCB_TYPE_PAD(xcb_randr_provider_t, prev.index))) + (R->num_associated_providers); 4115 i.rem = 0; 4116 i.index = (char *) i.data - (char *) R; 4117 return i; 4118 } 4119 4120 uint32_t * 4121 xcb_randr_get_provider_info_associated_capability (const xcb_randr_get_provider_info_reply_t *R) 4122 { 4123 xcb_generic_iterator_t prev = xcb_randr_get_provider_info_associated_providers_end(R); 4124 return (uint32_t *) ((char *) prev.data + XCB_TYPE_PAD(uint32_t, prev.index) + 0); 4125 } 4126 4127 int 4128 xcb_randr_get_provider_info_associated_capability_length (const xcb_randr_get_provider_info_reply_t *R) 4129 { 4130 return R->num_associated_providers; 4131 } 4132 4133 xcb_generic_iterator_t 4134 xcb_randr_get_provider_info_associated_capability_end (const xcb_randr_get_provider_info_reply_t *R) 4135 { 4136 xcb_generic_iterator_t i; 4137 xcb_generic_iterator_t prev = xcb_randr_get_provider_info_associated_providers_end(R); 4138 i.data = ((uint32_t *) ((char*) prev.data + XCB_TYPE_PAD(uint32_t, prev.index))) + (R->num_associated_providers); 4139 i.rem = 0; 4140 i.index = (char *) i.data - (char *) R; 4141 return i; 4142 } 4143 4144 char * 4145 xcb_randr_get_provider_info_name (const xcb_randr_get_provider_info_reply_t *R) 4146 { 4147 xcb_generic_iterator_t prev = xcb_randr_get_provider_info_associated_capability_end(R); 4148 return (char *) ((char *) prev.data + XCB_TYPE_PAD(char, prev.index) + 0); 4149 } 4150 4151 int 4152 xcb_randr_get_provider_info_name_length (const xcb_randr_get_provider_info_reply_t *R) 4153 { 4154 return R->name_len; 4155 } 4156 4157 xcb_generic_iterator_t 4158 xcb_randr_get_provider_info_name_end (const xcb_randr_get_provider_info_reply_t *R) 4159 { 4160 xcb_generic_iterator_t i; 4161 xcb_generic_iterator_t prev = xcb_randr_get_provider_info_associated_capability_end(R); 4162 i.data = ((char *) ((char*) prev.data + XCB_TYPE_PAD(char, prev.index))) + (R->name_len); 4163 i.rem = 0; 4164 i.index = (char *) i.data - (char *) R; 4165 return i; 4166 } 4167 4168 xcb_randr_get_provider_info_reply_t * 4169 xcb_randr_get_provider_info_reply (xcb_connection_t *c, 4170 xcb_randr_get_provider_info_cookie_t cookie /**< */, 4171 xcb_generic_error_t **e) 4172 { 4173 return (xcb_randr_get_provider_info_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 4174 } 4175 4176 xcb_void_cookie_t 4177 xcb_randr_set_provider_offload_sink_checked (xcb_connection_t *c, 4178 xcb_randr_provider_t provider, 4179 xcb_randr_provider_t sink_provider, 4180 xcb_timestamp_t config_timestamp) 4181 { 4182 static const xcb_protocol_request_t xcb_req = { 4183 .count = 2, 4184 .ext = &xcb_randr_id, 4185 .opcode = XCB_RANDR_SET_PROVIDER_OFFLOAD_SINK, 4186 .isvoid = 1 4187 }; 4188 4189 struct iovec xcb_parts[4]; 4190 xcb_void_cookie_t xcb_ret; 4191 xcb_randr_set_provider_offload_sink_request_t xcb_out; 4192 4193 xcb_out.provider = provider; 4194 xcb_out.sink_provider = sink_provider; 4195 xcb_out.config_timestamp = config_timestamp; 4196 4197 xcb_parts[2].iov_base = (char *) &xcb_out; 4198 xcb_parts[2].iov_len = sizeof(xcb_out); 4199 xcb_parts[3].iov_base = 0; 4200 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 4201 4202 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 4203 return xcb_ret; 4204 } 4205 4206 xcb_void_cookie_t 4207 xcb_randr_set_provider_offload_sink (xcb_connection_t *c, 4208 xcb_randr_provider_t provider, 4209 xcb_randr_provider_t sink_provider, 4210 xcb_timestamp_t config_timestamp) 4211 { 4212 static const xcb_protocol_request_t xcb_req = { 4213 .count = 2, 4214 .ext = &xcb_randr_id, 4215 .opcode = XCB_RANDR_SET_PROVIDER_OFFLOAD_SINK, 4216 .isvoid = 1 4217 }; 4218 4219 struct iovec xcb_parts[4]; 4220 xcb_void_cookie_t xcb_ret; 4221 xcb_randr_set_provider_offload_sink_request_t xcb_out; 4222 4223 xcb_out.provider = provider; 4224 xcb_out.sink_provider = sink_provider; 4225 xcb_out.config_timestamp = config_timestamp; 4226 4227 xcb_parts[2].iov_base = (char *) &xcb_out; 4228 xcb_parts[2].iov_len = sizeof(xcb_out); 4229 xcb_parts[3].iov_base = 0; 4230 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 4231 4232 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 4233 return xcb_ret; 4234 } 4235 4236 xcb_void_cookie_t 4237 xcb_randr_set_provider_output_source_checked (xcb_connection_t *c, 4238 xcb_randr_provider_t provider, 4239 xcb_randr_provider_t source_provider, 4240 xcb_timestamp_t config_timestamp) 4241 { 4242 static const xcb_protocol_request_t xcb_req = { 4243 .count = 2, 4244 .ext = &xcb_randr_id, 4245 .opcode = XCB_RANDR_SET_PROVIDER_OUTPUT_SOURCE, 4246 .isvoid = 1 4247 }; 4248 4249 struct iovec xcb_parts[4]; 4250 xcb_void_cookie_t xcb_ret; 4251 xcb_randr_set_provider_output_source_request_t xcb_out; 4252 4253 xcb_out.provider = provider; 4254 xcb_out.source_provider = source_provider; 4255 xcb_out.config_timestamp = config_timestamp; 4256 4257 xcb_parts[2].iov_base = (char *) &xcb_out; 4258 xcb_parts[2].iov_len = sizeof(xcb_out); 4259 xcb_parts[3].iov_base = 0; 4260 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 4261 4262 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 4263 return xcb_ret; 4264 } 4265 4266 xcb_void_cookie_t 4267 xcb_randr_set_provider_output_source (xcb_connection_t *c, 4268 xcb_randr_provider_t provider, 4269 xcb_randr_provider_t source_provider, 4270 xcb_timestamp_t config_timestamp) 4271 { 4272 static const xcb_protocol_request_t xcb_req = { 4273 .count = 2, 4274 .ext = &xcb_randr_id, 4275 .opcode = XCB_RANDR_SET_PROVIDER_OUTPUT_SOURCE, 4276 .isvoid = 1 4277 }; 4278 4279 struct iovec xcb_parts[4]; 4280 xcb_void_cookie_t xcb_ret; 4281 xcb_randr_set_provider_output_source_request_t xcb_out; 4282 4283 xcb_out.provider = provider; 4284 xcb_out.source_provider = source_provider; 4285 xcb_out.config_timestamp = config_timestamp; 4286 4287 xcb_parts[2].iov_base = (char *) &xcb_out; 4288 xcb_parts[2].iov_len = sizeof(xcb_out); 4289 xcb_parts[3].iov_base = 0; 4290 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 4291 4292 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 4293 return xcb_ret; 4294 } 4295 4296 int 4297 xcb_randr_list_provider_properties_sizeof (const void *_buffer) 4298 { 4299 char *xcb_tmp = (char *)_buffer; 4300 const xcb_randr_list_provider_properties_reply_t *_aux = (xcb_randr_list_provider_properties_reply_t *)_buffer; 4301 unsigned int xcb_buffer_len = 0; 4302 unsigned int xcb_block_len = 0; 4303 unsigned int xcb_pad = 0; 4304 unsigned int xcb_align_to = 0; 4305 4306 4307 xcb_block_len += sizeof(xcb_randr_list_provider_properties_reply_t); 4308 xcb_tmp += xcb_block_len; 4309 xcb_buffer_len += xcb_block_len; 4310 xcb_block_len = 0; 4311 /* atoms */ 4312 xcb_block_len += _aux->num_atoms * sizeof(xcb_atom_t); 4313 xcb_tmp += xcb_block_len; 4314 xcb_align_to = ALIGNOF(xcb_atom_t); 4315 /* insert padding */ 4316 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 4317 xcb_buffer_len += xcb_block_len + xcb_pad; 4318 if (0 != xcb_pad) { 4319 xcb_tmp += xcb_pad; 4320 xcb_pad = 0; 4321 } 4322 xcb_block_len = 0; 4323 4324 return xcb_buffer_len; 4325 } 4326 4327 xcb_randr_list_provider_properties_cookie_t 4328 xcb_randr_list_provider_properties (xcb_connection_t *c, 4329 xcb_randr_provider_t provider) 4330 { 4331 static const xcb_protocol_request_t xcb_req = { 4332 .count = 2, 4333 .ext = &xcb_randr_id, 4334 .opcode = XCB_RANDR_LIST_PROVIDER_PROPERTIES, 4335 .isvoid = 0 4336 }; 4337 4338 struct iovec xcb_parts[4]; 4339 xcb_randr_list_provider_properties_cookie_t xcb_ret; 4340 xcb_randr_list_provider_properties_request_t xcb_out; 4341 4342 xcb_out.provider = provider; 4343 4344 xcb_parts[2].iov_base = (char *) &xcb_out; 4345 xcb_parts[2].iov_len = sizeof(xcb_out); 4346 xcb_parts[3].iov_base = 0; 4347 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 4348 4349 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 4350 return xcb_ret; 4351 } 4352 4353 xcb_randr_list_provider_properties_cookie_t 4354 xcb_randr_list_provider_properties_unchecked (xcb_connection_t *c, 4355 xcb_randr_provider_t provider) 4356 { 4357 static const xcb_protocol_request_t xcb_req = { 4358 .count = 2, 4359 .ext = &xcb_randr_id, 4360 .opcode = XCB_RANDR_LIST_PROVIDER_PROPERTIES, 4361 .isvoid = 0 4362 }; 4363 4364 struct iovec xcb_parts[4]; 4365 xcb_randr_list_provider_properties_cookie_t xcb_ret; 4366 xcb_randr_list_provider_properties_request_t xcb_out; 4367 4368 xcb_out.provider = provider; 4369 4370 xcb_parts[2].iov_base = (char *) &xcb_out; 4371 xcb_parts[2].iov_len = sizeof(xcb_out); 4372 xcb_parts[3].iov_base = 0; 4373 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 4374 4375 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 4376 return xcb_ret; 4377 } 4378 4379 xcb_atom_t * 4380 xcb_randr_list_provider_properties_atoms (const xcb_randr_list_provider_properties_reply_t *R) 4381 { 4382 return (xcb_atom_t *) (R + 1); 4383 } 4384 4385 int 4386 xcb_randr_list_provider_properties_atoms_length (const xcb_randr_list_provider_properties_reply_t *R) 4387 { 4388 return R->num_atoms; 4389 } 4390 4391 xcb_generic_iterator_t 4392 xcb_randr_list_provider_properties_atoms_end (const xcb_randr_list_provider_properties_reply_t *R) 4393 { 4394 xcb_generic_iterator_t i; 4395 i.data = ((xcb_atom_t *) (R + 1)) + (R->num_atoms); 4396 i.rem = 0; 4397 i.index = (char *) i.data - (char *) R; 4398 return i; 4399 } 4400 4401 xcb_randr_list_provider_properties_reply_t * 4402 xcb_randr_list_provider_properties_reply (xcb_connection_t *c, 4403 xcb_randr_list_provider_properties_cookie_t cookie /**< */, 4404 xcb_generic_error_t **e) 4405 { 4406 return (xcb_randr_list_provider_properties_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 4407 } 4408 4409 int 4410 xcb_randr_query_provider_property_sizeof (const void *_buffer) 4411 { 4412 char *xcb_tmp = (char *)_buffer; 4413 const xcb_randr_query_provider_property_reply_t *_aux = (xcb_randr_query_provider_property_reply_t *)_buffer; 4414 unsigned int xcb_buffer_len = 0; 4415 unsigned int xcb_block_len = 0; 4416 unsigned int xcb_pad = 0; 4417 unsigned int xcb_align_to = 0; 4418 4419 4420 xcb_block_len += sizeof(xcb_randr_query_provider_property_reply_t); 4421 xcb_tmp += xcb_block_len; 4422 xcb_buffer_len += xcb_block_len; 4423 xcb_block_len = 0; 4424 /* valid_values */ 4425 xcb_block_len += _aux->length * sizeof(int32_t); 4426 xcb_tmp += xcb_block_len; 4427 xcb_align_to = ALIGNOF(int32_t); 4428 /* insert padding */ 4429 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 4430 xcb_buffer_len += xcb_block_len + xcb_pad; 4431 if (0 != xcb_pad) { 4432 xcb_tmp += xcb_pad; 4433 xcb_pad = 0; 4434 } 4435 xcb_block_len = 0; 4436 4437 return xcb_buffer_len; 4438 } 4439 4440 xcb_randr_query_provider_property_cookie_t 4441 xcb_randr_query_provider_property (xcb_connection_t *c, 4442 xcb_randr_provider_t provider, 4443 xcb_atom_t property) 4444 { 4445 static const xcb_protocol_request_t xcb_req = { 4446 .count = 2, 4447 .ext = &xcb_randr_id, 4448 .opcode = XCB_RANDR_QUERY_PROVIDER_PROPERTY, 4449 .isvoid = 0 4450 }; 4451 4452 struct iovec xcb_parts[4]; 4453 xcb_randr_query_provider_property_cookie_t xcb_ret; 4454 xcb_randr_query_provider_property_request_t xcb_out; 4455 4456 xcb_out.provider = provider; 4457 xcb_out.property = property; 4458 4459 xcb_parts[2].iov_base = (char *) &xcb_out; 4460 xcb_parts[2].iov_len = sizeof(xcb_out); 4461 xcb_parts[3].iov_base = 0; 4462 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 4463 4464 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 4465 return xcb_ret; 4466 } 4467 4468 xcb_randr_query_provider_property_cookie_t 4469 xcb_randr_query_provider_property_unchecked (xcb_connection_t *c, 4470 xcb_randr_provider_t provider, 4471 xcb_atom_t property) 4472 { 4473 static const xcb_protocol_request_t xcb_req = { 4474 .count = 2, 4475 .ext = &xcb_randr_id, 4476 .opcode = XCB_RANDR_QUERY_PROVIDER_PROPERTY, 4477 .isvoid = 0 4478 }; 4479 4480 struct iovec xcb_parts[4]; 4481 xcb_randr_query_provider_property_cookie_t xcb_ret; 4482 xcb_randr_query_provider_property_request_t xcb_out; 4483 4484 xcb_out.provider = provider; 4485 xcb_out.property = property; 4486 4487 xcb_parts[2].iov_base = (char *) &xcb_out; 4488 xcb_parts[2].iov_len = sizeof(xcb_out); 4489 xcb_parts[3].iov_base = 0; 4490 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 4491 4492 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 4493 return xcb_ret; 4494 } 4495 4496 int32_t * 4497 xcb_randr_query_provider_property_valid_values (const xcb_randr_query_provider_property_reply_t *R) 4498 { 4499 return (int32_t *) (R + 1); 4500 } 4501 4502 int 4503 xcb_randr_query_provider_property_valid_values_length (const xcb_randr_query_provider_property_reply_t *R) 4504 { 4505 return R->length; 4506 } 4507 4508 xcb_generic_iterator_t 4509 xcb_randr_query_provider_property_valid_values_end (const xcb_randr_query_provider_property_reply_t *R) 4510 { 4511 xcb_generic_iterator_t i; 4512 i.data = ((int32_t *) (R + 1)) + (R->length); 4513 i.rem = 0; 4514 i.index = (char *) i.data - (char *) R; 4515 return i; 4516 } 4517 4518 xcb_randr_query_provider_property_reply_t * 4519 xcb_randr_query_provider_property_reply (xcb_connection_t *c, 4520 xcb_randr_query_provider_property_cookie_t cookie /**< */, 4521 xcb_generic_error_t **e) 4522 { 4523 return (xcb_randr_query_provider_property_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 4524 } 4525 4526 int 4527 xcb_randr_configure_provider_property_sizeof (const void *_buffer, 4528 uint32_t values_len) 4529 { 4530 char *xcb_tmp = (char *)_buffer; 4531 unsigned int xcb_buffer_len = 0; 4532 unsigned int xcb_block_len = 0; 4533 unsigned int xcb_pad = 0; 4534 unsigned int xcb_align_to = 0; 4535 4536 4537 xcb_block_len += sizeof(xcb_randr_configure_provider_property_request_t); 4538 xcb_tmp += xcb_block_len; 4539 xcb_buffer_len += xcb_block_len; 4540 xcb_block_len = 0; 4541 /* values */ 4542 xcb_block_len += values_len * sizeof(int32_t); 4543 xcb_tmp += xcb_block_len; 4544 xcb_align_to = ALIGNOF(int32_t); 4545 /* insert padding */ 4546 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 4547 xcb_buffer_len += xcb_block_len + xcb_pad; 4548 if (0 != xcb_pad) { 4549 xcb_tmp += xcb_pad; 4550 xcb_pad = 0; 4551 } 4552 xcb_block_len = 0; 4553 4554 return xcb_buffer_len; 4555 } 4556 4557 xcb_void_cookie_t 4558 xcb_randr_configure_provider_property_checked (xcb_connection_t *c, 4559 xcb_randr_provider_t provider, 4560 xcb_atom_t property, 4561 uint8_t pending, 4562 uint8_t range, 4563 uint32_t values_len, 4564 const int32_t *values) 4565 { 4566 static const xcb_protocol_request_t xcb_req = { 4567 .count = 4, 4568 .ext = &xcb_randr_id, 4569 .opcode = XCB_RANDR_CONFIGURE_PROVIDER_PROPERTY, 4570 .isvoid = 1 4571 }; 4572 4573 struct iovec xcb_parts[6]; 4574 xcb_void_cookie_t xcb_ret; 4575 xcb_randr_configure_provider_property_request_t xcb_out; 4576 4577 xcb_out.provider = provider; 4578 xcb_out.property = property; 4579 xcb_out.pending = pending; 4580 xcb_out.range = range; 4581 memset(xcb_out.pad0, 0, 2); 4582 4583 xcb_parts[2].iov_base = (char *) &xcb_out; 4584 xcb_parts[2].iov_len = sizeof(xcb_out); 4585 xcb_parts[3].iov_base = 0; 4586 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 4587 /* int32_t values */ 4588 xcb_parts[4].iov_base = (char *) values; 4589 xcb_parts[4].iov_len = values_len * sizeof(int32_t); 4590 xcb_parts[5].iov_base = 0; 4591 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 4592 4593 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 4594 return xcb_ret; 4595 } 4596 4597 xcb_void_cookie_t 4598 xcb_randr_configure_provider_property (xcb_connection_t *c, 4599 xcb_randr_provider_t provider, 4600 xcb_atom_t property, 4601 uint8_t pending, 4602 uint8_t range, 4603 uint32_t values_len, 4604 const int32_t *values) 4605 { 4606 static const xcb_protocol_request_t xcb_req = { 4607 .count = 4, 4608 .ext = &xcb_randr_id, 4609 .opcode = XCB_RANDR_CONFIGURE_PROVIDER_PROPERTY, 4610 .isvoid = 1 4611 }; 4612 4613 struct iovec xcb_parts[6]; 4614 xcb_void_cookie_t xcb_ret; 4615 xcb_randr_configure_provider_property_request_t xcb_out; 4616 4617 xcb_out.provider = provider; 4618 xcb_out.property = property; 4619 xcb_out.pending = pending; 4620 xcb_out.range = range; 4621 memset(xcb_out.pad0, 0, 2); 4622 4623 xcb_parts[2].iov_base = (char *) &xcb_out; 4624 xcb_parts[2].iov_len = sizeof(xcb_out); 4625 xcb_parts[3].iov_base = 0; 4626 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 4627 /* int32_t values */ 4628 xcb_parts[4].iov_base = (char *) values; 4629 xcb_parts[4].iov_len = values_len * sizeof(int32_t); 4630 xcb_parts[5].iov_base = 0; 4631 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 4632 4633 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 4634 return xcb_ret; 4635 } 4636 4637 int32_t * 4638 xcb_randr_configure_provider_property_values (const xcb_randr_configure_provider_property_request_t *R) 4639 { 4640 return (int32_t *) (R + 1); 4641 } 4642 4643 int 4644 xcb_randr_configure_provider_property_values_length (const xcb_randr_configure_provider_property_request_t *R) 4645 { 4646 return (((R->length * 4) - sizeof(xcb_randr_configure_provider_property_request_t))/sizeof(int32_t)); 4647 } 4648 4649 xcb_generic_iterator_t 4650 xcb_randr_configure_provider_property_values_end (const xcb_randr_configure_provider_property_request_t *R) 4651 { 4652 xcb_generic_iterator_t i; 4653 i.data = ((int32_t *) (R + 1)) + ((((R->length * 4) - sizeof(xcb_randr_configure_provider_property_request_t))/sizeof(int32_t))); 4654 i.rem = 0; 4655 i.index = (char *) i.data - (char *) R; 4656 return i; 4657 } 4658 4659 int 4660 xcb_randr_change_provider_property_sizeof (const void *_buffer) 4661 { 4662 char *xcb_tmp = (char *)_buffer; 4663 const xcb_randr_change_provider_property_request_t *_aux = (xcb_randr_change_provider_property_request_t *)_buffer; 4664 unsigned int xcb_buffer_len = 0; 4665 unsigned int xcb_block_len = 0; 4666 unsigned int xcb_pad = 0; 4667 unsigned int xcb_align_to = 0; 4668 4669 4670 xcb_block_len += sizeof(xcb_randr_change_provider_property_request_t); 4671 xcb_tmp += xcb_block_len; 4672 xcb_buffer_len += xcb_block_len; 4673 xcb_block_len = 0; 4674 /* data */ 4675 xcb_block_len += (_aux->num_items * (_aux->format / 8)) * sizeof(char); 4676 xcb_tmp += xcb_block_len; 4677 xcb_align_to = ALIGNOF(char); 4678 /* insert padding */ 4679 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 4680 xcb_buffer_len += xcb_block_len + xcb_pad; 4681 if (0 != xcb_pad) { 4682 xcb_tmp += xcb_pad; 4683 xcb_pad = 0; 4684 } 4685 xcb_block_len = 0; 4686 4687 return xcb_buffer_len; 4688 } 4689 4690 xcb_void_cookie_t 4691 xcb_randr_change_provider_property_checked (xcb_connection_t *c, 4692 xcb_randr_provider_t provider, 4693 xcb_atom_t property, 4694 xcb_atom_t type, 4695 uint8_t format, 4696 uint8_t mode, 4697 uint32_t num_items, 4698 const void *data) 4699 { 4700 static const xcb_protocol_request_t xcb_req = { 4701 .count = 4, 4702 .ext = &xcb_randr_id, 4703 .opcode = XCB_RANDR_CHANGE_PROVIDER_PROPERTY, 4704 .isvoid = 1 4705 }; 4706 4707 struct iovec xcb_parts[6]; 4708 xcb_void_cookie_t xcb_ret; 4709 xcb_randr_change_provider_property_request_t xcb_out; 4710 4711 xcb_out.provider = provider; 4712 xcb_out.property = property; 4713 xcb_out.type = type; 4714 xcb_out.format = format; 4715 xcb_out.mode = mode; 4716 memset(xcb_out.pad0, 0, 2); 4717 xcb_out.num_items = num_items; 4718 4719 xcb_parts[2].iov_base = (char *) &xcb_out; 4720 xcb_parts[2].iov_len = sizeof(xcb_out); 4721 xcb_parts[3].iov_base = 0; 4722 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 4723 /* void data */ 4724 xcb_parts[4].iov_base = (char *) data; 4725 xcb_parts[4].iov_len = (num_items * (format / 8)) * sizeof(char); 4726 xcb_parts[5].iov_base = 0; 4727 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 4728 4729 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 4730 return xcb_ret; 4731 } 4732 4733 xcb_void_cookie_t 4734 xcb_randr_change_provider_property (xcb_connection_t *c, 4735 xcb_randr_provider_t provider, 4736 xcb_atom_t property, 4737 xcb_atom_t type, 4738 uint8_t format, 4739 uint8_t mode, 4740 uint32_t num_items, 4741 const void *data) 4742 { 4743 static const xcb_protocol_request_t xcb_req = { 4744 .count = 4, 4745 .ext = &xcb_randr_id, 4746 .opcode = XCB_RANDR_CHANGE_PROVIDER_PROPERTY, 4747 .isvoid = 1 4748 }; 4749 4750 struct iovec xcb_parts[6]; 4751 xcb_void_cookie_t xcb_ret; 4752 xcb_randr_change_provider_property_request_t xcb_out; 4753 4754 xcb_out.provider = provider; 4755 xcb_out.property = property; 4756 xcb_out.type = type; 4757 xcb_out.format = format; 4758 xcb_out.mode = mode; 4759 memset(xcb_out.pad0, 0, 2); 4760 xcb_out.num_items = num_items; 4761 4762 xcb_parts[2].iov_base = (char *) &xcb_out; 4763 xcb_parts[2].iov_len = sizeof(xcb_out); 4764 xcb_parts[3].iov_base = 0; 4765 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 4766 /* void data */ 4767 xcb_parts[4].iov_base = (char *) data; 4768 xcb_parts[4].iov_len = (num_items * (format / 8)) * sizeof(char); 4769 xcb_parts[5].iov_base = 0; 4770 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 4771 4772 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 4773 return xcb_ret; 4774 } 4775 4776 void * 4777 xcb_randr_change_provider_property_data (const xcb_randr_change_provider_property_request_t *R) 4778 { 4779 return (void *) (R + 1); 4780 } 4781 4782 int 4783 xcb_randr_change_provider_property_data_length (const xcb_randr_change_provider_property_request_t *R) 4784 { 4785 return (R->num_items * (R->format / 8)); 4786 } 4787 4788 xcb_generic_iterator_t 4789 xcb_randr_change_provider_property_data_end (const xcb_randr_change_provider_property_request_t *R) 4790 { 4791 xcb_generic_iterator_t i; 4792 i.data = ((char *) (R + 1)) + ((R->num_items * (R->format / 8))); 4793 i.rem = 0; 4794 i.index = (char *) i.data - (char *) R; 4795 return i; 4796 } 4797 4798 xcb_void_cookie_t 4799 xcb_randr_delete_provider_property_checked (xcb_connection_t *c, 4800 xcb_randr_provider_t provider, 4801 xcb_atom_t property) 4802 { 4803 static const xcb_protocol_request_t xcb_req = { 4804 .count = 2, 4805 .ext = &xcb_randr_id, 4806 .opcode = XCB_RANDR_DELETE_PROVIDER_PROPERTY, 4807 .isvoid = 1 4808 }; 4809 4810 struct iovec xcb_parts[4]; 4811 xcb_void_cookie_t xcb_ret; 4812 xcb_randr_delete_provider_property_request_t xcb_out; 4813 4814 xcb_out.provider = provider; 4815 xcb_out.property = property; 4816 4817 xcb_parts[2].iov_base = (char *) &xcb_out; 4818 xcb_parts[2].iov_len = sizeof(xcb_out); 4819 xcb_parts[3].iov_base = 0; 4820 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 4821 4822 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 4823 return xcb_ret; 4824 } 4825 4826 xcb_void_cookie_t 4827 xcb_randr_delete_provider_property (xcb_connection_t *c, 4828 xcb_randr_provider_t provider, 4829 xcb_atom_t property) 4830 { 4831 static const xcb_protocol_request_t xcb_req = { 4832 .count = 2, 4833 .ext = &xcb_randr_id, 4834 .opcode = XCB_RANDR_DELETE_PROVIDER_PROPERTY, 4835 .isvoid = 1 4836 }; 4837 4838 struct iovec xcb_parts[4]; 4839 xcb_void_cookie_t xcb_ret; 4840 xcb_randr_delete_provider_property_request_t xcb_out; 4841 4842 xcb_out.provider = provider; 4843 xcb_out.property = property; 4844 4845 xcb_parts[2].iov_base = (char *) &xcb_out; 4846 xcb_parts[2].iov_len = sizeof(xcb_out); 4847 xcb_parts[3].iov_base = 0; 4848 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 4849 4850 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 4851 return xcb_ret; 4852 } 4853 4854 int 4855 xcb_randr_get_provider_property_sizeof (const void *_buffer) 4856 { 4857 char *xcb_tmp = (char *)_buffer; 4858 const xcb_randr_get_provider_property_reply_t *_aux = (xcb_randr_get_provider_property_reply_t *)_buffer; 4859 unsigned int xcb_buffer_len = 0; 4860 unsigned int xcb_block_len = 0; 4861 unsigned int xcb_pad = 0; 4862 unsigned int xcb_align_to = 0; 4863 4864 4865 xcb_block_len += sizeof(xcb_randr_get_provider_property_reply_t); 4866 xcb_tmp += xcb_block_len; 4867 xcb_buffer_len += xcb_block_len; 4868 xcb_block_len = 0; 4869 /* data */ 4870 xcb_block_len += (_aux->num_items * (_aux->format / 8)) * sizeof(char); 4871 xcb_tmp += xcb_block_len; 4872 xcb_align_to = ALIGNOF(char); 4873 /* insert padding */ 4874 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 4875 xcb_buffer_len += xcb_block_len + xcb_pad; 4876 if (0 != xcb_pad) { 4877 xcb_tmp += xcb_pad; 4878 xcb_pad = 0; 4879 } 4880 xcb_block_len = 0; 4881 4882 return xcb_buffer_len; 4883 } 4884 4885 xcb_randr_get_provider_property_cookie_t 4886 xcb_randr_get_provider_property (xcb_connection_t *c, 4887 xcb_randr_provider_t provider, 4888 xcb_atom_t property, 4889 xcb_atom_t type, 4890 uint32_t long_offset, 4891 uint32_t long_length, 4892 uint8_t _delete, 4893 uint8_t pending) 4894 { 4895 static const xcb_protocol_request_t xcb_req = { 4896 .count = 2, 4897 .ext = &xcb_randr_id, 4898 .opcode = XCB_RANDR_GET_PROVIDER_PROPERTY, 4899 .isvoid = 0 4900 }; 4901 4902 struct iovec xcb_parts[4]; 4903 xcb_randr_get_provider_property_cookie_t xcb_ret; 4904 xcb_randr_get_provider_property_request_t xcb_out; 4905 4906 xcb_out.provider = provider; 4907 xcb_out.property = property; 4908 xcb_out.type = type; 4909 xcb_out.long_offset = long_offset; 4910 xcb_out.long_length = long_length; 4911 xcb_out._delete = _delete; 4912 xcb_out.pending = pending; 4913 memset(xcb_out.pad0, 0, 2); 4914 4915 xcb_parts[2].iov_base = (char *) &xcb_out; 4916 xcb_parts[2].iov_len = sizeof(xcb_out); 4917 xcb_parts[3].iov_base = 0; 4918 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 4919 4920 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 4921 return xcb_ret; 4922 } 4923 4924 xcb_randr_get_provider_property_cookie_t 4925 xcb_randr_get_provider_property_unchecked (xcb_connection_t *c, 4926 xcb_randr_provider_t provider, 4927 xcb_atom_t property, 4928 xcb_atom_t type, 4929 uint32_t long_offset, 4930 uint32_t long_length, 4931 uint8_t _delete, 4932 uint8_t pending) 4933 { 4934 static const xcb_protocol_request_t xcb_req = { 4935 .count = 2, 4936 .ext = &xcb_randr_id, 4937 .opcode = XCB_RANDR_GET_PROVIDER_PROPERTY, 4938 .isvoid = 0 4939 }; 4940 4941 struct iovec xcb_parts[4]; 4942 xcb_randr_get_provider_property_cookie_t xcb_ret; 4943 xcb_randr_get_provider_property_request_t xcb_out; 4944 4945 xcb_out.provider = provider; 4946 xcb_out.property = property; 4947 xcb_out.type = type; 4948 xcb_out.long_offset = long_offset; 4949 xcb_out.long_length = long_length; 4950 xcb_out._delete = _delete; 4951 xcb_out.pending = pending; 4952 memset(xcb_out.pad0, 0, 2); 4953 4954 xcb_parts[2].iov_base = (char *) &xcb_out; 4955 xcb_parts[2].iov_len = sizeof(xcb_out); 4956 xcb_parts[3].iov_base = 0; 4957 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 4958 4959 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 4960 return xcb_ret; 4961 } 4962 4963 void * 4964 xcb_randr_get_provider_property_data (const xcb_randr_get_provider_property_reply_t *R) 4965 { 4966 return (void *) (R + 1); 4967 } 4968 4969 int 4970 xcb_randr_get_provider_property_data_length (const xcb_randr_get_provider_property_reply_t *R) 4971 { 4972 return (R->num_items * (R->format / 8)); 4973 } 4974 4975 xcb_generic_iterator_t 4976 xcb_randr_get_provider_property_data_end (const xcb_randr_get_provider_property_reply_t *R) 4977 { 4978 xcb_generic_iterator_t i; 4979 i.data = ((char *) (R + 1)) + ((R->num_items * (R->format / 8))); 4980 i.rem = 0; 4981 i.index = (char *) i.data - (char *) R; 4982 return i; 4983 } 4984 4985 xcb_randr_get_provider_property_reply_t * 4986 xcb_randr_get_provider_property_reply (xcb_connection_t *c, 4987 xcb_randr_get_provider_property_cookie_t cookie /**< */, 4988 xcb_generic_error_t **e) 4989 { 4990 return (xcb_randr_get_provider_property_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 4991 } 4992 4993 void 4994 xcb_randr_crtc_change_next (xcb_randr_crtc_change_iterator_t *i) 4995 { 4996 --i->rem; 4997 ++i->data; 4998 i->index += sizeof(xcb_randr_crtc_change_t); 4999 } 5000 5001 xcb_generic_iterator_t 5002 xcb_randr_crtc_change_end (xcb_randr_crtc_change_iterator_t i) 5003 { 5004 xcb_generic_iterator_t ret; 5005 ret.data = i.data + i.rem; 5006 ret.index = i.index + ((char *) ret.data - (char *) i.data); 5007 ret.rem = 0; 5008 return ret; 5009 } 5010 5011 void 5012 xcb_randr_output_change_next (xcb_randr_output_change_iterator_t *i) 5013 { 5014 --i->rem; 5015 ++i->data; 5016 i->index += sizeof(xcb_randr_output_change_t); 5017 } 5018 5019 xcb_generic_iterator_t 5020 xcb_randr_output_change_end (xcb_randr_output_change_iterator_t i) 5021 { 5022 xcb_generic_iterator_t ret; 5023 ret.data = i.data + i.rem; 5024 ret.index = i.index + ((char *) ret.data - (char *) i.data); 5025 ret.rem = 0; 5026 return ret; 5027 } 5028 5029 void 5030 xcb_randr_output_property_next (xcb_randr_output_property_iterator_t *i) 5031 { 5032 --i->rem; 5033 ++i->data; 5034 i->index += sizeof(xcb_randr_output_property_t); 5035 } 5036 5037 xcb_generic_iterator_t 5038 xcb_randr_output_property_end (xcb_randr_output_property_iterator_t i) 5039 { 5040 xcb_generic_iterator_t ret; 5041 ret.data = i.data + i.rem; 5042 ret.index = i.index + ((char *) ret.data - (char *) i.data); 5043 ret.rem = 0; 5044 return ret; 5045 } 5046 5047 void 5048 xcb_randr_provider_change_next (xcb_randr_provider_change_iterator_t *i) 5049 { 5050 --i->rem; 5051 ++i->data; 5052 i->index += sizeof(xcb_randr_provider_change_t); 5053 } 5054 5055 xcb_generic_iterator_t 5056 xcb_randr_provider_change_end (xcb_randr_provider_change_iterator_t i) 5057 { 5058 xcb_generic_iterator_t ret; 5059 ret.data = i.data + i.rem; 5060 ret.index = i.index + ((char *) ret.data - (char *) i.data); 5061 ret.rem = 0; 5062 return ret; 5063 } 5064 5065 void 5066 xcb_randr_provider_property_next (xcb_randr_provider_property_iterator_t *i) 5067 { 5068 --i->rem; 5069 ++i->data; 5070 i->index += sizeof(xcb_randr_provider_property_t); 5071 } 5072 5073 xcb_generic_iterator_t 5074 xcb_randr_provider_property_end (xcb_randr_provider_property_iterator_t i) 5075 { 5076 xcb_generic_iterator_t ret; 5077 ret.data = i.data + i.rem; 5078 ret.index = i.index + ((char *) ret.data - (char *) i.data); 5079 ret.rem = 0; 5080 return ret; 5081 } 5082 5083 void 5084 xcb_randr_resource_change_next (xcb_randr_resource_change_iterator_t *i) 5085 { 5086 --i->rem; 5087 ++i->data; 5088 i->index += sizeof(xcb_randr_resource_change_t); 5089 } 5090 5091 xcb_generic_iterator_t 5092 xcb_randr_resource_change_end (xcb_randr_resource_change_iterator_t i) 5093 { 5094 xcb_generic_iterator_t ret; 5095 ret.data = i.data + i.rem; 5096 ret.index = i.index + ((char *) ret.data - (char *) i.data); 5097 ret.rem = 0; 5098 return ret; 5099 } 5100 5101 int 5102 xcb_randr_monitor_info_sizeof (const void *_buffer) 5103 { 5104 char *xcb_tmp = (char *)_buffer; 5105 const xcb_randr_monitor_info_t *_aux = (xcb_randr_monitor_info_t *)_buffer; 5106 unsigned int xcb_buffer_len = 0; 5107 unsigned int xcb_block_len = 0; 5108 unsigned int xcb_pad = 0; 5109 unsigned int xcb_align_to = 0; 5110 5111 5112 xcb_block_len += sizeof(xcb_randr_monitor_info_t); 5113 xcb_tmp += xcb_block_len; 5114 xcb_buffer_len += xcb_block_len; 5115 xcb_block_len = 0; 5116 /* outputs */ 5117 xcb_block_len += _aux->nOutput * sizeof(xcb_randr_output_t); 5118 xcb_tmp += xcb_block_len; 5119 xcb_align_to = ALIGNOF(xcb_randr_output_t); 5120 /* insert padding */ 5121 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 5122 xcb_buffer_len += xcb_block_len + xcb_pad; 5123 if (0 != xcb_pad) { 5124 xcb_tmp += xcb_pad; 5125 xcb_pad = 0; 5126 } 5127 xcb_block_len = 0; 5128 5129 return xcb_buffer_len; 5130 } 5131 5132 xcb_randr_output_t * 5133 xcb_randr_monitor_info_outputs (const xcb_randr_monitor_info_t *R) 5134 { 5135 return (xcb_randr_output_t *) (R + 1); 5136 } 5137 5138 int 5139 xcb_randr_monitor_info_outputs_length (const xcb_randr_monitor_info_t *R) 5140 { 5141 return R->nOutput; 5142 } 5143 5144 xcb_generic_iterator_t 5145 xcb_randr_monitor_info_outputs_end (const xcb_randr_monitor_info_t *R) 5146 { 5147 xcb_generic_iterator_t i; 5148 i.data = ((xcb_randr_output_t *) (R + 1)) + (R->nOutput); 5149 i.rem = 0; 5150 i.index = (char *) i.data - (char *) R; 5151 return i; 5152 } 5153 5154 void 5155 xcb_randr_monitor_info_next (xcb_randr_monitor_info_iterator_t *i) 5156 { 5157 xcb_randr_monitor_info_t *R = i->data; 5158 xcb_generic_iterator_t child; 5159 child.data = (xcb_randr_monitor_info_t *)(((char *)R) + xcb_randr_monitor_info_sizeof(R)); 5160 i->index = (char *) child.data - (char *) i->data; 5161 --i->rem; 5162 i->data = (xcb_randr_monitor_info_t *) child.data; 5163 } 5164 5165 xcb_generic_iterator_t 5166 xcb_randr_monitor_info_end (xcb_randr_monitor_info_iterator_t i) 5167 { 5168 xcb_generic_iterator_t ret; 5169 while(i.rem > 0) 5170 xcb_randr_monitor_info_next(&i); 5171 ret.data = i.data; 5172 ret.rem = i.rem; 5173 ret.index = i.index; 5174 return ret; 5175 } 5176 5177 int 5178 xcb_randr_get_monitors_sizeof (const void *_buffer) 5179 { 5180 char *xcb_tmp = (char *)_buffer; 5181 const xcb_randr_get_monitors_reply_t *_aux = (xcb_randr_get_monitors_reply_t *)_buffer; 5182 unsigned int xcb_buffer_len = 0; 5183 unsigned int xcb_block_len = 0; 5184 unsigned int xcb_pad = 0; 5185 unsigned int xcb_align_to = 0; 5186 5187 unsigned int i; 5188 unsigned int xcb_tmp_len; 5189 5190 xcb_block_len += sizeof(xcb_randr_get_monitors_reply_t); 5191 xcb_tmp += xcb_block_len; 5192 xcb_buffer_len += xcb_block_len; 5193 xcb_block_len = 0; 5194 /* monitors */ 5195 for(i=0; i<_aux->nMonitors; i++) { 5196 xcb_tmp_len = xcb_randr_monitor_info_sizeof(xcb_tmp); 5197 xcb_block_len += xcb_tmp_len; 5198 xcb_tmp += xcb_tmp_len; 5199 } 5200 xcb_align_to = ALIGNOF(xcb_randr_monitor_info_t); 5201 /* insert padding */ 5202 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 5203 xcb_buffer_len += xcb_block_len + xcb_pad; 5204 if (0 != xcb_pad) { 5205 xcb_tmp += xcb_pad; 5206 xcb_pad = 0; 5207 } 5208 xcb_block_len = 0; 5209 5210 return xcb_buffer_len; 5211 } 5212 5213 xcb_randr_get_monitors_cookie_t 5214 xcb_randr_get_monitors (xcb_connection_t *c, 5215 xcb_window_t window, 5216 uint8_t get_active) 5217 { 5218 static const xcb_protocol_request_t xcb_req = { 5219 .count = 2, 5220 .ext = &xcb_randr_id, 5221 .opcode = XCB_RANDR_GET_MONITORS, 5222 .isvoid = 0 5223 }; 5224 5225 struct iovec xcb_parts[4]; 5226 xcb_randr_get_monitors_cookie_t xcb_ret; 5227 xcb_randr_get_monitors_request_t xcb_out; 5228 5229 xcb_out.window = window; 5230 xcb_out.get_active = get_active; 5231 5232 xcb_parts[2].iov_base = (char *) &xcb_out; 5233 xcb_parts[2].iov_len = sizeof(xcb_out); 5234 xcb_parts[3].iov_base = 0; 5235 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 5236 5237 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 5238 return xcb_ret; 5239 } 5240 5241 xcb_randr_get_monitors_cookie_t 5242 xcb_randr_get_monitors_unchecked (xcb_connection_t *c, 5243 xcb_window_t window, 5244 uint8_t get_active) 5245 { 5246 static const xcb_protocol_request_t xcb_req = { 5247 .count = 2, 5248 .ext = &xcb_randr_id, 5249 .opcode = XCB_RANDR_GET_MONITORS, 5250 .isvoid = 0 5251 }; 5252 5253 struct iovec xcb_parts[4]; 5254 xcb_randr_get_monitors_cookie_t xcb_ret; 5255 xcb_randr_get_monitors_request_t xcb_out; 5256 5257 xcb_out.window = window; 5258 xcb_out.get_active = get_active; 5259 5260 xcb_parts[2].iov_base = (char *) &xcb_out; 5261 xcb_parts[2].iov_len = sizeof(xcb_out); 5262 xcb_parts[3].iov_base = 0; 5263 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 5264 5265 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 5266 return xcb_ret; 5267 } 5268 5269 int 5270 xcb_randr_get_monitors_monitors_length (const xcb_randr_get_monitors_reply_t *R) 5271 { 5272 return R->nMonitors; 5273 } 5274 5275 xcb_randr_monitor_info_iterator_t 5276 xcb_randr_get_monitors_monitors_iterator (const xcb_randr_get_monitors_reply_t *R) 5277 { 5278 xcb_randr_monitor_info_iterator_t i; 5279 i.data = (xcb_randr_monitor_info_t *) (R + 1); 5280 i.rem = R->nMonitors; 5281 i.index = (char *) i.data - (char *) R; 5282 return i; 5283 } 5284 5285 xcb_randr_get_monitors_reply_t * 5286 xcb_randr_get_monitors_reply (xcb_connection_t *c, 5287 xcb_randr_get_monitors_cookie_t cookie /**< */, 5288 xcb_generic_error_t **e) 5289 { 5290 return (xcb_randr_get_monitors_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 5291 } 5292 5293 int 5294 xcb_randr_set_monitor_sizeof (const void *_buffer) 5295 { 5296 char *xcb_tmp = (char *)_buffer; 5297 unsigned int xcb_buffer_len = 0; 5298 unsigned int xcb_block_len = 0; 5299 unsigned int xcb_pad = 0; 5300 unsigned int xcb_align_to = 0; 5301 5302 5303 xcb_block_len += sizeof(xcb_randr_set_monitor_request_t); 5304 xcb_tmp += xcb_block_len; 5305 xcb_buffer_len += xcb_block_len; 5306 xcb_block_len = 0; 5307 /* monitorinfo */ 5308 xcb_block_len += xcb_randr_monitor_info_sizeof(xcb_tmp); 5309 xcb_tmp += xcb_block_len; 5310 xcb_align_to = ALIGNOF(xcb_randr_monitor_info_t); 5311 /* insert padding */ 5312 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 5313 xcb_buffer_len += xcb_block_len + xcb_pad; 5314 if (0 != xcb_pad) { 5315 xcb_tmp += xcb_pad; 5316 xcb_pad = 0; 5317 } 5318 xcb_block_len = 0; 5319 5320 return xcb_buffer_len; 5321 } 5322 5323 xcb_void_cookie_t 5324 xcb_randr_set_monitor_checked (xcb_connection_t *c, 5325 xcb_window_t window, 5326 xcb_randr_monitor_info_t *monitorinfo) 5327 { 5328 static const xcb_protocol_request_t xcb_req = { 5329 .count = 4, 5330 .ext = &xcb_randr_id, 5331 .opcode = XCB_RANDR_SET_MONITOR, 5332 .isvoid = 1 5333 }; 5334 5335 struct iovec xcb_parts[6]; 5336 xcb_void_cookie_t xcb_ret; 5337 xcb_randr_set_monitor_request_t xcb_out; 5338 5339 xcb_out.window = window; 5340 5341 xcb_parts[2].iov_base = (char *) &xcb_out; 5342 xcb_parts[2].iov_len = sizeof(xcb_out); 5343 xcb_parts[3].iov_base = 0; 5344 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 5345 /* xcb_randr_monitor_info_t monitorinfo */ 5346 xcb_parts[4].iov_base = (char *) monitorinfo; 5347 xcb_parts[4].iov_len = 5348 xcb_randr_monitor_info_sizeof (monitorinfo); 5349 5350 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 5351 return xcb_ret; 5352 } 5353 5354 xcb_void_cookie_t 5355 xcb_randr_set_monitor (xcb_connection_t *c, 5356 xcb_window_t window, 5357 xcb_randr_monitor_info_t *monitorinfo) 5358 { 5359 static const xcb_protocol_request_t xcb_req = { 5360 .count = 4, 5361 .ext = &xcb_randr_id, 5362 .opcode = XCB_RANDR_SET_MONITOR, 5363 .isvoid = 1 5364 }; 5365 5366 struct iovec xcb_parts[6]; 5367 xcb_void_cookie_t xcb_ret; 5368 xcb_randr_set_monitor_request_t xcb_out; 5369 5370 xcb_out.window = window; 5371 5372 xcb_parts[2].iov_base = (char *) &xcb_out; 5373 xcb_parts[2].iov_len = sizeof(xcb_out); 5374 xcb_parts[3].iov_base = 0; 5375 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 5376 /* xcb_randr_monitor_info_t monitorinfo */ 5377 xcb_parts[4].iov_base = (char *) monitorinfo; 5378 xcb_parts[4].iov_len = 5379 xcb_randr_monitor_info_sizeof (monitorinfo); 5380 5381 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 5382 return xcb_ret; 5383 } 5384 5385 xcb_randr_monitor_info_t * 5386 xcb_randr_set_monitor_monitorinfo (const xcb_randr_set_monitor_request_t *R) 5387 { 5388 return (xcb_randr_monitor_info_t *) (R + 1); 5389 } 5390 5391 xcb_void_cookie_t 5392 xcb_randr_delete_monitor_checked (xcb_connection_t *c, 5393 xcb_window_t window, 5394 xcb_atom_t name) 5395 { 5396 static const xcb_protocol_request_t xcb_req = { 5397 .count = 2, 5398 .ext = &xcb_randr_id, 5399 .opcode = XCB_RANDR_DELETE_MONITOR, 5400 .isvoid = 1 5401 }; 5402 5403 struct iovec xcb_parts[4]; 5404 xcb_void_cookie_t xcb_ret; 5405 xcb_randr_delete_monitor_request_t xcb_out; 5406 5407 xcb_out.window = window; 5408 xcb_out.name = name; 5409 5410 xcb_parts[2].iov_base = (char *) &xcb_out; 5411 xcb_parts[2].iov_len = sizeof(xcb_out); 5412 xcb_parts[3].iov_base = 0; 5413 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 5414 5415 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 5416 return xcb_ret; 5417 } 5418 5419 xcb_void_cookie_t 5420 xcb_randr_delete_monitor (xcb_connection_t *c, 5421 xcb_window_t window, 5422 xcb_atom_t name) 5423 { 5424 static const xcb_protocol_request_t xcb_req = { 5425 .count = 2, 5426 .ext = &xcb_randr_id, 5427 .opcode = XCB_RANDR_DELETE_MONITOR, 5428 .isvoid = 1 5429 }; 5430 5431 struct iovec xcb_parts[4]; 5432 xcb_void_cookie_t xcb_ret; 5433 xcb_randr_delete_monitor_request_t xcb_out; 5434 5435 xcb_out.window = window; 5436 xcb_out.name = name; 5437 5438 xcb_parts[2].iov_base = (char *) &xcb_out; 5439 xcb_parts[2].iov_len = sizeof(xcb_out); 5440 xcb_parts[3].iov_base = 0; 5441 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 5442 5443 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 5444 return xcb_ret; 5445 } 5446 5447 int 5448 xcb_randr_create_lease_sizeof (const void *_buffer) 5449 { 5450 char *xcb_tmp = (char *)_buffer; 5451 const xcb_randr_create_lease_request_t *_aux = (xcb_randr_create_lease_request_t *)_buffer; 5452 unsigned int xcb_buffer_len = 0; 5453 unsigned int xcb_block_len = 0; 5454 unsigned int xcb_pad = 0; 5455 unsigned int xcb_align_to = 0; 5456 5457 5458 xcb_block_len += sizeof(xcb_randr_create_lease_request_t); 5459 xcb_tmp += xcb_block_len; 5460 xcb_buffer_len += xcb_block_len; 5461 xcb_block_len = 0; 5462 /* crtcs */ 5463 xcb_block_len += _aux->num_crtcs * sizeof(xcb_randr_output_t); 5464 xcb_tmp += xcb_block_len; 5465 xcb_align_to = ALIGNOF(xcb_randr_crtc_t); 5466 /* insert padding */ 5467 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 5468 xcb_buffer_len += xcb_block_len + xcb_pad; 5469 if (0 != xcb_pad) { 5470 xcb_tmp += xcb_pad; 5471 xcb_pad = 0; 5472 } 5473 xcb_block_len = 0; 5474 /* outputs */ 5475 xcb_block_len += _aux->num_outputs * sizeof(xcb_randr_output_t); 5476 xcb_tmp += xcb_block_len; 5477 xcb_align_to = ALIGNOF(xcb_randr_output_t); 5478 /* insert padding */ 5479 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 5480 xcb_buffer_len += xcb_block_len + xcb_pad; 5481 if (0 != xcb_pad) { 5482 xcb_tmp += xcb_pad; 5483 xcb_pad = 0; 5484 } 5485 xcb_block_len = 0; 5486 5487 return xcb_buffer_len; 5488 } 5489 5490 xcb_randr_create_lease_cookie_t 5491 xcb_randr_create_lease (xcb_connection_t *c, 5492 xcb_window_t window, 5493 xcb_randr_lease_t lid, 5494 uint16_t num_crtcs, 5495 uint16_t num_outputs, 5496 const xcb_randr_crtc_t *crtcs, 5497 const xcb_randr_output_t *outputs) 5498 { 5499 static const xcb_protocol_request_t xcb_req = { 5500 .count = 6, 5501 .ext = &xcb_randr_id, 5502 .opcode = XCB_RANDR_CREATE_LEASE, 5503 .isvoid = 0 5504 }; 5505 5506 struct iovec xcb_parts[8]; 5507 xcb_randr_create_lease_cookie_t xcb_ret; 5508 xcb_randr_create_lease_request_t xcb_out; 5509 5510 xcb_out.window = window; 5511 xcb_out.lid = lid; 5512 xcb_out.num_crtcs = num_crtcs; 5513 xcb_out.num_outputs = num_outputs; 5514 5515 xcb_parts[2].iov_base = (char *) &xcb_out; 5516 xcb_parts[2].iov_len = sizeof(xcb_out); 5517 xcb_parts[3].iov_base = 0; 5518 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 5519 /* xcb_randr_crtc_t crtcs */ 5520 xcb_parts[4].iov_base = (char *) crtcs; 5521 xcb_parts[4].iov_len = num_crtcs * sizeof(uint32_t); 5522 xcb_parts[5].iov_base = 0; 5523 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 5524 /* xcb_randr_output_t outputs */ 5525 xcb_parts[6].iov_base = (char *) outputs; 5526 xcb_parts[6].iov_len = num_outputs * sizeof(uint32_t); 5527 xcb_parts[7].iov_base = 0; 5528 xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3; 5529 5530 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED|XCB_REQUEST_REPLY_FDS, xcb_parts + 2, &xcb_req); 5531 return xcb_ret; 5532 } 5533 5534 xcb_randr_create_lease_cookie_t 5535 xcb_randr_create_lease_unchecked (xcb_connection_t *c, 5536 xcb_window_t window, 5537 xcb_randr_lease_t lid, 5538 uint16_t num_crtcs, 5539 uint16_t num_outputs, 5540 const xcb_randr_crtc_t *crtcs, 5541 const xcb_randr_output_t *outputs) 5542 { 5543 static const xcb_protocol_request_t xcb_req = { 5544 .count = 6, 5545 .ext = &xcb_randr_id, 5546 .opcode = XCB_RANDR_CREATE_LEASE, 5547 .isvoid = 0 5548 }; 5549 5550 struct iovec xcb_parts[8]; 5551 xcb_randr_create_lease_cookie_t xcb_ret; 5552 xcb_randr_create_lease_request_t xcb_out; 5553 5554 xcb_out.window = window; 5555 xcb_out.lid = lid; 5556 xcb_out.num_crtcs = num_crtcs; 5557 xcb_out.num_outputs = num_outputs; 5558 5559 xcb_parts[2].iov_base = (char *) &xcb_out; 5560 xcb_parts[2].iov_len = sizeof(xcb_out); 5561 xcb_parts[3].iov_base = 0; 5562 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 5563 /* xcb_randr_crtc_t crtcs */ 5564 xcb_parts[4].iov_base = (char *) crtcs; 5565 xcb_parts[4].iov_len = num_crtcs * sizeof(uint32_t); 5566 xcb_parts[5].iov_base = 0; 5567 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 5568 /* xcb_randr_output_t outputs */ 5569 xcb_parts[6].iov_base = (char *) outputs; 5570 xcb_parts[6].iov_len = num_outputs * sizeof(uint32_t); 5571 xcb_parts[7].iov_base = 0; 5572 xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3; 5573 5574 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_REPLY_FDS, xcb_parts + 2, &xcb_req); 5575 return xcb_ret; 5576 } 5577 5578 xcb_randr_create_lease_reply_t * 5579 xcb_randr_create_lease_reply (xcb_connection_t *c, 5580 xcb_randr_create_lease_cookie_t cookie /**< */, 5581 xcb_generic_error_t **e) 5582 { 5583 return (xcb_randr_create_lease_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 5584 } 5585 5586 int * 5587 xcb_randr_create_lease_reply_fds (xcb_connection_t *c /**< */, 5588 xcb_randr_create_lease_reply_t *reply) 5589 { 5590 return xcb_get_reply_fds(c, reply, sizeof(xcb_randr_create_lease_reply_t) + 4 * reply->length); 5591 } 5592 5593 xcb_void_cookie_t 5594 xcb_randr_free_lease_checked (xcb_connection_t *c, 5595 xcb_randr_lease_t lid, 5596 uint8_t terminate) 5597 { 5598 static const xcb_protocol_request_t xcb_req = { 5599 .count = 2, 5600 .ext = &xcb_randr_id, 5601 .opcode = XCB_RANDR_FREE_LEASE, 5602 .isvoid = 1 5603 }; 5604 5605 struct iovec xcb_parts[4]; 5606 xcb_void_cookie_t xcb_ret; 5607 xcb_randr_free_lease_request_t xcb_out; 5608 5609 xcb_out.lid = lid; 5610 xcb_out.terminate = terminate; 5611 5612 xcb_parts[2].iov_base = (char *) &xcb_out; 5613 xcb_parts[2].iov_len = sizeof(xcb_out); 5614 xcb_parts[3].iov_base = 0; 5615 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 5616 5617 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 5618 return xcb_ret; 5619 } 5620 5621 xcb_void_cookie_t 5622 xcb_randr_free_lease (xcb_connection_t *c, 5623 xcb_randr_lease_t lid, 5624 uint8_t terminate) 5625 { 5626 static const xcb_protocol_request_t xcb_req = { 5627 .count = 2, 5628 .ext = &xcb_randr_id, 5629 .opcode = XCB_RANDR_FREE_LEASE, 5630 .isvoid = 1 5631 }; 5632 5633 struct iovec xcb_parts[4]; 5634 xcb_void_cookie_t xcb_ret; 5635 xcb_randr_free_lease_request_t xcb_out; 5636 5637 xcb_out.lid = lid; 5638 xcb_out.terminate = terminate; 5639 5640 xcb_parts[2].iov_base = (char *) &xcb_out; 5641 xcb_parts[2].iov_len = sizeof(xcb_out); 5642 xcb_parts[3].iov_base = 0; 5643 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 5644 5645 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 5646 return xcb_ret; 5647 } 5648 5649 void 5650 xcb_randr_lease_notify_next (xcb_randr_lease_notify_iterator_t *i) 5651 { 5652 --i->rem; 5653 ++i->data; 5654 i->index += sizeof(xcb_randr_lease_notify_t); 5655 } 5656 5657 xcb_generic_iterator_t 5658 xcb_randr_lease_notify_end (xcb_randr_lease_notify_iterator_t i) 5659 { 5660 xcb_generic_iterator_t ret; 5661 ret.data = i.data + i.rem; 5662 ret.index = i.index + ((char *) ret.data - (char *) i.data); 5663 ret.rem = 0; 5664 return ret; 5665 } 5666 5667 void 5668 xcb_randr_notify_data_next (xcb_randr_notify_data_iterator_t *i) 5669 { 5670 --i->rem; 5671 ++i->data; 5672 i->index += sizeof(xcb_randr_notify_data_t); 5673 } 5674 5675 xcb_generic_iterator_t 5676 xcb_randr_notify_data_end (xcb_randr_notify_data_iterator_t i) 5677 { 5678 xcb_generic_iterator_t ret; 5679 ret.data = i.data + i.rem; 5680 ret.index = i.index + ((char *) ret.data - (char *) i.data); 5681 ret.rem = 0; 5682 return ret; 5683 } 5684 5685