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