xref: /netbsd-src/external/mit/xorg/lib/libxcb/files/xfixes.c (revision b48426e3c23b30eac5627e03e3cf702117487a42)
10d429e5bSmrg /*
20d429e5bSmrg  * This file generated automatically from xfixes.xml by c_client.py.
30d429e5bSmrg  * Edit at your peril.
40d429e5bSmrg  */
50d429e5bSmrg 
6ed2038faSmrg #ifdef HAVE_CONFIG_H
7ed2038faSmrg #include "config.h"
8ed2038faSmrg #endif
9ed2038faSmrg #include <stdlib.h>
100d429e5bSmrg #include <string.h>
110d429e5bSmrg #include <assert.h>
12ed2038faSmrg #include <stddef.h>  /* for offsetof() */
130d429e5bSmrg #include "xcbext.h"
140d429e5bSmrg #include "xfixes.h"
15ed2038faSmrg 
16ed2038faSmrg #define ALIGNOF(type) offsetof(struct { char dummy; type member; }, member)
170d429e5bSmrg #include "xproto.h"
180d429e5bSmrg #include "render.h"
190d429e5bSmrg #include "shape.h"
200d429e5bSmrg 
210d429e5bSmrg xcb_extension_t xcb_xfixes_id = { "XFIXES", 0 };
220d429e5bSmrg 
230d429e5bSmrg xcb_xfixes_query_version_cookie_t
xcb_xfixes_query_version(xcb_connection_t * c,uint32_t client_major_version,uint32_t client_minor_version)24ba6321feSmrg xcb_xfixes_query_version (xcb_connection_t *c,
25ba6321feSmrg                           uint32_t          client_major_version,
26ba6321feSmrg                           uint32_t          client_minor_version)
270d429e5bSmrg {
280d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
29ba6321feSmrg         .count = 2,
30ba6321feSmrg         .ext = &xcb_xfixes_id,
31ba6321feSmrg         .opcode = XCB_XFIXES_QUERY_VERSION,
32ba6321feSmrg         .isvoid = 0
330d429e5bSmrg     };
340d429e5bSmrg 
350d429e5bSmrg     struct iovec xcb_parts[4];
360d429e5bSmrg     xcb_xfixes_query_version_cookie_t xcb_ret;
370d429e5bSmrg     xcb_xfixes_query_version_request_t xcb_out;
380d429e5bSmrg 
390d429e5bSmrg     xcb_out.client_major_version = client_major_version;
400d429e5bSmrg     xcb_out.client_minor_version = client_minor_version;
410d429e5bSmrg 
420d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
430d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
440d429e5bSmrg     xcb_parts[3].iov_base = 0;
450d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
46ed2038faSmrg 
470d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
480d429e5bSmrg     return xcb_ret;
490d429e5bSmrg }
500d429e5bSmrg 
510d429e5bSmrg xcb_xfixes_query_version_cookie_t
xcb_xfixes_query_version_unchecked(xcb_connection_t * c,uint32_t client_major_version,uint32_t client_minor_version)52ba6321feSmrg xcb_xfixes_query_version_unchecked (xcb_connection_t *c,
53ba6321feSmrg                                     uint32_t          client_major_version,
54ba6321feSmrg                                     uint32_t          client_minor_version)
550d429e5bSmrg {
560d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
57ba6321feSmrg         .count = 2,
58ba6321feSmrg         .ext = &xcb_xfixes_id,
59ba6321feSmrg         .opcode = XCB_XFIXES_QUERY_VERSION,
60ba6321feSmrg         .isvoid = 0
610d429e5bSmrg     };
620d429e5bSmrg 
630d429e5bSmrg     struct iovec xcb_parts[4];
640d429e5bSmrg     xcb_xfixes_query_version_cookie_t xcb_ret;
650d429e5bSmrg     xcb_xfixes_query_version_request_t xcb_out;
660d429e5bSmrg 
670d429e5bSmrg     xcb_out.client_major_version = client_major_version;
680d429e5bSmrg     xcb_out.client_minor_version = client_minor_version;
690d429e5bSmrg 
700d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
710d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
720d429e5bSmrg     xcb_parts[3].iov_base = 0;
730d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
74ed2038faSmrg 
750d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
760d429e5bSmrg     return xcb_ret;
770d429e5bSmrg }
780d429e5bSmrg 
790d429e5bSmrg xcb_xfixes_query_version_reply_t *
xcb_xfixes_query_version_reply(xcb_connection_t * c,xcb_xfixes_query_version_cookie_t cookie,xcb_generic_error_t ** e)80ba6321feSmrg xcb_xfixes_query_version_reply (xcb_connection_t                   *c,
810d429e5bSmrg                                 xcb_xfixes_query_version_cookie_t   cookie  /**< */,
82ba6321feSmrg                                 xcb_generic_error_t               **e)
830d429e5bSmrg {
840d429e5bSmrg     return (xcb_xfixes_query_version_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
850d429e5bSmrg }
860d429e5bSmrg 
870d429e5bSmrg xcb_void_cookie_t
xcb_xfixes_change_save_set_checked(xcb_connection_t * c,uint8_t mode,uint8_t target,uint8_t map,xcb_window_t window)88ba6321feSmrg xcb_xfixes_change_save_set_checked (xcb_connection_t *c,
89ba6321feSmrg                                     uint8_t           mode,
90ba6321feSmrg                                     uint8_t           target,
91ba6321feSmrg                                     uint8_t           map,
92ba6321feSmrg                                     xcb_window_t      window)
930d429e5bSmrg {
940d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
95ba6321feSmrg         .count = 2,
96ba6321feSmrg         .ext = &xcb_xfixes_id,
97ba6321feSmrg         .opcode = XCB_XFIXES_CHANGE_SAVE_SET,
98ba6321feSmrg         .isvoid = 1
990d429e5bSmrg     };
1000d429e5bSmrg 
1010d429e5bSmrg     struct iovec xcb_parts[4];
1020d429e5bSmrg     xcb_void_cookie_t xcb_ret;
1030d429e5bSmrg     xcb_xfixes_change_save_set_request_t xcb_out;
1040d429e5bSmrg 
1050d429e5bSmrg     xcb_out.mode = mode;
1060d429e5bSmrg     xcb_out.target = target;
1070d429e5bSmrg     xcb_out.map = map;
1080d429e5bSmrg     xcb_out.pad0 = 0;
1090d429e5bSmrg     xcb_out.window = window;
1100d429e5bSmrg 
1110d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
1120d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
1130d429e5bSmrg     xcb_parts[3].iov_base = 0;
1140d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
115ed2038faSmrg 
1160d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
1170d429e5bSmrg     return xcb_ret;
1180d429e5bSmrg }
1190d429e5bSmrg 
1200d429e5bSmrg xcb_void_cookie_t
xcb_xfixes_change_save_set(xcb_connection_t * c,uint8_t mode,uint8_t target,uint8_t map,xcb_window_t window)121ba6321feSmrg xcb_xfixes_change_save_set (xcb_connection_t *c,
122ba6321feSmrg                             uint8_t           mode,
123ba6321feSmrg                             uint8_t           target,
124ba6321feSmrg                             uint8_t           map,
125ba6321feSmrg                             xcb_window_t      window)
1260d429e5bSmrg {
1270d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
128ba6321feSmrg         .count = 2,
129ba6321feSmrg         .ext = &xcb_xfixes_id,
130ba6321feSmrg         .opcode = XCB_XFIXES_CHANGE_SAVE_SET,
131ba6321feSmrg         .isvoid = 1
1320d429e5bSmrg     };
1330d429e5bSmrg 
1340d429e5bSmrg     struct iovec xcb_parts[4];
1350d429e5bSmrg     xcb_void_cookie_t xcb_ret;
1360d429e5bSmrg     xcb_xfixes_change_save_set_request_t xcb_out;
1370d429e5bSmrg 
1380d429e5bSmrg     xcb_out.mode = mode;
1390d429e5bSmrg     xcb_out.target = target;
1400d429e5bSmrg     xcb_out.map = map;
1410d429e5bSmrg     xcb_out.pad0 = 0;
1420d429e5bSmrg     xcb_out.window = window;
1430d429e5bSmrg 
1440d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
1450d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
1460d429e5bSmrg     xcb_parts[3].iov_base = 0;
1470d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
148ed2038faSmrg 
1490d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
1500d429e5bSmrg     return xcb_ret;
1510d429e5bSmrg }
1520d429e5bSmrg 
1530d429e5bSmrg xcb_void_cookie_t
xcb_xfixes_select_selection_input_checked(xcb_connection_t * c,xcb_window_t window,xcb_atom_t selection,uint32_t event_mask)154ba6321feSmrg xcb_xfixes_select_selection_input_checked (xcb_connection_t *c,
155ba6321feSmrg                                            xcb_window_t      window,
156ba6321feSmrg                                            xcb_atom_t        selection,
157ba6321feSmrg                                            uint32_t          event_mask)
1580d429e5bSmrg {
1590d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
160ba6321feSmrg         .count = 2,
161ba6321feSmrg         .ext = &xcb_xfixes_id,
162ba6321feSmrg         .opcode = XCB_XFIXES_SELECT_SELECTION_INPUT,
163ba6321feSmrg         .isvoid = 1
1640d429e5bSmrg     };
1650d429e5bSmrg 
1660d429e5bSmrg     struct iovec xcb_parts[4];
1670d429e5bSmrg     xcb_void_cookie_t xcb_ret;
1680d429e5bSmrg     xcb_xfixes_select_selection_input_request_t xcb_out;
1690d429e5bSmrg 
1700d429e5bSmrg     xcb_out.window = window;
1710d429e5bSmrg     xcb_out.selection = selection;
1720d429e5bSmrg     xcb_out.event_mask = event_mask;
1730d429e5bSmrg 
1740d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
1750d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
1760d429e5bSmrg     xcb_parts[3].iov_base = 0;
1770d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
178ed2038faSmrg 
1790d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
1800d429e5bSmrg     return xcb_ret;
1810d429e5bSmrg }
1820d429e5bSmrg 
1830d429e5bSmrg xcb_void_cookie_t
xcb_xfixes_select_selection_input(xcb_connection_t * c,xcb_window_t window,xcb_atom_t selection,uint32_t event_mask)184ba6321feSmrg xcb_xfixes_select_selection_input (xcb_connection_t *c,
185ba6321feSmrg                                    xcb_window_t      window,
186ba6321feSmrg                                    xcb_atom_t        selection,
187ba6321feSmrg                                    uint32_t          event_mask)
1880d429e5bSmrg {
1890d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
190ba6321feSmrg         .count = 2,
191ba6321feSmrg         .ext = &xcb_xfixes_id,
192ba6321feSmrg         .opcode = XCB_XFIXES_SELECT_SELECTION_INPUT,
193ba6321feSmrg         .isvoid = 1
1940d429e5bSmrg     };
1950d429e5bSmrg 
1960d429e5bSmrg     struct iovec xcb_parts[4];
1970d429e5bSmrg     xcb_void_cookie_t xcb_ret;
1980d429e5bSmrg     xcb_xfixes_select_selection_input_request_t xcb_out;
1990d429e5bSmrg 
2000d429e5bSmrg     xcb_out.window = window;
2010d429e5bSmrg     xcb_out.selection = selection;
2020d429e5bSmrg     xcb_out.event_mask = event_mask;
2030d429e5bSmrg 
2040d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
2050d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
2060d429e5bSmrg     xcb_parts[3].iov_base = 0;
2070d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
208ed2038faSmrg 
2090d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
2100d429e5bSmrg     return xcb_ret;
2110d429e5bSmrg }
2120d429e5bSmrg 
2130d429e5bSmrg xcb_void_cookie_t
xcb_xfixes_select_cursor_input_checked(xcb_connection_t * c,xcb_window_t window,uint32_t event_mask)214ba6321feSmrg xcb_xfixes_select_cursor_input_checked (xcb_connection_t *c,
215ba6321feSmrg                                         xcb_window_t      window,
216ba6321feSmrg                                         uint32_t          event_mask)
2170d429e5bSmrg {
2180d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
219ba6321feSmrg         .count = 2,
220ba6321feSmrg         .ext = &xcb_xfixes_id,
221ba6321feSmrg         .opcode = XCB_XFIXES_SELECT_CURSOR_INPUT,
222ba6321feSmrg         .isvoid = 1
2230d429e5bSmrg     };
2240d429e5bSmrg 
2250d429e5bSmrg     struct iovec xcb_parts[4];
2260d429e5bSmrg     xcb_void_cookie_t xcb_ret;
2270d429e5bSmrg     xcb_xfixes_select_cursor_input_request_t xcb_out;
2280d429e5bSmrg 
2290d429e5bSmrg     xcb_out.window = window;
2300d429e5bSmrg     xcb_out.event_mask = event_mask;
2310d429e5bSmrg 
2320d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
2330d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
2340d429e5bSmrg     xcb_parts[3].iov_base = 0;
2350d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
236ed2038faSmrg 
2370d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
2380d429e5bSmrg     return xcb_ret;
2390d429e5bSmrg }
2400d429e5bSmrg 
2410d429e5bSmrg xcb_void_cookie_t
xcb_xfixes_select_cursor_input(xcb_connection_t * c,xcb_window_t window,uint32_t event_mask)242ba6321feSmrg xcb_xfixes_select_cursor_input (xcb_connection_t *c,
243ba6321feSmrg                                 xcb_window_t      window,
244ba6321feSmrg                                 uint32_t          event_mask)
2450d429e5bSmrg {
2460d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
247ba6321feSmrg         .count = 2,
248ba6321feSmrg         .ext = &xcb_xfixes_id,
249ba6321feSmrg         .opcode = XCB_XFIXES_SELECT_CURSOR_INPUT,
250ba6321feSmrg         .isvoid = 1
2510d429e5bSmrg     };
2520d429e5bSmrg 
2530d429e5bSmrg     struct iovec xcb_parts[4];
2540d429e5bSmrg     xcb_void_cookie_t xcb_ret;
2550d429e5bSmrg     xcb_xfixes_select_cursor_input_request_t xcb_out;
2560d429e5bSmrg 
2570d429e5bSmrg     xcb_out.window = window;
2580d429e5bSmrg     xcb_out.event_mask = event_mask;
2590d429e5bSmrg 
2600d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
2610d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
2620d429e5bSmrg     xcb_parts[3].iov_base = 0;
2630d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
264ed2038faSmrg 
2650d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
2660d429e5bSmrg     return xcb_ret;
2670d429e5bSmrg }
2680d429e5bSmrg 
269ed2038faSmrg int
xcb_xfixes_get_cursor_image_sizeof(const void * _buffer)270ba6321feSmrg xcb_xfixes_get_cursor_image_sizeof (const void  *_buffer)
271ed2038faSmrg {
272ed2038faSmrg     char *xcb_tmp = (char *)_buffer;
273ed2038faSmrg     const xcb_xfixes_get_cursor_image_reply_t *_aux = (xcb_xfixes_get_cursor_image_reply_t *)_buffer;
274ed2038faSmrg     unsigned int xcb_buffer_len = 0;
275ed2038faSmrg     unsigned int xcb_block_len = 0;
276ed2038faSmrg     unsigned int xcb_pad = 0;
2776f16f8b8Smrg     unsigned int xcb_align_to = 0;
278ed2038faSmrg 
279ed2038faSmrg 
280ed2038faSmrg     xcb_block_len += sizeof(xcb_xfixes_get_cursor_image_reply_t);
281ed2038faSmrg     xcb_tmp += xcb_block_len;
2826f16f8b8Smrg     xcb_buffer_len += xcb_block_len;
2836f16f8b8Smrg     xcb_block_len = 0;
284ed2038faSmrg     /* cursor_image */
285ed2038faSmrg     xcb_block_len += (_aux->width * _aux->height) * sizeof(uint32_t);
286ed2038faSmrg     xcb_tmp += xcb_block_len;
287ed2038faSmrg     xcb_align_to = ALIGNOF(uint32_t);
288ed2038faSmrg     /* insert padding */
289ed2038faSmrg     xcb_pad = -xcb_block_len & (xcb_align_to - 1);
290ed2038faSmrg     xcb_buffer_len += xcb_block_len + xcb_pad;
291ed2038faSmrg     if (0 != xcb_pad) {
292ed2038faSmrg         xcb_tmp += xcb_pad;
293ed2038faSmrg         xcb_pad = 0;
294ed2038faSmrg     }
295ed2038faSmrg     xcb_block_len = 0;
296ed2038faSmrg 
297ed2038faSmrg     return xcb_buffer_len;
298ed2038faSmrg }
299ed2038faSmrg 
3000d429e5bSmrg xcb_xfixes_get_cursor_image_cookie_t
xcb_xfixes_get_cursor_image(xcb_connection_t * c)301ba6321feSmrg xcb_xfixes_get_cursor_image (xcb_connection_t *c)
3020d429e5bSmrg {
3030d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
304ba6321feSmrg         .count = 2,
305ba6321feSmrg         .ext = &xcb_xfixes_id,
306ba6321feSmrg         .opcode = XCB_XFIXES_GET_CURSOR_IMAGE,
307ba6321feSmrg         .isvoid = 0
3080d429e5bSmrg     };
3090d429e5bSmrg 
3100d429e5bSmrg     struct iovec xcb_parts[4];
3110d429e5bSmrg     xcb_xfixes_get_cursor_image_cookie_t xcb_ret;
3120d429e5bSmrg     xcb_xfixes_get_cursor_image_request_t xcb_out;
3130d429e5bSmrg 
3140d429e5bSmrg 
3150d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
3160d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
3170d429e5bSmrg     xcb_parts[3].iov_base = 0;
3180d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
319ed2038faSmrg 
3200d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
3210d429e5bSmrg     return xcb_ret;
3220d429e5bSmrg }
3230d429e5bSmrg 
3240d429e5bSmrg xcb_xfixes_get_cursor_image_cookie_t
xcb_xfixes_get_cursor_image_unchecked(xcb_connection_t * c)325ba6321feSmrg xcb_xfixes_get_cursor_image_unchecked (xcb_connection_t *c)
3260d429e5bSmrg {
3270d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
328ba6321feSmrg         .count = 2,
329ba6321feSmrg         .ext = &xcb_xfixes_id,
330ba6321feSmrg         .opcode = XCB_XFIXES_GET_CURSOR_IMAGE,
331ba6321feSmrg         .isvoid = 0
3320d429e5bSmrg     };
3330d429e5bSmrg 
3340d429e5bSmrg     struct iovec xcb_parts[4];
3350d429e5bSmrg     xcb_xfixes_get_cursor_image_cookie_t xcb_ret;
3360d429e5bSmrg     xcb_xfixes_get_cursor_image_request_t xcb_out;
3370d429e5bSmrg 
3380d429e5bSmrg 
3390d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
3400d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
3410d429e5bSmrg     xcb_parts[3].iov_base = 0;
3420d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
343ed2038faSmrg 
3440d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
3450d429e5bSmrg     return xcb_ret;
3460d429e5bSmrg }
3470d429e5bSmrg 
3480d429e5bSmrg uint32_t *
xcb_xfixes_get_cursor_image_cursor_image(const xcb_xfixes_get_cursor_image_reply_t * R)349ba6321feSmrg xcb_xfixes_get_cursor_image_cursor_image (const xcb_xfixes_get_cursor_image_reply_t *R)
3500d429e5bSmrg {
3510d429e5bSmrg     return (uint32_t *) (R + 1);
3520d429e5bSmrg }
3530d429e5bSmrg 
3540d429e5bSmrg int
xcb_xfixes_get_cursor_image_cursor_image_length(const xcb_xfixes_get_cursor_image_reply_t * R)355ba6321feSmrg xcb_xfixes_get_cursor_image_cursor_image_length (const xcb_xfixes_get_cursor_image_reply_t *R)
3560d429e5bSmrg {
3570d429e5bSmrg     return (R->width * R->height);
3580d429e5bSmrg }
3590d429e5bSmrg 
3600d429e5bSmrg xcb_generic_iterator_t
xcb_xfixes_get_cursor_image_cursor_image_end(const xcb_xfixes_get_cursor_image_reply_t * R)361ba6321feSmrg xcb_xfixes_get_cursor_image_cursor_image_end (const xcb_xfixes_get_cursor_image_reply_t *R)
3620d429e5bSmrg {
3630d429e5bSmrg     xcb_generic_iterator_t i;
3640d429e5bSmrg     i.data = ((uint32_t *) (R + 1)) + ((R->width * R->height));
3650d429e5bSmrg     i.rem = 0;
3660d429e5bSmrg     i.index = (char *) i.data - (char *) R;
3670d429e5bSmrg     return i;
3680d429e5bSmrg }
3690d429e5bSmrg 
3700d429e5bSmrg xcb_xfixes_get_cursor_image_reply_t *
xcb_xfixes_get_cursor_image_reply(xcb_connection_t * c,xcb_xfixes_get_cursor_image_cookie_t cookie,xcb_generic_error_t ** e)371ba6321feSmrg xcb_xfixes_get_cursor_image_reply (xcb_connection_t                      *c,
3720d429e5bSmrg                                    xcb_xfixes_get_cursor_image_cookie_t   cookie  /**< */,
373ba6321feSmrg                                    xcb_generic_error_t                  **e)
3740d429e5bSmrg {
3750d429e5bSmrg     return (xcb_xfixes_get_cursor_image_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
3760d429e5bSmrg }
3770d429e5bSmrg 
3780d429e5bSmrg void
xcb_xfixes_region_next(xcb_xfixes_region_iterator_t * i)379ba6321feSmrg xcb_xfixes_region_next (xcb_xfixes_region_iterator_t *i)
3800d429e5bSmrg {
3810d429e5bSmrg     --i->rem;
3820d429e5bSmrg     ++i->data;
3830d429e5bSmrg     i->index += sizeof(xcb_xfixes_region_t);
3840d429e5bSmrg }
3850d429e5bSmrg 
3860d429e5bSmrg xcb_generic_iterator_t
xcb_xfixes_region_end(xcb_xfixes_region_iterator_t i)387ba6321feSmrg xcb_xfixes_region_end (xcb_xfixes_region_iterator_t i)
3880d429e5bSmrg {
3890d429e5bSmrg     xcb_generic_iterator_t ret;
3900d429e5bSmrg     ret.data = i.data + i.rem;
3910d429e5bSmrg     ret.index = i.index + ((char *) ret.data - (char *) i.data);
3920d429e5bSmrg     ret.rem = 0;
3930d429e5bSmrg     return ret;
3940d429e5bSmrg }
3950d429e5bSmrg 
396ed2038faSmrg int
xcb_xfixes_create_region_sizeof(const void * _buffer,uint32_t rectangles_len)397ba6321feSmrg xcb_xfixes_create_region_sizeof (const void  *_buffer,
398ba6321feSmrg                                  uint32_t     rectangles_len)
399ed2038faSmrg {
400ed2038faSmrg     char *xcb_tmp = (char *)_buffer;
401ed2038faSmrg     unsigned int xcb_buffer_len = 0;
402ed2038faSmrg     unsigned int xcb_block_len = 0;
403ed2038faSmrg     unsigned int xcb_pad = 0;
4046f16f8b8Smrg     unsigned int xcb_align_to = 0;
405ed2038faSmrg 
406ed2038faSmrg 
407ed2038faSmrg     xcb_block_len += sizeof(xcb_xfixes_create_region_request_t);
408ed2038faSmrg     xcb_tmp += xcb_block_len;
4096f16f8b8Smrg     xcb_buffer_len += xcb_block_len;
4106f16f8b8Smrg     xcb_block_len = 0;
411ed2038faSmrg     /* rectangles */
412ed2038faSmrg     xcb_block_len += rectangles_len * sizeof(xcb_rectangle_t);
413ed2038faSmrg     xcb_tmp += xcb_block_len;
414ed2038faSmrg     xcb_align_to = ALIGNOF(xcb_rectangle_t);
415ed2038faSmrg     /* insert padding */
416ed2038faSmrg     xcb_pad = -xcb_block_len & (xcb_align_to - 1);
417ed2038faSmrg     xcb_buffer_len += xcb_block_len + xcb_pad;
418ed2038faSmrg     if (0 != xcb_pad) {
419ed2038faSmrg         xcb_tmp += xcb_pad;
420ed2038faSmrg         xcb_pad = 0;
421ed2038faSmrg     }
422ed2038faSmrg     xcb_block_len = 0;
423ed2038faSmrg 
424ed2038faSmrg     return xcb_buffer_len;
425ed2038faSmrg }
426ed2038faSmrg 
4270d429e5bSmrg xcb_void_cookie_t
xcb_xfixes_create_region_checked(xcb_connection_t * c,xcb_xfixes_region_t region,uint32_t rectangles_len,const xcb_rectangle_t * rectangles)428ba6321feSmrg xcb_xfixes_create_region_checked (xcb_connection_t      *c,
429ba6321feSmrg                                   xcb_xfixes_region_t    region,
430ba6321feSmrg                                   uint32_t               rectangles_len,
431ba6321feSmrg                                   const xcb_rectangle_t *rectangles)
4320d429e5bSmrg {
4330d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
434ba6321feSmrg         .count = 4,
435ba6321feSmrg         .ext = &xcb_xfixes_id,
436ba6321feSmrg         .opcode = XCB_XFIXES_CREATE_REGION,
437ba6321feSmrg         .isvoid = 1
4380d429e5bSmrg     };
4390d429e5bSmrg 
4400d429e5bSmrg     struct iovec xcb_parts[6];
4410d429e5bSmrg     xcb_void_cookie_t xcb_ret;
4420d429e5bSmrg     xcb_xfixes_create_region_request_t xcb_out;
4430d429e5bSmrg 
4440d429e5bSmrg     xcb_out.region = region;
4450d429e5bSmrg 
4460d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
4470d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
4480d429e5bSmrg     xcb_parts[3].iov_base = 0;
4490d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
450ed2038faSmrg     /* xcb_rectangle_t rectangles */
4510d429e5bSmrg     xcb_parts[4].iov_base = (char *) rectangles;
4520d429e5bSmrg     xcb_parts[4].iov_len = rectangles_len * sizeof(xcb_rectangle_t);
4530d429e5bSmrg     xcb_parts[5].iov_base = 0;
4540d429e5bSmrg     xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
455ed2038faSmrg 
4560d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
4570d429e5bSmrg     return xcb_ret;
4580d429e5bSmrg }
4590d429e5bSmrg 
4600d429e5bSmrg xcb_void_cookie_t
xcb_xfixes_create_region(xcb_connection_t * c,xcb_xfixes_region_t region,uint32_t rectangles_len,const xcb_rectangle_t * rectangles)461ba6321feSmrg xcb_xfixes_create_region (xcb_connection_t      *c,
462ba6321feSmrg                           xcb_xfixes_region_t    region,
463ba6321feSmrg                           uint32_t               rectangles_len,
464ba6321feSmrg                           const xcb_rectangle_t *rectangles)
4650d429e5bSmrg {
4660d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
467ba6321feSmrg         .count = 4,
468ba6321feSmrg         .ext = &xcb_xfixes_id,
469ba6321feSmrg         .opcode = XCB_XFIXES_CREATE_REGION,
470ba6321feSmrg         .isvoid = 1
4710d429e5bSmrg     };
4720d429e5bSmrg 
4730d429e5bSmrg     struct iovec xcb_parts[6];
4740d429e5bSmrg     xcb_void_cookie_t xcb_ret;
4750d429e5bSmrg     xcb_xfixes_create_region_request_t xcb_out;
4760d429e5bSmrg 
4770d429e5bSmrg     xcb_out.region = region;
4780d429e5bSmrg 
4790d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
4800d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
4810d429e5bSmrg     xcb_parts[3].iov_base = 0;
4820d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
483ed2038faSmrg     /* xcb_rectangle_t rectangles */
4840d429e5bSmrg     xcb_parts[4].iov_base = (char *) rectangles;
4850d429e5bSmrg     xcb_parts[4].iov_len = rectangles_len * sizeof(xcb_rectangle_t);
4860d429e5bSmrg     xcb_parts[5].iov_base = 0;
4870d429e5bSmrg     xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
488ed2038faSmrg 
4890d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
4900d429e5bSmrg     return xcb_ret;
4910d429e5bSmrg }
4920d429e5bSmrg 
493ba6321feSmrg xcb_rectangle_t *
xcb_xfixes_create_region_rectangles(const xcb_xfixes_create_region_request_t * R)494ba6321feSmrg xcb_xfixes_create_region_rectangles (const xcb_xfixes_create_region_request_t *R)
495ba6321feSmrg {
496ba6321feSmrg     return (xcb_rectangle_t *) (R + 1);
497ba6321feSmrg }
498ba6321feSmrg 
499ba6321feSmrg int
xcb_xfixes_create_region_rectangles_length(const xcb_xfixes_create_region_request_t * R)500ba6321feSmrg xcb_xfixes_create_region_rectangles_length (const xcb_xfixes_create_region_request_t *R)
501ba6321feSmrg {
502ba6321feSmrg     return (((R->length * 4) - sizeof(xcb_xfixes_create_region_request_t))/sizeof(xcb_rectangle_t));
503ba6321feSmrg }
504ba6321feSmrg 
505ba6321feSmrg xcb_rectangle_iterator_t
xcb_xfixes_create_region_rectangles_iterator(const xcb_xfixes_create_region_request_t * R)506ba6321feSmrg xcb_xfixes_create_region_rectangles_iterator (const xcb_xfixes_create_region_request_t *R)
507ba6321feSmrg {
508ba6321feSmrg     xcb_rectangle_iterator_t i;
509ba6321feSmrg     i.data = (xcb_rectangle_t *) (R + 1);
510ba6321feSmrg     i.rem = (((R->length * 4) - sizeof(xcb_xfixes_create_region_request_t))/sizeof(xcb_rectangle_t));
511ba6321feSmrg     i.index = (char *) i.data - (char *) R;
512ba6321feSmrg     return i;
513ba6321feSmrg }
514ba6321feSmrg 
5150d429e5bSmrg xcb_void_cookie_t
xcb_xfixes_create_region_from_bitmap_checked(xcb_connection_t * c,xcb_xfixes_region_t region,xcb_pixmap_t bitmap)516ba6321feSmrg xcb_xfixes_create_region_from_bitmap_checked (xcb_connection_t    *c,
517ba6321feSmrg                                               xcb_xfixes_region_t  region,
518ba6321feSmrg                                               xcb_pixmap_t         bitmap)
5190d429e5bSmrg {
5200d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
521ba6321feSmrg         .count = 2,
522ba6321feSmrg         .ext = &xcb_xfixes_id,
523ba6321feSmrg         .opcode = XCB_XFIXES_CREATE_REGION_FROM_BITMAP,
524ba6321feSmrg         .isvoid = 1
5250d429e5bSmrg     };
5260d429e5bSmrg 
5270d429e5bSmrg     struct iovec xcb_parts[4];
5280d429e5bSmrg     xcb_void_cookie_t xcb_ret;
5290d429e5bSmrg     xcb_xfixes_create_region_from_bitmap_request_t xcb_out;
5300d429e5bSmrg 
5310d429e5bSmrg     xcb_out.region = region;
5320d429e5bSmrg     xcb_out.bitmap = bitmap;
5330d429e5bSmrg 
5340d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
5350d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
5360d429e5bSmrg     xcb_parts[3].iov_base = 0;
5370d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
538ed2038faSmrg 
5390d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
5400d429e5bSmrg     return xcb_ret;
5410d429e5bSmrg }
5420d429e5bSmrg 
5430d429e5bSmrg xcb_void_cookie_t
xcb_xfixes_create_region_from_bitmap(xcb_connection_t * c,xcb_xfixes_region_t region,xcb_pixmap_t bitmap)544ba6321feSmrg xcb_xfixes_create_region_from_bitmap (xcb_connection_t    *c,
545ba6321feSmrg                                       xcb_xfixes_region_t  region,
546ba6321feSmrg                                       xcb_pixmap_t         bitmap)
5470d429e5bSmrg {
5480d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
549ba6321feSmrg         .count = 2,
550ba6321feSmrg         .ext = &xcb_xfixes_id,
551ba6321feSmrg         .opcode = XCB_XFIXES_CREATE_REGION_FROM_BITMAP,
552ba6321feSmrg         .isvoid = 1
5530d429e5bSmrg     };
5540d429e5bSmrg 
5550d429e5bSmrg     struct iovec xcb_parts[4];
5560d429e5bSmrg     xcb_void_cookie_t xcb_ret;
5570d429e5bSmrg     xcb_xfixes_create_region_from_bitmap_request_t xcb_out;
5580d429e5bSmrg 
5590d429e5bSmrg     xcb_out.region = region;
5600d429e5bSmrg     xcb_out.bitmap = bitmap;
5610d429e5bSmrg 
5620d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
5630d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
5640d429e5bSmrg     xcb_parts[3].iov_base = 0;
5650d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
566ed2038faSmrg 
5670d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
5680d429e5bSmrg     return xcb_ret;
5690d429e5bSmrg }
5700d429e5bSmrg 
5710d429e5bSmrg xcb_void_cookie_t
xcb_xfixes_create_region_from_window_checked(xcb_connection_t * c,xcb_xfixes_region_t region,xcb_window_t window,xcb_shape_kind_t kind)572ba6321feSmrg xcb_xfixes_create_region_from_window_checked (xcb_connection_t    *c,
573ba6321feSmrg                                               xcb_xfixes_region_t  region,
574ba6321feSmrg                                               xcb_window_t         window,
575ba6321feSmrg                                               xcb_shape_kind_t     kind)
5760d429e5bSmrg {
5770d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
578ba6321feSmrg         .count = 2,
579ba6321feSmrg         .ext = &xcb_xfixes_id,
580ba6321feSmrg         .opcode = XCB_XFIXES_CREATE_REGION_FROM_WINDOW,
581ba6321feSmrg         .isvoid = 1
5820d429e5bSmrg     };
5830d429e5bSmrg 
5840d429e5bSmrg     struct iovec xcb_parts[4];
5850d429e5bSmrg     xcb_void_cookie_t xcb_ret;
5860d429e5bSmrg     xcb_xfixes_create_region_from_window_request_t xcb_out;
5870d429e5bSmrg 
5880d429e5bSmrg     xcb_out.region = region;
5890d429e5bSmrg     xcb_out.window = window;
5900d429e5bSmrg     xcb_out.kind = kind;
5910d429e5bSmrg     memset(xcb_out.pad0, 0, 3);
5920d429e5bSmrg 
5930d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
5940d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
5950d429e5bSmrg     xcb_parts[3].iov_base = 0;
5960d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
597ed2038faSmrg 
5980d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
5990d429e5bSmrg     return xcb_ret;
6000d429e5bSmrg }
6010d429e5bSmrg 
6020d429e5bSmrg xcb_void_cookie_t
xcb_xfixes_create_region_from_window(xcb_connection_t * c,xcb_xfixes_region_t region,xcb_window_t window,xcb_shape_kind_t kind)603ba6321feSmrg xcb_xfixes_create_region_from_window (xcb_connection_t    *c,
604ba6321feSmrg                                       xcb_xfixes_region_t  region,
605ba6321feSmrg                                       xcb_window_t         window,
606ba6321feSmrg                                       xcb_shape_kind_t     kind)
6070d429e5bSmrg {
6080d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
609ba6321feSmrg         .count = 2,
610ba6321feSmrg         .ext = &xcb_xfixes_id,
611ba6321feSmrg         .opcode = XCB_XFIXES_CREATE_REGION_FROM_WINDOW,
612ba6321feSmrg         .isvoid = 1
6130d429e5bSmrg     };
6140d429e5bSmrg 
6150d429e5bSmrg     struct iovec xcb_parts[4];
6160d429e5bSmrg     xcb_void_cookie_t xcb_ret;
6170d429e5bSmrg     xcb_xfixes_create_region_from_window_request_t xcb_out;
6180d429e5bSmrg 
6190d429e5bSmrg     xcb_out.region = region;
6200d429e5bSmrg     xcb_out.window = window;
6210d429e5bSmrg     xcb_out.kind = kind;
6220d429e5bSmrg     memset(xcb_out.pad0, 0, 3);
6230d429e5bSmrg 
6240d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
6250d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
6260d429e5bSmrg     xcb_parts[3].iov_base = 0;
6270d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
628ed2038faSmrg 
6290d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
6300d429e5bSmrg     return xcb_ret;
6310d429e5bSmrg }
6320d429e5bSmrg 
6330d429e5bSmrg xcb_void_cookie_t
xcb_xfixes_create_region_from_gc_checked(xcb_connection_t * c,xcb_xfixes_region_t region,xcb_gcontext_t gc)634ba6321feSmrg xcb_xfixes_create_region_from_gc_checked (xcb_connection_t    *c,
635ba6321feSmrg                                           xcb_xfixes_region_t  region,
636ba6321feSmrg                                           xcb_gcontext_t       gc)
6370d429e5bSmrg {
6380d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
639ba6321feSmrg         .count = 2,
640ba6321feSmrg         .ext = &xcb_xfixes_id,
641ba6321feSmrg         .opcode = XCB_XFIXES_CREATE_REGION_FROM_GC,
642ba6321feSmrg         .isvoid = 1
6430d429e5bSmrg     };
6440d429e5bSmrg 
6450d429e5bSmrg     struct iovec xcb_parts[4];
6460d429e5bSmrg     xcb_void_cookie_t xcb_ret;
6470d429e5bSmrg     xcb_xfixes_create_region_from_gc_request_t xcb_out;
6480d429e5bSmrg 
6490d429e5bSmrg     xcb_out.region = region;
6500d429e5bSmrg     xcb_out.gc = gc;
6510d429e5bSmrg 
6520d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
6530d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
6540d429e5bSmrg     xcb_parts[3].iov_base = 0;
6550d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
656ed2038faSmrg 
6570d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
6580d429e5bSmrg     return xcb_ret;
6590d429e5bSmrg }
6600d429e5bSmrg 
6610d429e5bSmrg xcb_void_cookie_t
xcb_xfixes_create_region_from_gc(xcb_connection_t * c,xcb_xfixes_region_t region,xcb_gcontext_t gc)662ba6321feSmrg xcb_xfixes_create_region_from_gc (xcb_connection_t    *c,
663ba6321feSmrg                                   xcb_xfixes_region_t  region,
664ba6321feSmrg                                   xcb_gcontext_t       gc)
6650d429e5bSmrg {
6660d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
667ba6321feSmrg         .count = 2,
668ba6321feSmrg         .ext = &xcb_xfixes_id,
669ba6321feSmrg         .opcode = XCB_XFIXES_CREATE_REGION_FROM_GC,
670ba6321feSmrg         .isvoid = 1
6710d429e5bSmrg     };
6720d429e5bSmrg 
6730d429e5bSmrg     struct iovec xcb_parts[4];
6740d429e5bSmrg     xcb_void_cookie_t xcb_ret;
6750d429e5bSmrg     xcb_xfixes_create_region_from_gc_request_t xcb_out;
6760d429e5bSmrg 
6770d429e5bSmrg     xcb_out.region = region;
6780d429e5bSmrg     xcb_out.gc = gc;
6790d429e5bSmrg 
6800d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
6810d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
6820d429e5bSmrg     xcb_parts[3].iov_base = 0;
6830d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
684ed2038faSmrg 
6850d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
6860d429e5bSmrg     return xcb_ret;
6870d429e5bSmrg }
6880d429e5bSmrg 
6890d429e5bSmrg xcb_void_cookie_t
xcb_xfixes_create_region_from_picture_checked(xcb_connection_t * c,xcb_xfixes_region_t region,xcb_render_picture_t picture)690ba6321feSmrg xcb_xfixes_create_region_from_picture_checked (xcb_connection_t     *c,
691ba6321feSmrg                                                xcb_xfixes_region_t   region,
692ba6321feSmrg                                                xcb_render_picture_t  picture)
6930d429e5bSmrg {
6940d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
695ba6321feSmrg         .count = 2,
696ba6321feSmrg         .ext = &xcb_xfixes_id,
697ba6321feSmrg         .opcode = XCB_XFIXES_CREATE_REGION_FROM_PICTURE,
698ba6321feSmrg         .isvoid = 1
6990d429e5bSmrg     };
7000d429e5bSmrg 
7010d429e5bSmrg     struct iovec xcb_parts[4];
7020d429e5bSmrg     xcb_void_cookie_t xcb_ret;
7030d429e5bSmrg     xcb_xfixes_create_region_from_picture_request_t xcb_out;
7040d429e5bSmrg 
7050d429e5bSmrg     xcb_out.region = region;
7060d429e5bSmrg     xcb_out.picture = picture;
7070d429e5bSmrg 
7080d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
7090d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
7100d429e5bSmrg     xcb_parts[3].iov_base = 0;
7110d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
712ed2038faSmrg 
7130d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
7140d429e5bSmrg     return xcb_ret;
7150d429e5bSmrg }
7160d429e5bSmrg 
7170d429e5bSmrg xcb_void_cookie_t
xcb_xfixes_create_region_from_picture(xcb_connection_t * c,xcb_xfixes_region_t region,xcb_render_picture_t picture)718ba6321feSmrg xcb_xfixes_create_region_from_picture (xcb_connection_t     *c,
719ba6321feSmrg                                        xcb_xfixes_region_t   region,
720ba6321feSmrg                                        xcb_render_picture_t  picture)
7210d429e5bSmrg {
7220d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
723ba6321feSmrg         .count = 2,
724ba6321feSmrg         .ext = &xcb_xfixes_id,
725ba6321feSmrg         .opcode = XCB_XFIXES_CREATE_REGION_FROM_PICTURE,
726ba6321feSmrg         .isvoid = 1
7270d429e5bSmrg     };
7280d429e5bSmrg 
7290d429e5bSmrg     struct iovec xcb_parts[4];
7300d429e5bSmrg     xcb_void_cookie_t xcb_ret;
7310d429e5bSmrg     xcb_xfixes_create_region_from_picture_request_t xcb_out;
7320d429e5bSmrg 
7330d429e5bSmrg     xcb_out.region = region;
7340d429e5bSmrg     xcb_out.picture = picture;
7350d429e5bSmrg 
7360d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
7370d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
7380d429e5bSmrg     xcb_parts[3].iov_base = 0;
7390d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
740ed2038faSmrg 
7410d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
7420d429e5bSmrg     return xcb_ret;
7430d429e5bSmrg }
7440d429e5bSmrg 
7450d429e5bSmrg xcb_void_cookie_t
xcb_xfixes_destroy_region_checked(xcb_connection_t * c,xcb_xfixes_region_t region)746ba6321feSmrg xcb_xfixes_destroy_region_checked (xcb_connection_t    *c,
747ba6321feSmrg                                    xcb_xfixes_region_t  region)
7480d429e5bSmrg {
7490d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
750ba6321feSmrg         .count = 2,
751ba6321feSmrg         .ext = &xcb_xfixes_id,
752ba6321feSmrg         .opcode = XCB_XFIXES_DESTROY_REGION,
753ba6321feSmrg         .isvoid = 1
7540d429e5bSmrg     };
7550d429e5bSmrg 
7560d429e5bSmrg     struct iovec xcb_parts[4];
7570d429e5bSmrg     xcb_void_cookie_t xcb_ret;
7580d429e5bSmrg     xcb_xfixes_destroy_region_request_t xcb_out;
7590d429e5bSmrg 
7600d429e5bSmrg     xcb_out.region = region;
7610d429e5bSmrg 
7620d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
7630d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
7640d429e5bSmrg     xcb_parts[3].iov_base = 0;
7650d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
766ed2038faSmrg 
7670d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
7680d429e5bSmrg     return xcb_ret;
7690d429e5bSmrg }
7700d429e5bSmrg 
7710d429e5bSmrg xcb_void_cookie_t
xcb_xfixes_destroy_region(xcb_connection_t * c,xcb_xfixes_region_t region)772ba6321feSmrg xcb_xfixes_destroy_region (xcb_connection_t    *c,
773ba6321feSmrg                            xcb_xfixes_region_t  region)
7740d429e5bSmrg {
7750d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
776ba6321feSmrg         .count = 2,
777ba6321feSmrg         .ext = &xcb_xfixes_id,
778ba6321feSmrg         .opcode = XCB_XFIXES_DESTROY_REGION,
779ba6321feSmrg         .isvoid = 1
7800d429e5bSmrg     };
7810d429e5bSmrg 
7820d429e5bSmrg     struct iovec xcb_parts[4];
7830d429e5bSmrg     xcb_void_cookie_t xcb_ret;
7840d429e5bSmrg     xcb_xfixes_destroy_region_request_t xcb_out;
7850d429e5bSmrg 
7860d429e5bSmrg     xcb_out.region = region;
7870d429e5bSmrg 
7880d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
7890d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
7900d429e5bSmrg     xcb_parts[3].iov_base = 0;
7910d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
792ed2038faSmrg 
7930d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
7940d429e5bSmrg     return xcb_ret;
7950d429e5bSmrg }
7960d429e5bSmrg 
797ed2038faSmrg int
xcb_xfixes_set_region_sizeof(const void * _buffer,uint32_t rectangles_len)798ba6321feSmrg xcb_xfixes_set_region_sizeof (const void  *_buffer,
799ba6321feSmrg                               uint32_t     rectangles_len)
800ed2038faSmrg {
801ed2038faSmrg     char *xcb_tmp = (char *)_buffer;
802ed2038faSmrg     unsigned int xcb_buffer_len = 0;
803ed2038faSmrg     unsigned int xcb_block_len = 0;
804ed2038faSmrg     unsigned int xcb_pad = 0;
8056f16f8b8Smrg     unsigned int xcb_align_to = 0;
806ed2038faSmrg 
807ed2038faSmrg 
808ed2038faSmrg     xcb_block_len += sizeof(xcb_xfixes_set_region_request_t);
809ed2038faSmrg     xcb_tmp += xcb_block_len;
8106f16f8b8Smrg     xcb_buffer_len += xcb_block_len;
8116f16f8b8Smrg     xcb_block_len = 0;
812ed2038faSmrg     /* rectangles */
813ed2038faSmrg     xcb_block_len += rectangles_len * sizeof(xcb_rectangle_t);
814ed2038faSmrg     xcb_tmp += xcb_block_len;
815ed2038faSmrg     xcb_align_to = ALIGNOF(xcb_rectangle_t);
816ed2038faSmrg     /* insert padding */
817ed2038faSmrg     xcb_pad = -xcb_block_len & (xcb_align_to - 1);
818ed2038faSmrg     xcb_buffer_len += xcb_block_len + xcb_pad;
819ed2038faSmrg     if (0 != xcb_pad) {
820ed2038faSmrg         xcb_tmp += xcb_pad;
821ed2038faSmrg         xcb_pad = 0;
822ed2038faSmrg     }
823ed2038faSmrg     xcb_block_len = 0;
824ed2038faSmrg 
825ed2038faSmrg     return xcb_buffer_len;
826ed2038faSmrg }
827ed2038faSmrg 
8280d429e5bSmrg xcb_void_cookie_t
xcb_xfixes_set_region_checked(xcb_connection_t * c,xcb_xfixes_region_t region,uint32_t rectangles_len,const xcb_rectangle_t * rectangles)829ba6321feSmrg xcb_xfixes_set_region_checked (xcb_connection_t      *c,
830ba6321feSmrg                                xcb_xfixes_region_t    region,
831ba6321feSmrg                                uint32_t               rectangles_len,
832ba6321feSmrg                                const xcb_rectangle_t *rectangles)
8330d429e5bSmrg {
8340d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
835ba6321feSmrg         .count = 4,
836ba6321feSmrg         .ext = &xcb_xfixes_id,
837ba6321feSmrg         .opcode = XCB_XFIXES_SET_REGION,
838ba6321feSmrg         .isvoid = 1
8390d429e5bSmrg     };
8400d429e5bSmrg 
8410d429e5bSmrg     struct iovec xcb_parts[6];
8420d429e5bSmrg     xcb_void_cookie_t xcb_ret;
8430d429e5bSmrg     xcb_xfixes_set_region_request_t xcb_out;
8440d429e5bSmrg 
8450d429e5bSmrg     xcb_out.region = region;
8460d429e5bSmrg 
8470d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
8480d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
8490d429e5bSmrg     xcb_parts[3].iov_base = 0;
8500d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
851ed2038faSmrg     /* xcb_rectangle_t rectangles */
8520d429e5bSmrg     xcb_parts[4].iov_base = (char *) rectangles;
8530d429e5bSmrg     xcb_parts[4].iov_len = rectangles_len * sizeof(xcb_rectangle_t);
8540d429e5bSmrg     xcb_parts[5].iov_base = 0;
8550d429e5bSmrg     xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
856ed2038faSmrg 
8570d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
8580d429e5bSmrg     return xcb_ret;
8590d429e5bSmrg }
8600d429e5bSmrg 
8610d429e5bSmrg xcb_void_cookie_t
xcb_xfixes_set_region(xcb_connection_t * c,xcb_xfixes_region_t region,uint32_t rectangles_len,const xcb_rectangle_t * rectangles)862ba6321feSmrg xcb_xfixes_set_region (xcb_connection_t      *c,
863ba6321feSmrg                        xcb_xfixes_region_t    region,
864ba6321feSmrg                        uint32_t               rectangles_len,
865ba6321feSmrg                        const xcb_rectangle_t *rectangles)
8660d429e5bSmrg {
8670d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
868ba6321feSmrg         .count = 4,
869ba6321feSmrg         .ext = &xcb_xfixes_id,
870ba6321feSmrg         .opcode = XCB_XFIXES_SET_REGION,
871ba6321feSmrg         .isvoid = 1
8720d429e5bSmrg     };
8730d429e5bSmrg 
8740d429e5bSmrg     struct iovec xcb_parts[6];
8750d429e5bSmrg     xcb_void_cookie_t xcb_ret;
8760d429e5bSmrg     xcb_xfixes_set_region_request_t xcb_out;
8770d429e5bSmrg 
8780d429e5bSmrg     xcb_out.region = region;
8790d429e5bSmrg 
8800d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
8810d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
8820d429e5bSmrg     xcb_parts[3].iov_base = 0;
8830d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
884ed2038faSmrg     /* xcb_rectangle_t rectangles */
8850d429e5bSmrg     xcb_parts[4].iov_base = (char *) rectangles;
8860d429e5bSmrg     xcb_parts[4].iov_len = rectangles_len * sizeof(xcb_rectangle_t);
8870d429e5bSmrg     xcb_parts[5].iov_base = 0;
8880d429e5bSmrg     xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
889ed2038faSmrg 
8900d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
8910d429e5bSmrg     return xcb_ret;
8920d429e5bSmrg }
8930d429e5bSmrg 
894ba6321feSmrg xcb_rectangle_t *
xcb_xfixes_set_region_rectangles(const xcb_xfixes_set_region_request_t * R)895ba6321feSmrg xcb_xfixes_set_region_rectangles (const xcb_xfixes_set_region_request_t *R)
896ba6321feSmrg {
897ba6321feSmrg     return (xcb_rectangle_t *) (R + 1);
898ba6321feSmrg }
899ba6321feSmrg 
900ba6321feSmrg int
xcb_xfixes_set_region_rectangles_length(const xcb_xfixes_set_region_request_t * R)901ba6321feSmrg xcb_xfixes_set_region_rectangles_length (const xcb_xfixes_set_region_request_t *R)
902ba6321feSmrg {
903ba6321feSmrg     return (((R->length * 4) - sizeof(xcb_xfixes_set_region_request_t))/sizeof(xcb_rectangle_t));
904ba6321feSmrg }
905ba6321feSmrg 
906ba6321feSmrg xcb_rectangle_iterator_t
xcb_xfixes_set_region_rectangles_iterator(const xcb_xfixes_set_region_request_t * R)907ba6321feSmrg xcb_xfixes_set_region_rectangles_iterator (const xcb_xfixes_set_region_request_t *R)
908ba6321feSmrg {
909ba6321feSmrg     xcb_rectangle_iterator_t i;
910ba6321feSmrg     i.data = (xcb_rectangle_t *) (R + 1);
911ba6321feSmrg     i.rem = (((R->length * 4) - sizeof(xcb_xfixes_set_region_request_t))/sizeof(xcb_rectangle_t));
912ba6321feSmrg     i.index = (char *) i.data - (char *) R;
913ba6321feSmrg     return i;
914ba6321feSmrg }
915ba6321feSmrg 
9160d429e5bSmrg xcb_void_cookie_t
xcb_xfixes_copy_region_checked(xcb_connection_t * c,xcb_xfixes_region_t source,xcb_xfixes_region_t destination)917ba6321feSmrg xcb_xfixes_copy_region_checked (xcb_connection_t    *c,
918ba6321feSmrg                                 xcb_xfixes_region_t  source,
919ba6321feSmrg                                 xcb_xfixes_region_t  destination)
9200d429e5bSmrg {
9210d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
922ba6321feSmrg         .count = 2,
923ba6321feSmrg         .ext = &xcb_xfixes_id,
924ba6321feSmrg         .opcode = XCB_XFIXES_COPY_REGION,
925ba6321feSmrg         .isvoid = 1
9260d429e5bSmrg     };
9270d429e5bSmrg 
9280d429e5bSmrg     struct iovec xcb_parts[4];
9290d429e5bSmrg     xcb_void_cookie_t xcb_ret;
9300d429e5bSmrg     xcb_xfixes_copy_region_request_t xcb_out;
9310d429e5bSmrg 
9320d429e5bSmrg     xcb_out.source = source;
9330d429e5bSmrg     xcb_out.destination = destination;
9340d429e5bSmrg 
9350d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
9360d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
9370d429e5bSmrg     xcb_parts[3].iov_base = 0;
9380d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
939ed2038faSmrg 
9400d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
9410d429e5bSmrg     return xcb_ret;
9420d429e5bSmrg }
9430d429e5bSmrg 
9440d429e5bSmrg xcb_void_cookie_t
xcb_xfixes_copy_region(xcb_connection_t * c,xcb_xfixes_region_t source,xcb_xfixes_region_t destination)945ba6321feSmrg xcb_xfixes_copy_region (xcb_connection_t    *c,
946ba6321feSmrg                         xcb_xfixes_region_t  source,
947ba6321feSmrg                         xcb_xfixes_region_t  destination)
9480d429e5bSmrg {
9490d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
950ba6321feSmrg         .count = 2,
951ba6321feSmrg         .ext = &xcb_xfixes_id,
952ba6321feSmrg         .opcode = XCB_XFIXES_COPY_REGION,
953ba6321feSmrg         .isvoid = 1
9540d429e5bSmrg     };
9550d429e5bSmrg 
9560d429e5bSmrg     struct iovec xcb_parts[4];
9570d429e5bSmrg     xcb_void_cookie_t xcb_ret;
9580d429e5bSmrg     xcb_xfixes_copy_region_request_t xcb_out;
9590d429e5bSmrg 
9600d429e5bSmrg     xcb_out.source = source;
9610d429e5bSmrg     xcb_out.destination = destination;
9620d429e5bSmrg 
9630d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
9640d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
9650d429e5bSmrg     xcb_parts[3].iov_base = 0;
9660d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
967ed2038faSmrg 
9680d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
9690d429e5bSmrg     return xcb_ret;
9700d429e5bSmrg }
9710d429e5bSmrg 
9720d429e5bSmrg xcb_void_cookie_t
xcb_xfixes_union_region_checked(xcb_connection_t * c,xcb_xfixes_region_t source1,xcb_xfixes_region_t source2,xcb_xfixes_region_t destination)973ba6321feSmrg xcb_xfixes_union_region_checked (xcb_connection_t    *c,
974ba6321feSmrg                                  xcb_xfixes_region_t  source1,
975ba6321feSmrg                                  xcb_xfixes_region_t  source2,
976ba6321feSmrg                                  xcb_xfixes_region_t  destination)
9770d429e5bSmrg {
9780d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
979ba6321feSmrg         .count = 2,
980ba6321feSmrg         .ext = &xcb_xfixes_id,
981ba6321feSmrg         .opcode = XCB_XFIXES_UNION_REGION,
982ba6321feSmrg         .isvoid = 1
9830d429e5bSmrg     };
9840d429e5bSmrg 
9850d429e5bSmrg     struct iovec xcb_parts[4];
9860d429e5bSmrg     xcb_void_cookie_t xcb_ret;
9870d429e5bSmrg     xcb_xfixes_union_region_request_t xcb_out;
9880d429e5bSmrg 
9890d429e5bSmrg     xcb_out.source1 = source1;
9900d429e5bSmrg     xcb_out.source2 = source2;
9910d429e5bSmrg     xcb_out.destination = destination;
9920d429e5bSmrg 
9930d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
9940d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
9950d429e5bSmrg     xcb_parts[3].iov_base = 0;
9960d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
997ed2038faSmrg 
9980d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
9990d429e5bSmrg     return xcb_ret;
10000d429e5bSmrg }
10010d429e5bSmrg 
10020d429e5bSmrg xcb_void_cookie_t
xcb_xfixes_union_region(xcb_connection_t * c,xcb_xfixes_region_t source1,xcb_xfixes_region_t source2,xcb_xfixes_region_t destination)1003ba6321feSmrg xcb_xfixes_union_region (xcb_connection_t    *c,
1004ba6321feSmrg                          xcb_xfixes_region_t  source1,
1005ba6321feSmrg                          xcb_xfixes_region_t  source2,
1006ba6321feSmrg                          xcb_xfixes_region_t  destination)
10070d429e5bSmrg {
10080d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
1009ba6321feSmrg         .count = 2,
1010ba6321feSmrg         .ext = &xcb_xfixes_id,
1011ba6321feSmrg         .opcode = XCB_XFIXES_UNION_REGION,
1012ba6321feSmrg         .isvoid = 1
10130d429e5bSmrg     };
10140d429e5bSmrg 
10150d429e5bSmrg     struct iovec xcb_parts[4];
10160d429e5bSmrg     xcb_void_cookie_t xcb_ret;
10170d429e5bSmrg     xcb_xfixes_union_region_request_t xcb_out;
10180d429e5bSmrg 
10190d429e5bSmrg     xcb_out.source1 = source1;
10200d429e5bSmrg     xcb_out.source2 = source2;
10210d429e5bSmrg     xcb_out.destination = destination;
10220d429e5bSmrg 
10230d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
10240d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
10250d429e5bSmrg     xcb_parts[3].iov_base = 0;
10260d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
1027ed2038faSmrg 
10280d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
10290d429e5bSmrg     return xcb_ret;
10300d429e5bSmrg }
10310d429e5bSmrg 
10320d429e5bSmrg xcb_void_cookie_t
xcb_xfixes_intersect_region_checked(xcb_connection_t * c,xcb_xfixes_region_t source1,xcb_xfixes_region_t source2,xcb_xfixes_region_t destination)1033ba6321feSmrg xcb_xfixes_intersect_region_checked (xcb_connection_t    *c,
1034ba6321feSmrg                                      xcb_xfixes_region_t  source1,
1035ba6321feSmrg                                      xcb_xfixes_region_t  source2,
1036ba6321feSmrg                                      xcb_xfixes_region_t  destination)
10370d429e5bSmrg {
10380d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
1039ba6321feSmrg         .count = 2,
1040ba6321feSmrg         .ext = &xcb_xfixes_id,
1041ba6321feSmrg         .opcode = XCB_XFIXES_INTERSECT_REGION,
1042ba6321feSmrg         .isvoid = 1
10430d429e5bSmrg     };
10440d429e5bSmrg 
10450d429e5bSmrg     struct iovec xcb_parts[4];
10460d429e5bSmrg     xcb_void_cookie_t xcb_ret;
10470d429e5bSmrg     xcb_xfixes_intersect_region_request_t xcb_out;
10480d429e5bSmrg 
10490d429e5bSmrg     xcb_out.source1 = source1;
10500d429e5bSmrg     xcb_out.source2 = source2;
10510d429e5bSmrg     xcb_out.destination = destination;
10520d429e5bSmrg 
10530d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
10540d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
10550d429e5bSmrg     xcb_parts[3].iov_base = 0;
10560d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
1057ed2038faSmrg 
10580d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
10590d429e5bSmrg     return xcb_ret;
10600d429e5bSmrg }
10610d429e5bSmrg 
10620d429e5bSmrg xcb_void_cookie_t
xcb_xfixes_intersect_region(xcb_connection_t * c,xcb_xfixes_region_t source1,xcb_xfixes_region_t source2,xcb_xfixes_region_t destination)1063ba6321feSmrg xcb_xfixes_intersect_region (xcb_connection_t    *c,
1064ba6321feSmrg                              xcb_xfixes_region_t  source1,
1065ba6321feSmrg                              xcb_xfixes_region_t  source2,
1066ba6321feSmrg                              xcb_xfixes_region_t  destination)
10670d429e5bSmrg {
10680d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
1069ba6321feSmrg         .count = 2,
1070ba6321feSmrg         .ext = &xcb_xfixes_id,
1071ba6321feSmrg         .opcode = XCB_XFIXES_INTERSECT_REGION,
1072ba6321feSmrg         .isvoid = 1
10730d429e5bSmrg     };
10740d429e5bSmrg 
10750d429e5bSmrg     struct iovec xcb_parts[4];
10760d429e5bSmrg     xcb_void_cookie_t xcb_ret;
10770d429e5bSmrg     xcb_xfixes_intersect_region_request_t xcb_out;
10780d429e5bSmrg 
10790d429e5bSmrg     xcb_out.source1 = source1;
10800d429e5bSmrg     xcb_out.source2 = source2;
10810d429e5bSmrg     xcb_out.destination = destination;
10820d429e5bSmrg 
10830d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
10840d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
10850d429e5bSmrg     xcb_parts[3].iov_base = 0;
10860d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
1087ed2038faSmrg 
10880d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
10890d429e5bSmrg     return xcb_ret;
10900d429e5bSmrg }
10910d429e5bSmrg 
10920d429e5bSmrg xcb_void_cookie_t
xcb_xfixes_subtract_region_checked(xcb_connection_t * c,xcb_xfixes_region_t source1,xcb_xfixes_region_t source2,xcb_xfixes_region_t destination)1093ba6321feSmrg xcb_xfixes_subtract_region_checked (xcb_connection_t    *c,
1094ba6321feSmrg                                     xcb_xfixes_region_t  source1,
1095ba6321feSmrg                                     xcb_xfixes_region_t  source2,
1096ba6321feSmrg                                     xcb_xfixes_region_t  destination)
10970d429e5bSmrg {
10980d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
1099ba6321feSmrg         .count = 2,
1100ba6321feSmrg         .ext = &xcb_xfixes_id,
1101ba6321feSmrg         .opcode = XCB_XFIXES_SUBTRACT_REGION,
1102ba6321feSmrg         .isvoid = 1
11030d429e5bSmrg     };
11040d429e5bSmrg 
11050d429e5bSmrg     struct iovec xcb_parts[4];
11060d429e5bSmrg     xcb_void_cookie_t xcb_ret;
11070d429e5bSmrg     xcb_xfixes_subtract_region_request_t xcb_out;
11080d429e5bSmrg 
11090d429e5bSmrg     xcb_out.source1 = source1;
11100d429e5bSmrg     xcb_out.source2 = source2;
11110d429e5bSmrg     xcb_out.destination = destination;
11120d429e5bSmrg 
11130d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
11140d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
11150d429e5bSmrg     xcb_parts[3].iov_base = 0;
11160d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
1117ed2038faSmrg 
11180d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
11190d429e5bSmrg     return xcb_ret;
11200d429e5bSmrg }
11210d429e5bSmrg 
11220d429e5bSmrg xcb_void_cookie_t
xcb_xfixes_subtract_region(xcb_connection_t * c,xcb_xfixes_region_t source1,xcb_xfixes_region_t source2,xcb_xfixes_region_t destination)1123ba6321feSmrg xcb_xfixes_subtract_region (xcb_connection_t    *c,
1124ba6321feSmrg                             xcb_xfixes_region_t  source1,
1125ba6321feSmrg                             xcb_xfixes_region_t  source2,
1126ba6321feSmrg                             xcb_xfixes_region_t  destination)
11270d429e5bSmrg {
11280d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
1129ba6321feSmrg         .count = 2,
1130ba6321feSmrg         .ext = &xcb_xfixes_id,
1131ba6321feSmrg         .opcode = XCB_XFIXES_SUBTRACT_REGION,
1132ba6321feSmrg         .isvoid = 1
11330d429e5bSmrg     };
11340d429e5bSmrg 
11350d429e5bSmrg     struct iovec xcb_parts[4];
11360d429e5bSmrg     xcb_void_cookie_t xcb_ret;
11370d429e5bSmrg     xcb_xfixes_subtract_region_request_t xcb_out;
11380d429e5bSmrg 
11390d429e5bSmrg     xcb_out.source1 = source1;
11400d429e5bSmrg     xcb_out.source2 = source2;
11410d429e5bSmrg     xcb_out.destination = destination;
11420d429e5bSmrg 
11430d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
11440d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
11450d429e5bSmrg     xcb_parts[3].iov_base = 0;
11460d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
1147ed2038faSmrg 
11480d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
11490d429e5bSmrg     return xcb_ret;
11500d429e5bSmrg }
11510d429e5bSmrg 
11520d429e5bSmrg xcb_void_cookie_t
xcb_xfixes_invert_region_checked(xcb_connection_t * c,xcb_xfixes_region_t source,xcb_rectangle_t bounds,xcb_xfixes_region_t destination)1153ba6321feSmrg xcb_xfixes_invert_region_checked (xcb_connection_t    *c,
1154ba6321feSmrg                                   xcb_xfixes_region_t  source,
1155ba6321feSmrg                                   xcb_rectangle_t      bounds,
1156ba6321feSmrg                                   xcb_xfixes_region_t  destination)
11570d429e5bSmrg {
11580d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
1159ba6321feSmrg         .count = 2,
1160ba6321feSmrg         .ext = &xcb_xfixes_id,
1161ba6321feSmrg         .opcode = XCB_XFIXES_INVERT_REGION,
1162ba6321feSmrg         .isvoid = 1
11630d429e5bSmrg     };
11640d429e5bSmrg 
11650d429e5bSmrg     struct iovec xcb_parts[4];
11660d429e5bSmrg     xcb_void_cookie_t xcb_ret;
11670d429e5bSmrg     xcb_xfixes_invert_region_request_t xcb_out;
11680d429e5bSmrg 
11690d429e5bSmrg     xcb_out.source = source;
11700d429e5bSmrg     xcb_out.bounds = bounds;
11710d429e5bSmrg     xcb_out.destination = destination;
11720d429e5bSmrg 
11730d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
11740d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
11750d429e5bSmrg     xcb_parts[3].iov_base = 0;
11760d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
1177ed2038faSmrg 
11780d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
11790d429e5bSmrg     return xcb_ret;
11800d429e5bSmrg }
11810d429e5bSmrg 
11820d429e5bSmrg xcb_void_cookie_t
xcb_xfixes_invert_region(xcb_connection_t * c,xcb_xfixes_region_t source,xcb_rectangle_t bounds,xcb_xfixes_region_t destination)1183ba6321feSmrg xcb_xfixes_invert_region (xcb_connection_t    *c,
1184ba6321feSmrg                           xcb_xfixes_region_t  source,
1185ba6321feSmrg                           xcb_rectangle_t      bounds,
1186ba6321feSmrg                           xcb_xfixes_region_t  destination)
11870d429e5bSmrg {
11880d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
1189ba6321feSmrg         .count = 2,
1190ba6321feSmrg         .ext = &xcb_xfixes_id,
1191ba6321feSmrg         .opcode = XCB_XFIXES_INVERT_REGION,
1192ba6321feSmrg         .isvoid = 1
11930d429e5bSmrg     };
11940d429e5bSmrg 
11950d429e5bSmrg     struct iovec xcb_parts[4];
11960d429e5bSmrg     xcb_void_cookie_t xcb_ret;
11970d429e5bSmrg     xcb_xfixes_invert_region_request_t xcb_out;
11980d429e5bSmrg 
11990d429e5bSmrg     xcb_out.source = source;
12000d429e5bSmrg     xcb_out.bounds = bounds;
12010d429e5bSmrg     xcb_out.destination = destination;
12020d429e5bSmrg 
12030d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
12040d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
12050d429e5bSmrg     xcb_parts[3].iov_base = 0;
12060d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
1207ed2038faSmrg 
12080d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
12090d429e5bSmrg     return xcb_ret;
12100d429e5bSmrg }
12110d429e5bSmrg 
12120d429e5bSmrg xcb_void_cookie_t
xcb_xfixes_translate_region_checked(xcb_connection_t * c,xcb_xfixes_region_t region,int16_t dx,int16_t dy)1213ba6321feSmrg xcb_xfixes_translate_region_checked (xcb_connection_t    *c,
1214ba6321feSmrg                                      xcb_xfixes_region_t  region,
1215ba6321feSmrg                                      int16_t              dx,
1216ba6321feSmrg                                      int16_t              dy)
12170d429e5bSmrg {
12180d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
1219ba6321feSmrg         .count = 2,
1220ba6321feSmrg         .ext = &xcb_xfixes_id,
1221ba6321feSmrg         .opcode = XCB_XFIXES_TRANSLATE_REGION,
1222ba6321feSmrg         .isvoid = 1
12230d429e5bSmrg     };
12240d429e5bSmrg 
12250d429e5bSmrg     struct iovec xcb_parts[4];
12260d429e5bSmrg     xcb_void_cookie_t xcb_ret;
12270d429e5bSmrg     xcb_xfixes_translate_region_request_t xcb_out;
12280d429e5bSmrg 
12290d429e5bSmrg     xcb_out.region = region;
12300d429e5bSmrg     xcb_out.dx = dx;
12310d429e5bSmrg     xcb_out.dy = dy;
12320d429e5bSmrg 
12330d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
12340d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
12350d429e5bSmrg     xcb_parts[3].iov_base = 0;
12360d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
1237ed2038faSmrg 
12380d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
12390d429e5bSmrg     return xcb_ret;
12400d429e5bSmrg }
12410d429e5bSmrg 
12420d429e5bSmrg xcb_void_cookie_t
xcb_xfixes_translate_region(xcb_connection_t * c,xcb_xfixes_region_t region,int16_t dx,int16_t dy)1243ba6321feSmrg xcb_xfixes_translate_region (xcb_connection_t    *c,
1244ba6321feSmrg                              xcb_xfixes_region_t  region,
1245ba6321feSmrg                              int16_t              dx,
1246ba6321feSmrg                              int16_t              dy)
12470d429e5bSmrg {
12480d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
1249ba6321feSmrg         .count = 2,
1250ba6321feSmrg         .ext = &xcb_xfixes_id,
1251ba6321feSmrg         .opcode = XCB_XFIXES_TRANSLATE_REGION,
1252ba6321feSmrg         .isvoid = 1
12530d429e5bSmrg     };
12540d429e5bSmrg 
12550d429e5bSmrg     struct iovec xcb_parts[4];
12560d429e5bSmrg     xcb_void_cookie_t xcb_ret;
12570d429e5bSmrg     xcb_xfixes_translate_region_request_t xcb_out;
12580d429e5bSmrg 
12590d429e5bSmrg     xcb_out.region = region;
12600d429e5bSmrg     xcb_out.dx = dx;
12610d429e5bSmrg     xcb_out.dy = dy;
12620d429e5bSmrg 
12630d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
12640d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
12650d429e5bSmrg     xcb_parts[3].iov_base = 0;
12660d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
1267ed2038faSmrg 
12680d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
12690d429e5bSmrg     return xcb_ret;
12700d429e5bSmrg }
12710d429e5bSmrg 
12720d429e5bSmrg xcb_void_cookie_t
xcb_xfixes_region_extents_checked(xcb_connection_t * c,xcb_xfixes_region_t source,xcb_xfixes_region_t destination)1273ba6321feSmrg xcb_xfixes_region_extents_checked (xcb_connection_t    *c,
1274ba6321feSmrg                                    xcb_xfixes_region_t  source,
1275ba6321feSmrg                                    xcb_xfixes_region_t  destination)
12760d429e5bSmrg {
12770d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
1278ba6321feSmrg         .count = 2,
1279ba6321feSmrg         .ext = &xcb_xfixes_id,
1280ba6321feSmrg         .opcode = XCB_XFIXES_REGION_EXTENTS,
1281ba6321feSmrg         .isvoid = 1
12820d429e5bSmrg     };
12830d429e5bSmrg 
12840d429e5bSmrg     struct iovec xcb_parts[4];
12850d429e5bSmrg     xcb_void_cookie_t xcb_ret;
12860d429e5bSmrg     xcb_xfixes_region_extents_request_t xcb_out;
12870d429e5bSmrg 
12880d429e5bSmrg     xcb_out.source = source;
12890d429e5bSmrg     xcb_out.destination = destination;
12900d429e5bSmrg 
12910d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
12920d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
12930d429e5bSmrg     xcb_parts[3].iov_base = 0;
12940d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
1295ed2038faSmrg 
12960d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
12970d429e5bSmrg     return xcb_ret;
12980d429e5bSmrg }
12990d429e5bSmrg 
13000d429e5bSmrg xcb_void_cookie_t
xcb_xfixes_region_extents(xcb_connection_t * c,xcb_xfixes_region_t source,xcb_xfixes_region_t destination)1301ba6321feSmrg xcb_xfixes_region_extents (xcb_connection_t    *c,
1302ba6321feSmrg                            xcb_xfixes_region_t  source,
1303ba6321feSmrg                            xcb_xfixes_region_t  destination)
13040d429e5bSmrg {
13050d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
1306ba6321feSmrg         .count = 2,
1307ba6321feSmrg         .ext = &xcb_xfixes_id,
1308ba6321feSmrg         .opcode = XCB_XFIXES_REGION_EXTENTS,
1309ba6321feSmrg         .isvoid = 1
13100d429e5bSmrg     };
13110d429e5bSmrg 
13120d429e5bSmrg     struct iovec xcb_parts[4];
13130d429e5bSmrg     xcb_void_cookie_t xcb_ret;
13140d429e5bSmrg     xcb_xfixes_region_extents_request_t xcb_out;
13150d429e5bSmrg 
13160d429e5bSmrg     xcb_out.source = source;
13170d429e5bSmrg     xcb_out.destination = destination;
13180d429e5bSmrg 
13190d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
13200d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
13210d429e5bSmrg     xcb_parts[3].iov_base = 0;
13220d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
1323ed2038faSmrg 
13240d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
13250d429e5bSmrg     return xcb_ret;
13260d429e5bSmrg }
13270d429e5bSmrg 
1328ed2038faSmrg int
xcb_xfixes_fetch_region_sizeof(const void * _buffer)1329ba6321feSmrg xcb_xfixes_fetch_region_sizeof (const void  *_buffer)
1330ed2038faSmrg {
1331ed2038faSmrg     char *xcb_tmp = (char *)_buffer;
1332ed2038faSmrg     const xcb_xfixes_fetch_region_reply_t *_aux = (xcb_xfixes_fetch_region_reply_t *)_buffer;
1333ed2038faSmrg     unsigned int xcb_buffer_len = 0;
1334ed2038faSmrg     unsigned int xcb_block_len = 0;
1335ed2038faSmrg     unsigned int xcb_pad = 0;
13366f16f8b8Smrg     unsigned int xcb_align_to = 0;
1337ed2038faSmrg 
1338ed2038faSmrg 
1339ed2038faSmrg     xcb_block_len += sizeof(xcb_xfixes_fetch_region_reply_t);
1340ed2038faSmrg     xcb_tmp += xcb_block_len;
13416f16f8b8Smrg     xcb_buffer_len += xcb_block_len;
13426f16f8b8Smrg     xcb_block_len = 0;
1343ed2038faSmrg     /* rectangles */
1344ed2038faSmrg     xcb_block_len += (_aux->length / 2) * sizeof(xcb_rectangle_t);
1345ed2038faSmrg     xcb_tmp += xcb_block_len;
1346ed2038faSmrg     xcb_align_to = ALIGNOF(xcb_rectangle_t);
1347ed2038faSmrg     /* insert padding */
1348ed2038faSmrg     xcb_pad = -xcb_block_len & (xcb_align_to - 1);
1349ed2038faSmrg     xcb_buffer_len += xcb_block_len + xcb_pad;
1350ed2038faSmrg     if (0 != xcb_pad) {
1351ed2038faSmrg         xcb_tmp += xcb_pad;
1352ed2038faSmrg         xcb_pad = 0;
1353ed2038faSmrg     }
1354ed2038faSmrg     xcb_block_len = 0;
1355ed2038faSmrg 
1356ed2038faSmrg     return xcb_buffer_len;
1357ed2038faSmrg }
1358ed2038faSmrg 
13590d429e5bSmrg xcb_xfixes_fetch_region_cookie_t
xcb_xfixes_fetch_region(xcb_connection_t * c,xcb_xfixes_region_t region)1360ba6321feSmrg xcb_xfixes_fetch_region (xcb_connection_t    *c,
1361ba6321feSmrg                          xcb_xfixes_region_t  region)
13620d429e5bSmrg {
13630d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
1364ba6321feSmrg         .count = 2,
1365ba6321feSmrg         .ext = &xcb_xfixes_id,
1366ba6321feSmrg         .opcode = XCB_XFIXES_FETCH_REGION,
1367ba6321feSmrg         .isvoid = 0
13680d429e5bSmrg     };
13690d429e5bSmrg 
13700d429e5bSmrg     struct iovec xcb_parts[4];
13710d429e5bSmrg     xcb_xfixes_fetch_region_cookie_t xcb_ret;
13720d429e5bSmrg     xcb_xfixes_fetch_region_request_t xcb_out;
13730d429e5bSmrg 
13740d429e5bSmrg     xcb_out.region = region;
13750d429e5bSmrg 
13760d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
13770d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
13780d429e5bSmrg     xcb_parts[3].iov_base = 0;
13790d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
1380ed2038faSmrg 
13810d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
13820d429e5bSmrg     return xcb_ret;
13830d429e5bSmrg }
13840d429e5bSmrg 
13850d429e5bSmrg xcb_xfixes_fetch_region_cookie_t
xcb_xfixes_fetch_region_unchecked(xcb_connection_t * c,xcb_xfixes_region_t region)1386ba6321feSmrg xcb_xfixes_fetch_region_unchecked (xcb_connection_t    *c,
1387ba6321feSmrg                                    xcb_xfixes_region_t  region)
13880d429e5bSmrg {
13890d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
1390ba6321feSmrg         .count = 2,
1391ba6321feSmrg         .ext = &xcb_xfixes_id,
1392ba6321feSmrg         .opcode = XCB_XFIXES_FETCH_REGION,
1393ba6321feSmrg         .isvoid = 0
13940d429e5bSmrg     };
13950d429e5bSmrg 
13960d429e5bSmrg     struct iovec xcb_parts[4];
13970d429e5bSmrg     xcb_xfixes_fetch_region_cookie_t xcb_ret;
13980d429e5bSmrg     xcb_xfixes_fetch_region_request_t xcb_out;
13990d429e5bSmrg 
14000d429e5bSmrg     xcb_out.region = region;
14010d429e5bSmrg 
14020d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
14030d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
14040d429e5bSmrg     xcb_parts[3].iov_base = 0;
14050d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
1406ed2038faSmrg 
14070d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
14080d429e5bSmrg     return xcb_ret;
14090d429e5bSmrg }
14100d429e5bSmrg 
14110d429e5bSmrg xcb_rectangle_t *
xcb_xfixes_fetch_region_rectangles(const xcb_xfixes_fetch_region_reply_t * R)1412ba6321feSmrg xcb_xfixes_fetch_region_rectangles (const xcb_xfixes_fetch_region_reply_t *R)
14130d429e5bSmrg {
14140d429e5bSmrg     return (xcb_rectangle_t *) (R + 1);
14150d429e5bSmrg }
14160d429e5bSmrg 
14170d429e5bSmrg int
xcb_xfixes_fetch_region_rectangles_length(const xcb_xfixes_fetch_region_reply_t * R)1418ba6321feSmrg xcb_xfixes_fetch_region_rectangles_length (const xcb_xfixes_fetch_region_reply_t *R)
14190d429e5bSmrg {
14200d429e5bSmrg     return (R->length / 2);
14210d429e5bSmrg }
14220d429e5bSmrg 
14230d429e5bSmrg xcb_rectangle_iterator_t
xcb_xfixes_fetch_region_rectangles_iterator(const xcb_xfixes_fetch_region_reply_t * R)1424ba6321feSmrg xcb_xfixes_fetch_region_rectangles_iterator (const xcb_xfixes_fetch_region_reply_t *R)
14250d429e5bSmrg {
14260d429e5bSmrg     xcb_rectangle_iterator_t i;
14270d429e5bSmrg     i.data = (xcb_rectangle_t *) (R + 1);
14280d429e5bSmrg     i.rem = (R->length / 2);
14290d429e5bSmrg     i.index = (char *) i.data - (char *) R;
14300d429e5bSmrg     return i;
14310d429e5bSmrg }
14320d429e5bSmrg 
14330d429e5bSmrg xcb_xfixes_fetch_region_reply_t *
xcb_xfixes_fetch_region_reply(xcb_connection_t * c,xcb_xfixes_fetch_region_cookie_t cookie,xcb_generic_error_t ** e)1434ba6321feSmrg xcb_xfixes_fetch_region_reply (xcb_connection_t                  *c,
14350d429e5bSmrg                                xcb_xfixes_fetch_region_cookie_t   cookie  /**< */,
1436ba6321feSmrg                                xcb_generic_error_t              **e)
14370d429e5bSmrg {
14380d429e5bSmrg     return (xcb_xfixes_fetch_region_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
14390d429e5bSmrg }
14400d429e5bSmrg 
14410d429e5bSmrg xcb_void_cookie_t
xcb_xfixes_set_gc_clip_region_checked(xcb_connection_t * c,xcb_gcontext_t gc,xcb_xfixes_region_t region,int16_t x_origin,int16_t y_origin)1442ba6321feSmrg xcb_xfixes_set_gc_clip_region_checked (xcb_connection_t    *c,
1443ba6321feSmrg                                        xcb_gcontext_t       gc,
1444ba6321feSmrg                                        xcb_xfixes_region_t  region,
1445ba6321feSmrg                                        int16_t              x_origin,
1446ba6321feSmrg                                        int16_t              y_origin)
14470d429e5bSmrg {
14480d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
1449ba6321feSmrg         .count = 2,
1450ba6321feSmrg         .ext = &xcb_xfixes_id,
1451ba6321feSmrg         .opcode = XCB_XFIXES_SET_GC_CLIP_REGION,
1452ba6321feSmrg         .isvoid = 1
14530d429e5bSmrg     };
14540d429e5bSmrg 
14550d429e5bSmrg     struct iovec xcb_parts[4];
14560d429e5bSmrg     xcb_void_cookie_t xcb_ret;
14570d429e5bSmrg     xcb_xfixes_set_gc_clip_region_request_t xcb_out;
14580d429e5bSmrg 
14590d429e5bSmrg     xcb_out.gc = gc;
14600d429e5bSmrg     xcb_out.region = region;
14610d429e5bSmrg     xcb_out.x_origin = x_origin;
14620d429e5bSmrg     xcb_out.y_origin = y_origin;
14630d429e5bSmrg 
14640d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
14650d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
14660d429e5bSmrg     xcb_parts[3].iov_base = 0;
14670d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
1468ed2038faSmrg 
14690d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
14700d429e5bSmrg     return xcb_ret;
14710d429e5bSmrg }
14720d429e5bSmrg 
14730d429e5bSmrg xcb_void_cookie_t
xcb_xfixes_set_gc_clip_region(xcb_connection_t * c,xcb_gcontext_t gc,xcb_xfixes_region_t region,int16_t x_origin,int16_t y_origin)1474ba6321feSmrg xcb_xfixes_set_gc_clip_region (xcb_connection_t    *c,
1475ba6321feSmrg                                xcb_gcontext_t       gc,
1476ba6321feSmrg                                xcb_xfixes_region_t  region,
1477ba6321feSmrg                                int16_t              x_origin,
1478ba6321feSmrg                                int16_t              y_origin)
14790d429e5bSmrg {
14800d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
1481ba6321feSmrg         .count = 2,
1482ba6321feSmrg         .ext = &xcb_xfixes_id,
1483ba6321feSmrg         .opcode = XCB_XFIXES_SET_GC_CLIP_REGION,
1484ba6321feSmrg         .isvoid = 1
14850d429e5bSmrg     };
14860d429e5bSmrg 
14870d429e5bSmrg     struct iovec xcb_parts[4];
14880d429e5bSmrg     xcb_void_cookie_t xcb_ret;
14890d429e5bSmrg     xcb_xfixes_set_gc_clip_region_request_t xcb_out;
14900d429e5bSmrg 
14910d429e5bSmrg     xcb_out.gc = gc;
14920d429e5bSmrg     xcb_out.region = region;
14930d429e5bSmrg     xcb_out.x_origin = x_origin;
14940d429e5bSmrg     xcb_out.y_origin = y_origin;
14950d429e5bSmrg 
14960d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
14970d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
14980d429e5bSmrg     xcb_parts[3].iov_base = 0;
14990d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
1500ed2038faSmrg 
15010d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
15020d429e5bSmrg     return xcb_ret;
15030d429e5bSmrg }
15040d429e5bSmrg 
15050d429e5bSmrg xcb_void_cookie_t
xcb_xfixes_set_window_shape_region_checked(xcb_connection_t * c,xcb_window_t dest,xcb_shape_kind_t dest_kind,int16_t x_offset,int16_t y_offset,xcb_xfixes_region_t region)1506ba6321feSmrg xcb_xfixes_set_window_shape_region_checked (xcb_connection_t    *c,
1507ba6321feSmrg                                             xcb_window_t         dest,
1508ba6321feSmrg                                             xcb_shape_kind_t     dest_kind,
1509ba6321feSmrg                                             int16_t              x_offset,
1510ba6321feSmrg                                             int16_t              y_offset,
1511ba6321feSmrg                                             xcb_xfixes_region_t  region)
15120d429e5bSmrg {
15130d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
1514ba6321feSmrg         .count = 2,
1515ba6321feSmrg         .ext = &xcb_xfixes_id,
1516ba6321feSmrg         .opcode = XCB_XFIXES_SET_WINDOW_SHAPE_REGION,
1517ba6321feSmrg         .isvoid = 1
15180d429e5bSmrg     };
15190d429e5bSmrg 
15200d429e5bSmrg     struct iovec xcb_parts[4];
15210d429e5bSmrg     xcb_void_cookie_t xcb_ret;
15220d429e5bSmrg     xcb_xfixes_set_window_shape_region_request_t xcb_out;
15230d429e5bSmrg 
15240d429e5bSmrg     xcb_out.dest = dest;
15250d429e5bSmrg     xcb_out.dest_kind = dest_kind;
15260d429e5bSmrg     memset(xcb_out.pad0, 0, 3);
15270d429e5bSmrg     xcb_out.x_offset = x_offset;
15280d429e5bSmrg     xcb_out.y_offset = y_offset;
15290d429e5bSmrg     xcb_out.region = region;
15300d429e5bSmrg 
15310d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
15320d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
15330d429e5bSmrg     xcb_parts[3].iov_base = 0;
15340d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
1535ed2038faSmrg 
15360d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
15370d429e5bSmrg     return xcb_ret;
15380d429e5bSmrg }
15390d429e5bSmrg 
15400d429e5bSmrg xcb_void_cookie_t
xcb_xfixes_set_window_shape_region(xcb_connection_t * c,xcb_window_t dest,xcb_shape_kind_t dest_kind,int16_t x_offset,int16_t y_offset,xcb_xfixes_region_t region)1541ba6321feSmrg xcb_xfixes_set_window_shape_region (xcb_connection_t    *c,
1542ba6321feSmrg                                     xcb_window_t         dest,
1543ba6321feSmrg                                     xcb_shape_kind_t     dest_kind,
1544ba6321feSmrg                                     int16_t              x_offset,
1545ba6321feSmrg                                     int16_t              y_offset,
1546ba6321feSmrg                                     xcb_xfixes_region_t  region)
15470d429e5bSmrg {
15480d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
1549ba6321feSmrg         .count = 2,
1550ba6321feSmrg         .ext = &xcb_xfixes_id,
1551ba6321feSmrg         .opcode = XCB_XFIXES_SET_WINDOW_SHAPE_REGION,
1552ba6321feSmrg         .isvoid = 1
15530d429e5bSmrg     };
15540d429e5bSmrg 
15550d429e5bSmrg     struct iovec xcb_parts[4];
15560d429e5bSmrg     xcb_void_cookie_t xcb_ret;
15570d429e5bSmrg     xcb_xfixes_set_window_shape_region_request_t xcb_out;
15580d429e5bSmrg 
15590d429e5bSmrg     xcb_out.dest = dest;
15600d429e5bSmrg     xcb_out.dest_kind = dest_kind;
15610d429e5bSmrg     memset(xcb_out.pad0, 0, 3);
15620d429e5bSmrg     xcb_out.x_offset = x_offset;
15630d429e5bSmrg     xcb_out.y_offset = y_offset;
15640d429e5bSmrg     xcb_out.region = region;
15650d429e5bSmrg 
15660d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
15670d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
15680d429e5bSmrg     xcb_parts[3].iov_base = 0;
15690d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
1570ed2038faSmrg 
15710d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
15720d429e5bSmrg     return xcb_ret;
15730d429e5bSmrg }
15740d429e5bSmrg 
15750d429e5bSmrg xcb_void_cookie_t
xcb_xfixes_set_picture_clip_region_checked(xcb_connection_t * c,xcb_render_picture_t picture,xcb_xfixes_region_t region,int16_t x_origin,int16_t y_origin)1576ba6321feSmrg xcb_xfixes_set_picture_clip_region_checked (xcb_connection_t     *c,
1577ba6321feSmrg                                             xcb_render_picture_t  picture,
1578ba6321feSmrg                                             xcb_xfixes_region_t   region,
1579ba6321feSmrg                                             int16_t               x_origin,
1580ba6321feSmrg                                             int16_t               y_origin)
15810d429e5bSmrg {
15820d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
1583ba6321feSmrg         .count = 2,
1584ba6321feSmrg         .ext = &xcb_xfixes_id,
1585ba6321feSmrg         .opcode = XCB_XFIXES_SET_PICTURE_CLIP_REGION,
1586ba6321feSmrg         .isvoid = 1
15870d429e5bSmrg     };
15880d429e5bSmrg 
15890d429e5bSmrg     struct iovec xcb_parts[4];
15900d429e5bSmrg     xcb_void_cookie_t xcb_ret;
15910d429e5bSmrg     xcb_xfixes_set_picture_clip_region_request_t xcb_out;
15920d429e5bSmrg 
15930d429e5bSmrg     xcb_out.picture = picture;
15940d429e5bSmrg     xcb_out.region = region;
15950d429e5bSmrg     xcb_out.x_origin = x_origin;
15960d429e5bSmrg     xcb_out.y_origin = y_origin;
15970d429e5bSmrg 
15980d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
15990d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
16000d429e5bSmrg     xcb_parts[3].iov_base = 0;
16010d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
1602ed2038faSmrg 
16030d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
16040d429e5bSmrg     return xcb_ret;
16050d429e5bSmrg }
16060d429e5bSmrg 
16070d429e5bSmrg xcb_void_cookie_t
xcb_xfixes_set_picture_clip_region(xcb_connection_t * c,xcb_render_picture_t picture,xcb_xfixes_region_t region,int16_t x_origin,int16_t y_origin)1608ba6321feSmrg xcb_xfixes_set_picture_clip_region (xcb_connection_t     *c,
1609ba6321feSmrg                                     xcb_render_picture_t  picture,
1610ba6321feSmrg                                     xcb_xfixes_region_t   region,
1611ba6321feSmrg                                     int16_t               x_origin,
1612ba6321feSmrg                                     int16_t               y_origin)
16130d429e5bSmrg {
16140d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
1615ba6321feSmrg         .count = 2,
1616ba6321feSmrg         .ext = &xcb_xfixes_id,
1617ba6321feSmrg         .opcode = XCB_XFIXES_SET_PICTURE_CLIP_REGION,
1618ba6321feSmrg         .isvoid = 1
16190d429e5bSmrg     };
16200d429e5bSmrg 
16210d429e5bSmrg     struct iovec xcb_parts[4];
16220d429e5bSmrg     xcb_void_cookie_t xcb_ret;
16230d429e5bSmrg     xcb_xfixes_set_picture_clip_region_request_t xcb_out;
16240d429e5bSmrg 
16250d429e5bSmrg     xcb_out.picture = picture;
16260d429e5bSmrg     xcb_out.region = region;
16270d429e5bSmrg     xcb_out.x_origin = x_origin;
16280d429e5bSmrg     xcb_out.y_origin = y_origin;
16290d429e5bSmrg 
16300d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
16310d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
16320d429e5bSmrg     xcb_parts[3].iov_base = 0;
16330d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
1634ed2038faSmrg 
16350d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
16360d429e5bSmrg     return xcb_ret;
16370d429e5bSmrg }
16380d429e5bSmrg 
1639ed2038faSmrg int
xcb_xfixes_set_cursor_name_sizeof(const void * _buffer)1640ba6321feSmrg xcb_xfixes_set_cursor_name_sizeof (const void  *_buffer)
1641ed2038faSmrg {
1642ed2038faSmrg     char *xcb_tmp = (char *)_buffer;
1643ed2038faSmrg     const xcb_xfixes_set_cursor_name_request_t *_aux = (xcb_xfixes_set_cursor_name_request_t *)_buffer;
1644ed2038faSmrg     unsigned int xcb_buffer_len = 0;
1645ed2038faSmrg     unsigned int xcb_block_len = 0;
1646ed2038faSmrg     unsigned int xcb_pad = 0;
16476f16f8b8Smrg     unsigned int xcb_align_to = 0;
1648ed2038faSmrg 
1649ed2038faSmrg 
1650ed2038faSmrg     xcb_block_len += sizeof(xcb_xfixes_set_cursor_name_request_t);
1651ed2038faSmrg     xcb_tmp += xcb_block_len;
16526f16f8b8Smrg     xcb_buffer_len += xcb_block_len;
16536f16f8b8Smrg     xcb_block_len = 0;
1654ed2038faSmrg     /* name */
1655ed2038faSmrg     xcb_block_len += _aux->nbytes * sizeof(char);
1656ed2038faSmrg     xcb_tmp += xcb_block_len;
1657ed2038faSmrg     xcb_align_to = ALIGNOF(char);
1658ed2038faSmrg     /* insert padding */
1659ed2038faSmrg     xcb_pad = -xcb_block_len & (xcb_align_to - 1);
1660ed2038faSmrg     xcb_buffer_len += xcb_block_len + xcb_pad;
1661ed2038faSmrg     if (0 != xcb_pad) {
1662ed2038faSmrg         xcb_tmp += xcb_pad;
1663ed2038faSmrg         xcb_pad = 0;
1664ed2038faSmrg     }
1665ed2038faSmrg     xcb_block_len = 0;
1666ed2038faSmrg 
1667ed2038faSmrg     return xcb_buffer_len;
1668ed2038faSmrg }
1669ed2038faSmrg 
16700d429e5bSmrg xcb_void_cookie_t
xcb_xfixes_set_cursor_name_checked(xcb_connection_t * c,xcb_cursor_t cursor,uint16_t nbytes,const char * name)1671ba6321feSmrg xcb_xfixes_set_cursor_name_checked (xcb_connection_t *c,
1672ba6321feSmrg                                     xcb_cursor_t      cursor,
1673ba6321feSmrg                                     uint16_t          nbytes,
1674ba6321feSmrg                                     const char       *name)
16750d429e5bSmrg {
16760d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
1677ba6321feSmrg         .count = 4,
1678ba6321feSmrg         .ext = &xcb_xfixes_id,
1679ba6321feSmrg         .opcode = XCB_XFIXES_SET_CURSOR_NAME,
1680ba6321feSmrg         .isvoid = 1
16810d429e5bSmrg     };
16820d429e5bSmrg 
16830d429e5bSmrg     struct iovec xcb_parts[6];
16840d429e5bSmrg     xcb_void_cookie_t xcb_ret;
16850d429e5bSmrg     xcb_xfixes_set_cursor_name_request_t xcb_out;
16860d429e5bSmrg 
16870d429e5bSmrg     xcb_out.cursor = cursor;
16880d429e5bSmrg     xcb_out.nbytes = nbytes;
16890d429e5bSmrg     memset(xcb_out.pad0, 0, 2);
16900d429e5bSmrg 
16910d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
16920d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
16930d429e5bSmrg     xcb_parts[3].iov_base = 0;
16940d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
1695ed2038faSmrg     /* char name */
16960d429e5bSmrg     xcb_parts[4].iov_base = (char *) name;
16970d429e5bSmrg     xcb_parts[4].iov_len = nbytes * sizeof(char);
16980d429e5bSmrg     xcb_parts[5].iov_base = 0;
16990d429e5bSmrg     xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
1700ed2038faSmrg 
17010d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
17020d429e5bSmrg     return xcb_ret;
17030d429e5bSmrg }
17040d429e5bSmrg 
17050d429e5bSmrg xcb_void_cookie_t
xcb_xfixes_set_cursor_name(xcb_connection_t * c,xcb_cursor_t cursor,uint16_t nbytes,const char * name)1706ba6321feSmrg xcb_xfixes_set_cursor_name (xcb_connection_t *c,
1707ba6321feSmrg                             xcb_cursor_t      cursor,
1708ba6321feSmrg                             uint16_t          nbytes,
1709ba6321feSmrg                             const char       *name)
17100d429e5bSmrg {
17110d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
1712ba6321feSmrg         .count = 4,
1713ba6321feSmrg         .ext = &xcb_xfixes_id,
1714ba6321feSmrg         .opcode = XCB_XFIXES_SET_CURSOR_NAME,
1715ba6321feSmrg         .isvoid = 1
17160d429e5bSmrg     };
17170d429e5bSmrg 
17180d429e5bSmrg     struct iovec xcb_parts[6];
17190d429e5bSmrg     xcb_void_cookie_t xcb_ret;
17200d429e5bSmrg     xcb_xfixes_set_cursor_name_request_t xcb_out;
17210d429e5bSmrg 
17220d429e5bSmrg     xcb_out.cursor = cursor;
17230d429e5bSmrg     xcb_out.nbytes = nbytes;
17240d429e5bSmrg     memset(xcb_out.pad0, 0, 2);
17250d429e5bSmrg 
17260d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
17270d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
17280d429e5bSmrg     xcb_parts[3].iov_base = 0;
17290d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
1730ed2038faSmrg     /* char name */
17310d429e5bSmrg     xcb_parts[4].iov_base = (char *) name;
17320d429e5bSmrg     xcb_parts[4].iov_len = nbytes * sizeof(char);
17330d429e5bSmrg     xcb_parts[5].iov_base = 0;
17340d429e5bSmrg     xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
1735ed2038faSmrg 
17360d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
17370d429e5bSmrg     return xcb_ret;
17380d429e5bSmrg }
17390d429e5bSmrg 
1740ba6321feSmrg char *
xcb_xfixes_set_cursor_name_name(const xcb_xfixes_set_cursor_name_request_t * R)1741ba6321feSmrg xcb_xfixes_set_cursor_name_name (const xcb_xfixes_set_cursor_name_request_t *R)
1742ba6321feSmrg {
1743ba6321feSmrg     return (char *) (R + 1);
1744ba6321feSmrg }
1745ba6321feSmrg 
1746ed2038faSmrg int
xcb_xfixes_set_cursor_name_name_length(const xcb_xfixes_set_cursor_name_request_t * R)1747ba6321feSmrg xcb_xfixes_set_cursor_name_name_length (const xcb_xfixes_set_cursor_name_request_t *R)
1748ba6321feSmrg {
1749ba6321feSmrg     return R->nbytes;
1750ba6321feSmrg }
1751ba6321feSmrg 
1752ba6321feSmrg xcb_generic_iterator_t
xcb_xfixes_set_cursor_name_name_end(const xcb_xfixes_set_cursor_name_request_t * R)1753ba6321feSmrg xcb_xfixes_set_cursor_name_name_end (const xcb_xfixes_set_cursor_name_request_t *R)
1754ba6321feSmrg {
1755ba6321feSmrg     xcb_generic_iterator_t i;
1756ba6321feSmrg     i.data = ((char *) (R + 1)) + (R->nbytes);
1757ba6321feSmrg     i.rem = 0;
1758ba6321feSmrg     i.index = (char *) i.data - (char *) R;
1759ba6321feSmrg     return i;
1760ba6321feSmrg }
1761ba6321feSmrg 
1762ba6321feSmrg int
xcb_xfixes_get_cursor_name_sizeof(const void * _buffer)1763ba6321feSmrg xcb_xfixes_get_cursor_name_sizeof (const void  *_buffer)
1764ed2038faSmrg {
1765ed2038faSmrg     char *xcb_tmp = (char *)_buffer;
1766ed2038faSmrg     const xcb_xfixes_get_cursor_name_reply_t *_aux = (xcb_xfixes_get_cursor_name_reply_t *)_buffer;
1767ed2038faSmrg     unsigned int xcb_buffer_len = 0;
1768ed2038faSmrg     unsigned int xcb_block_len = 0;
1769ed2038faSmrg     unsigned int xcb_pad = 0;
17706f16f8b8Smrg     unsigned int xcb_align_to = 0;
1771ed2038faSmrg 
1772ed2038faSmrg 
1773ed2038faSmrg     xcb_block_len += sizeof(xcb_xfixes_get_cursor_name_reply_t);
1774ed2038faSmrg     xcb_tmp += xcb_block_len;
17756f16f8b8Smrg     xcb_buffer_len += xcb_block_len;
17766f16f8b8Smrg     xcb_block_len = 0;
1777ed2038faSmrg     /* name */
1778ed2038faSmrg     xcb_block_len += _aux->nbytes * sizeof(char);
1779ed2038faSmrg     xcb_tmp += xcb_block_len;
1780ed2038faSmrg     xcb_align_to = ALIGNOF(char);
1781ed2038faSmrg     /* insert padding */
1782ed2038faSmrg     xcb_pad = -xcb_block_len & (xcb_align_to - 1);
1783ed2038faSmrg     xcb_buffer_len += xcb_block_len + xcb_pad;
1784ed2038faSmrg     if (0 != xcb_pad) {
1785ed2038faSmrg         xcb_tmp += xcb_pad;
1786ed2038faSmrg         xcb_pad = 0;
1787ed2038faSmrg     }
1788ed2038faSmrg     xcb_block_len = 0;
1789ed2038faSmrg 
1790ed2038faSmrg     return xcb_buffer_len;
1791ed2038faSmrg }
1792ed2038faSmrg 
17930d429e5bSmrg xcb_xfixes_get_cursor_name_cookie_t
xcb_xfixes_get_cursor_name(xcb_connection_t * c,xcb_cursor_t cursor)1794ba6321feSmrg xcb_xfixes_get_cursor_name (xcb_connection_t *c,
1795ba6321feSmrg                             xcb_cursor_t      cursor)
17960d429e5bSmrg {
17970d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
1798ba6321feSmrg         .count = 2,
1799ba6321feSmrg         .ext = &xcb_xfixes_id,
1800ba6321feSmrg         .opcode = XCB_XFIXES_GET_CURSOR_NAME,
1801ba6321feSmrg         .isvoid = 0
18020d429e5bSmrg     };
18030d429e5bSmrg 
18040d429e5bSmrg     struct iovec xcb_parts[4];
18050d429e5bSmrg     xcb_xfixes_get_cursor_name_cookie_t xcb_ret;
18060d429e5bSmrg     xcb_xfixes_get_cursor_name_request_t xcb_out;
18070d429e5bSmrg 
18080d429e5bSmrg     xcb_out.cursor = cursor;
18090d429e5bSmrg 
18100d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
18110d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
18120d429e5bSmrg     xcb_parts[3].iov_base = 0;
18130d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
1814ed2038faSmrg 
18150d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
18160d429e5bSmrg     return xcb_ret;
18170d429e5bSmrg }
18180d429e5bSmrg 
18190d429e5bSmrg xcb_xfixes_get_cursor_name_cookie_t
xcb_xfixes_get_cursor_name_unchecked(xcb_connection_t * c,xcb_cursor_t cursor)1820ba6321feSmrg xcb_xfixes_get_cursor_name_unchecked (xcb_connection_t *c,
1821ba6321feSmrg                                       xcb_cursor_t      cursor)
18220d429e5bSmrg {
18230d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
1824ba6321feSmrg         .count = 2,
1825ba6321feSmrg         .ext = &xcb_xfixes_id,
1826ba6321feSmrg         .opcode = XCB_XFIXES_GET_CURSOR_NAME,
1827ba6321feSmrg         .isvoid = 0
18280d429e5bSmrg     };
18290d429e5bSmrg 
18300d429e5bSmrg     struct iovec xcb_parts[4];
18310d429e5bSmrg     xcb_xfixes_get_cursor_name_cookie_t xcb_ret;
18320d429e5bSmrg     xcb_xfixes_get_cursor_name_request_t xcb_out;
18330d429e5bSmrg 
18340d429e5bSmrg     xcb_out.cursor = cursor;
18350d429e5bSmrg 
18360d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
18370d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
18380d429e5bSmrg     xcb_parts[3].iov_base = 0;
18390d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
1840ed2038faSmrg 
18410d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
18420d429e5bSmrg     return xcb_ret;
18430d429e5bSmrg }
18440d429e5bSmrg 
18450d429e5bSmrg char *
xcb_xfixes_get_cursor_name_name(const xcb_xfixes_get_cursor_name_reply_t * R)1846ba6321feSmrg xcb_xfixes_get_cursor_name_name (const xcb_xfixes_get_cursor_name_reply_t *R)
18470d429e5bSmrg {
18480d429e5bSmrg     return (char *) (R + 1);
18490d429e5bSmrg }
18500d429e5bSmrg 
18510d429e5bSmrg int
xcb_xfixes_get_cursor_name_name_length(const xcb_xfixes_get_cursor_name_reply_t * R)1852ba6321feSmrg xcb_xfixes_get_cursor_name_name_length (const xcb_xfixes_get_cursor_name_reply_t *R)
18530d429e5bSmrg {
18540d429e5bSmrg     return R->nbytes;
18550d429e5bSmrg }
18560d429e5bSmrg 
18570d429e5bSmrg xcb_generic_iterator_t
xcb_xfixes_get_cursor_name_name_end(const xcb_xfixes_get_cursor_name_reply_t * R)1858ba6321feSmrg xcb_xfixes_get_cursor_name_name_end (const xcb_xfixes_get_cursor_name_reply_t *R)
18590d429e5bSmrg {
18600d429e5bSmrg     xcb_generic_iterator_t i;
18610d429e5bSmrg     i.data = ((char *) (R + 1)) + (R->nbytes);
18620d429e5bSmrg     i.rem = 0;
18630d429e5bSmrg     i.index = (char *) i.data - (char *) R;
18640d429e5bSmrg     return i;
18650d429e5bSmrg }
18660d429e5bSmrg 
18670d429e5bSmrg xcb_xfixes_get_cursor_name_reply_t *
xcb_xfixes_get_cursor_name_reply(xcb_connection_t * c,xcb_xfixes_get_cursor_name_cookie_t cookie,xcb_generic_error_t ** e)1868ba6321feSmrg xcb_xfixes_get_cursor_name_reply (xcb_connection_t                     *c,
18690d429e5bSmrg                                   xcb_xfixes_get_cursor_name_cookie_t   cookie  /**< */,
1870ba6321feSmrg                                   xcb_generic_error_t                 **e)
18710d429e5bSmrg {
18720d429e5bSmrg     return (xcb_xfixes_get_cursor_name_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
18730d429e5bSmrg }
18740d429e5bSmrg 
1875ed2038faSmrg int
xcb_xfixes_get_cursor_image_and_name_sizeof(const void * _buffer)1876ba6321feSmrg xcb_xfixes_get_cursor_image_and_name_sizeof (const void  *_buffer)
1877ed2038faSmrg {
1878ed2038faSmrg     char *xcb_tmp = (char *)_buffer;
1879ed2038faSmrg     const xcb_xfixes_get_cursor_image_and_name_reply_t *_aux = (xcb_xfixes_get_cursor_image_and_name_reply_t *)_buffer;
1880ed2038faSmrg     unsigned int xcb_buffer_len = 0;
1881ed2038faSmrg     unsigned int xcb_block_len = 0;
1882ed2038faSmrg     unsigned int xcb_pad = 0;
18836f16f8b8Smrg     unsigned int xcb_align_to = 0;
1884ed2038faSmrg 
1885ed2038faSmrg 
1886ed2038faSmrg     xcb_block_len += sizeof(xcb_xfixes_get_cursor_image_and_name_reply_t);
1887ed2038faSmrg     xcb_tmp += xcb_block_len;
18886f16f8b8Smrg     xcb_buffer_len += xcb_block_len;
18896f16f8b8Smrg     xcb_block_len = 0;
1890ba6321feSmrg     /* cursor_image */
1891ba6321feSmrg     xcb_block_len += (_aux->width * _aux->height) * sizeof(uint32_t);
1892ed2038faSmrg     xcb_tmp += xcb_block_len;
1893ba6321feSmrg     xcb_align_to = ALIGNOF(uint32_t);
1894ed2038faSmrg     /* insert padding */
1895ed2038faSmrg     xcb_pad = -xcb_block_len & (xcb_align_to - 1);
1896ed2038faSmrg     xcb_buffer_len += xcb_block_len + xcb_pad;
1897ed2038faSmrg     if (0 != xcb_pad) {
1898ed2038faSmrg         xcb_tmp += xcb_pad;
1899ed2038faSmrg         xcb_pad = 0;
1900ed2038faSmrg     }
1901ed2038faSmrg     xcb_block_len = 0;
1902ba6321feSmrg     /* name */
1903ba6321feSmrg     xcb_block_len += _aux->nbytes * sizeof(char);
1904ed2038faSmrg     xcb_tmp += xcb_block_len;
1905ba6321feSmrg     xcb_align_to = ALIGNOF(char);
1906ed2038faSmrg     /* insert padding */
1907ed2038faSmrg     xcb_pad = -xcb_block_len & (xcb_align_to - 1);
1908ed2038faSmrg     xcb_buffer_len += xcb_block_len + xcb_pad;
1909ed2038faSmrg     if (0 != xcb_pad) {
1910ed2038faSmrg         xcb_tmp += xcb_pad;
1911ed2038faSmrg         xcb_pad = 0;
1912ed2038faSmrg     }
1913ed2038faSmrg     xcb_block_len = 0;
1914ed2038faSmrg 
1915ed2038faSmrg     return xcb_buffer_len;
1916ed2038faSmrg }
1917ed2038faSmrg 
19180d429e5bSmrg xcb_xfixes_get_cursor_image_and_name_cookie_t
xcb_xfixes_get_cursor_image_and_name(xcb_connection_t * c)1919ba6321feSmrg xcb_xfixes_get_cursor_image_and_name (xcb_connection_t *c)
19200d429e5bSmrg {
19210d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
1922ba6321feSmrg         .count = 2,
1923ba6321feSmrg         .ext = &xcb_xfixes_id,
1924ba6321feSmrg         .opcode = XCB_XFIXES_GET_CURSOR_IMAGE_AND_NAME,
1925ba6321feSmrg         .isvoid = 0
19260d429e5bSmrg     };
19270d429e5bSmrg 
19280d429e5bSmrg     struct iovec xcb_parts[4];
19290d429e5bSmrg     xcb_xfixes_get_cursor_image_and_name_cookie_t xcb_ret;
19300d429e5bSmrg     xcb_xfixes_get_cursor_image_and_name_request_t xcb_out;
19310d429e5bSmrg 
19320d429e5bSmrg 
19330d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
19340d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
19350d429e5bSmrg     xcb_parts[3].iov_base = 0;
19360d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
1937ed2038faSmrg 
19380d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
19390d429e5bSmrg     return xcb_ret;
19400d429e5bSmrg }
19410d429e5bSmrg 
19420d429e5bSmrg xcb_xfixes_get_cursor_image_and_name_cookie_t
xcb_xfixes_get_cursor_image_and_name_unchecked(xcb_connection_t * c)1943ba6321feSmrg xcb_xfixes_get_cursor_image_and_name_unchecked (xcb_connection_t *c)
19440d429e5bSmrg {
19450d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
1946ba6321feSmrg         .count = 2,
1947ba6321feSmrg         .ext = &xcb_xfixes_id,
1948ba6321feSmrg         .opcode = XCB_XFIXES_GET_CURSOR_IMAGE_AND_NAME,
1949ba6321feSmrg         .isvoid = 0
19500d429e5bSmrg     };
19510d429e5bSmrg 
19520d429e5bSmrg     struct iovec xcb_parts[4];
19530d429e5bSmrg     xcb_xfixes_get_cursor_image_and_name_cookie_t xcb_ret;
19540d429e5bSmrg     xcb_xfixes_get_cursor_image_and_name_request_t xcb_out;
19550d429e5bSmrg 
19560d429e5bSmrg 
19570d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
19580d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
19590d429e5bSmrg     xcb_parts[3].iov_base = 0;
19600d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
1961ed2038faSmrg 
19620d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
19630d429e5bSmrg     return xcb_ret;
19640d429e5bSmrg }
19650d429e5bSmrg 
19660d429e5bSmrg uint32_t *
xcb_xfixes_get_cursor_image_and_name_cursor_image(const xcb_xfixes_get_cursor_image_and_name_reply_t * R)1967ba6321feSmrg xcb_xfixes_get_cursor_image_and_name_cursor_image (const xcb_xfixes_get_cursor_image_and_name_reply_t *R)
19680d429e5bSmrg {
1969ba6321feSmrg     return (uint32_t *) (R + 1);
19700d429e5bSmrg }
19710d429e5bSmrg 
19720d429e5bSmrg int
xcb_xfixes_get_cursor_image_and_name_cursor_image_length(const xcb_xfixes_get_cursor_image_and_name_reply_t * R)1973ba6321feSmrg xcb_xfixes_get_cursor_image_and_name_cursor_image_length (const xcb_xfixes_get_cursor_image_and_name_reply_t *R)
19740d429e5bSmrg {
19750d429e5bSmrg     return (R->width * R->height);
19760d429e5bSmrg }
19770d429e5bSmrg 
19780d429e5bSmrg xcb_generic_iterator_t
xcb_xfixes_get_cursor_image_and_name_cursor_image_end(const xcb_xfixes_get_cursor_image_and_name_reply_t * R)1979ba6321feSmrg xcb_xfixes_get_cursor_image_and_name_cursor_image_end (const xcb_xfixes_get_cursor_image_and_name_reply_t *R)
19800d429e5bSmrg {
19810d429e5bSmrg     xcb_generic_iterator_t i;
1982ba6321feSmrg     i.data = ((uint32_t *) (R + 1)) + ((R->width * R->height));
1983ba6321feSmrg     i.rem = 0;
1984ba6321feSmrg     i.index = (char *) i.data - (char *) R;
1985ba6321feSmrg     return i;
1986ba6321feSmrg }
1987ba6321feSmrg 
1988ba6321feSmrg char *
xcb_xfixes_get_cursor_image_and_name_name(const xcb_xfixes_get_cursor_image_and_name_reply_t * R)1989ba6321feSmrg xcb_xfixes_get_cursor_image_and_name_name (const xcb_xfixes_get_cursor_image_and_name_reply_t *R)
1990ba6321feSmrg {
1991ba6321feSmrg     xcb_generic_iterator_t prev = xcb_xfixes_get_cursor_image_and_name_cursor_image_end(R);
1992ba6321feSmrg     return (char *) ((char *) prev.data + XCB_TYPE_PAD(char, prev.index) + 0);
1993ba6321feSmrg }
1994ba6321feSmrg 
1995ba6321feSmrg int
xcb_xfixes_get_cursor_image_and_name_name_length(const xcb_xfixes_get_cursor_image_and_name_reply_t * R)1996ba6321feSmrg xcb_xfixes_get_cursor_image_and_name_name_length (const xcb_xfixes_get_cursor_image_and_name_reply_t *R)
1997ba6321feSmrg {
1998ba6321feSmrg     return R->nbytes;
1999ba6321feSmrg }
2000ba6321feSmrg 
2001ba6321feSmrg xcb_generic_iterator_t
xcb_xfixes_get_cursor_image_and_name_name_end(const xcb_xfixes_get_cursor_image_and_name_reply_t * R)2002ba6321feSmrg xcb_xfixes_get_cursor_image_and_name_name_end (const xcb_xfixes_get_cursor_image_and_name_reply_t *R)
2003ba6321feSmrg {
2004ba6321feSmrg     xcb_generic_iterator_t i;
2005ba6321feSmrg     xcb_generic_iterator_t prev = xcb_xfixes_get_cursor_image_and_name_cursor_image_end(R);
2006ba6321feSmrg     i.data = ((char *) ((char*) prev.data + XCB_TYPE_PAD(char, prev.index))) + (R->nbytes);
20070d429e5bSmrg     i.rem = 0;
20080d429e5bSmrg     i.index = (char *) i.data - (char *) R;
20090d429e5bSmrg     return i;
20100d429e5bSmrg }
20110d429e5bSmrg 
20120d429e5bSmrg xcb_xfixes_get_cursor_image_and_name_reply_t *
xcb_xfixes_get_cursor_image_and_name_reply(xcb_connection_t * c,xcb_xfixes_get_cursor_image_and_name_cookie_t cookie,xcb_generic_error_t ** e)2013ba6321feSmrg xcb_xfixes_get_cursor_image_and_name_reply (xcb_connection_t                               *c,
20140d429e5bSmrg                                             xcb_xfixes_get_cursor_image_and_name_cookie_t   cookie  /**< */,
2015ba6321feSmrg                                             xcb_generic_error_t                           **e)
20160d429e5bSmrg {
20170d429e5bSmrg     return (xcb_xfixes_get_cursor_image_and_name_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
20180d429e5bSmrg }
20190d429e5bSmrg 
20200d429e5bSmrg xcb_void_cookie_t
xcb_xfixes_change_cursor_checked(xcb_connection_t * c,xcb_cursor_t source,xcb_cursor_t destination)2021ba6321feSmrg xcb_xfixes_change_cursor_checked (xcb_connection_t *c,
2022ba6321feSmrg                                   xcb_cursor_t      source,
2023ba6321feSmrg                                   xcb_cursor_t      destination)
20240d429e5bSmrg {
20250d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
2026ba6321feSmrg         .count = 2,
2027ba6321feSmrg         .ext = &xcb_xfixes_id,
2028ba6321feSmrg         .opcode = XCB_XFIXES_CHANGE_CURSOR,
2029ba6321feSmrg         .isvoid = 1
20300d429e5bSmrg     };
20310d429e5bSmrg 
20320d429e5bSmrg     struct iovec xcb_parts[4];
20330d429e5bSmrg     xcb_void_cookie_t xcb_ret;
20340d429e5bSmrg     xcb_xfixes_change_cursor_request_t xcb_out;
20350d429e5bSmrg 
20360d429e5bSmrg     xcb_out.source = source;
20370d429e5bSmrg     xcb_out.destination = destination;
20380d429e5bSmrg 
20390d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
20400d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
20410d429e5bSmrg     xcb_parts[3].iov_base = 0;
20420d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
2043ed2038faSmrg 
20440d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
20450d429e5bSmrg     return xcb_ret;
20460d429e5bSmrg }
20470d429e5bSmrg 
20480d429e5bSmrg xcb_void_cookie_t
xcb_xfixes_change_cursor(xcb_connection_t * c,xcb_cursor_t source,xcb_cursor_t destination)2049ba6321feSmrg xcb_xfixes_change_cursor (xcb_connection_t *c,
2050ba6321feSmrg                           xcb_cursor_t      source,
2051ba6321feSmrg                           xcb_cursor_t      destination)
20520d429e5bSmrg {
20530d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
2054ba6321feSmrg         .count = 2,
2055ba6321feSmrg         .ext = &xcb_xfixes_id,
2056ba6321feSmrg         .opcode = XCB_XFIXES_CHANGE_CURSOR,
2057ba6321feSmrg         .isvoid = 1
20580d429e5bSmrg     };
20590d429e5bSmrg 
20600d429e5bSmrg     struct iovec xcb_parts[4];
20610d429e5bSmrg     xcb_void_cookie_t xcb_ret;
20620d429e5bSmrg     xcb_xfixes_change_cursor_request_t xcb_out;
20630d429e5bSmrg 
20640d429e5bSmrg     xcb_out.source = source;
20650d429e5bSmrg     xcb_out.destination = destination;
20660d429e5bSmrg 
20670d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
20680d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
20690d429e5bSmrg     xcb_parts[3].iov_base = 0;
20700d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
2071ed2038faSmrg 
20720d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
20730d429e5bSmrg     return xcb_ret;
20740d429e5bSmrg }
20750d429e5bSmrg 
2076ed2038faSmrg int
xcb_xfixes_change_cursor_by_name_sizeof(const void * _buffer)2077ba6321feSmrg xcb_xfixes_change_cursor_by_name_sizeof (const void  *_buffer)
2078ed2038faSmrg {
2079ed2038faSmrg     char *xcb_tmp = (char *)_buffer;
2080ed2038faSmrg     const xcb_xfixes_change_cursor_by_name_request_t *_aux = (xcb_xfixes_change_cursor_by_name_request_t *)_buffer;
2081ed2038faSmrg     unsigned int xcb_buffer_len = 0;
2082ed2038faSmrg     unsigned int xcb_block_len = 0;
2083ed2038faSmrg     unsigned int xcb_pad = 0;
20846f16f8b8Smrg     unsigned int xcb_align_to = 0;
2085ed2038faSmrg 
2086ed2038faSmrg 
2087ed2038faSmrg     xcb_block_len += sizeof(xcb_xfixes_change_cursor_by_name_request_t);
2088ed2038faSmrg     xcb_tmp += xcb_block_len;
20896f16f8b8Smrg     xcb_buffer_len += xcb_block_len;
20906f16f8b8Smrg     xcb_block_len = 0;
2091ed2038faSmrg     /* name */
2092ed2038faSmrg     xcb_block_len += _aux->nbytes * sizeof(char);
2093ed2038faSmrg     xcb_tmp += xcb_block_len;
2094ed2038faSmrg     xcb_align_to = ALIGNOF(char);
2095ed2038faSmrg     /* insert padding */
2096ed2038faSmrg     xcb_pad = -xcb_block_len & (xcb_align_to - 1);
2097ed2038faSmrg     xcb_buffer_len += xcb_block_len + xcb_pad;
2098ed2038faSmrg     if (0 != xcb_pad) {
2099ed2038faSmrg         xcb_tmp += xcb_pad;
2100ed2038faSmrg         xcb_pad = 0;
2101ed2038faSmrg     }
2102ed2038faSmrg     xcb_block_len = 0;
2103ed2038faSmrg 
2104ed2038faSmrg     return xcb_buffer_len;
2105ed2038faSmrg }
2106ed2038faSmrg 
21070d429e5bSmrg xcb_void_cookie_t
xcb_xfixes_change_cursor_by_name_checked(xcb_connection_t * c,xcb_cursor_t src,uint16_t nbytes,const char * name)2108ba6321feSmrg xcb_xfixes_change_cursor_by_name_checked (xcb_connection_t *c,
2109ba6321feSmrg                                           xcb_cursor_t      src,
2110ba6321feSmrg                                           uint16_t          nbytes,
2111ba6321feSmrg                                           const char       *name)
21120d429e5bSmrg {
21130d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
2114ba6321feSmrg         .count = 4,
2115ba6321feSmrg         .ext = &xcb_xfixes_id,
2116ba6321feSmrg         .opcode = XCB_XFIXES_CHANGE_CURSOR_BY_NAME,
2117ba6321feSmrg         .isvoid = 1
21180d429e5bSmrg     };
21190d429e5bSmrg 
21200d429e5bSmrg     struct iovec xcb_parts[6];
21210d429e5bSmrg     xcb_void_cookie_t xcb_ret;
21220d429e5bSmrg     xcb_xfixes_change_cursor_by_name_request_t xcb_out;
21230d429e5bSmrg 
21240d429e5bSmrg     xcb_out.src = src;
21250d429e5bSmrg     xcb_out.nbytes = nbytes;
21260d429e5bSmrg     memset(xcb_out.pad0, 0, 2);
21270d429e5bSmrg 
21280d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
21290d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
21300d429e5bSmrg     xcb_parts[3].iov_base = 0;
21310d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
2132ed2038faSmrg     /* char name */
21330d429e5bSmrg     xcb_parts[4].iov_base = (char *) name;
21340d429e5bSmrg     xcb_parts[4].iov_len = nbytes * sizeof(char);
21350d429e5bSmrg     xcb_parts[5].iov_base = 0;
21360d429e5bSmrg     xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
2137ed2038faSmrg 
21380d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
21390d429e5bSmrg     return xcb_ret;
21400d429e5bSmrg }
21410d429e5bSmrg 
21420d429e5bSmrg xcb_void_cookie_t
xcb_xfixes_change_cursor_by_name(xcb_connection_t * c,xcb_cursor_t src,uint16_t nbytes,const char * name)2143ba6321feSmrg xcb_xfixes_change_cursor_by_name (xcb_connection_t *c,
2144ba6321feSmrg                                   xcb_cursor_t      src,
2145ba6321feSmrg                                   uint16_t          nbytes,
2146ba6321feSmrg                                   const char       *name)
21470d429e5bSmrg {
21480d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
2149ba6321feSmrg         .count = 4,
2150ba6321feSmrg         .ext = &xcb_xfixes_id,
2151ba6321feSmrg         .opcode = XCB_XFIXES_CHANGE_CURSOR_BY_NAME,
2152ba6321feSmrg         .isvoid = 1
21530d429e5bSmrg     };
21540d429e5bSmrg 
21550d429e5bSmrg     struct iovec xcb_parts[6];
21560d429e5bSmrg     xcb_void_cookie_t xcb_ret;
21570d429e5bSmrg     xcb_xfixes_change_cursor_by_name_request_t xcb_out;
21580d429e5bSmrg 
21590d429e5bSmrg     xcb_out.src = src;
21600d429e5bSmrg     xcb_out.nbytes = nbytes;
21610d429e5bSmrg     memset(xcb_out.pad0, 0, 2);
21620d429e5bSmrg 
21630d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
21640d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
21650d429e5bSmrg     xcb_parts[3].iov_base = 0;
21660d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
2167ed2038faSmrg     /* char name */
21680d429e5bSmrg     xcb_parts[4].iov_base = (char *) name;
21690d429e5bSmrg     xcb_parts[4].iov_len = nbytes * sizeof(char);
21700d429e5bSmrg     xcb_parts[5].iov_base = 0;
21710d429e5bSmrg     xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
2172ed2038faSmrg 
21730d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
21740d429e5bSmrg     return xcb_ret;
21750d429e5bSmrg }
21760d429e5bSmrg 
2177ba6321feSmrg char *
xcb_xfixes_change_cursor_by_name_name(const xcb_xfixes_change_cursor_by_name_request_t * R)2178ba6321feSmrg xcb_xfixes_change_cursor_by_name_name (const xcb_xfixes_change_cursor_by_name_request_t *R)
2179ba6321feSmrg {
2180ba6321feSmrg     return (char *) (R + 1);
2181ba6321feSmrg }
2182ba6321feSmrg 
2183ba6321feSmrg int
xcb_xfixes_change_cursor_by_name_name_length(const xcb_xfixes_change_cursor_by_name_request_t * R)2184ba6321feSmrg xcb_xfixes_change_cursor_by_name_name_length (const xcb_xfixes_change_cursor_by_name_request_t *R)
2185ba6321feSmrg {
2186ba6321feSmrg     return R->nbytes;
2187ba6321feSmrg }
2188ba6321feSmrg 
2189ba6321feSmrg xcb_generic_iterator_t
xcb_xfixes_change_cursor_by_name_name_end(const xcb_xfixes_change_cursor_by_name_request_t * R)2190ba6321feSmrg xcb_xfixes_change_cursor_by_name_name_end (const xcb_xfixes_change_cursor_by_name_request_t *R)
2191ba6321feSmrg {
2192ba6321feSmrg     xcb_generic_iterator_t i;
2193ba6321feSmrg     i.data = ((char *) (R + 1)) + (R->nbytes);
2194ba6321feSmrg     i.rem = 0;
2195ba6321feSmrg     i.index = (char *) i.data - (char *) R;
2196ba6321feSmrg     return i;
2197ba6321feSmrg }
2198ba6321feSmrg 
21990d429e5bSmrg xcb_void_cookie_t
xcb_xfixes_expand_region_checked(xcb_connection_t * c,xcb_xfixes_region_t source,xcb_xfixes_region_t destination,uint16_t left,uint16_t right,uint16_t top,uint16_t bottom)2200ba6321feSmrg xcb_xfixes_expand_region_checked (xcb_connection_t    *c,
2201ba6321feSmrg                                   xcb_xfixes_region_t  source,
2202ba6321feSmrg                                   xcb_xfixes_region_t  destination,
2203ba6321feSmrg                                   uint16_t             left,
2204ba6321feSmrg                                   uint16_t             right,
2205ba6321feSmrg                                   uint16_t             top,
2206ba6321feSmrg                                   uint16_t             bottom)
22070d429e5bSmrg {
22080d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
2209ba6321feSmrg         .count = 2,
2210ba6321feSmrg         .ext = &xcb_xfixes_id,
2211ba6321feSmrg         .opcode = XCB_XFIXES_EXPAND_REGION,
2212ba6321feSmrg         .isvoid = 1
22130d429e5bSmrg     };
22140d429e5bSmrg 
22150d429e5bSmrg     struct iovec xcb_parts[4];
22160d429e5bSmrg     xcb_void_cookie_t xcb_ret;
22170d429e5bSmrg     xcb_xfixes_expand_region_request_t xcb_out;
22180d429e5bSmrg 
22190d429e5bSmrg     xcb_out.source = source;
22200d429e5bSmrg     xcb_out.destination = destination;
22210d429e5bSmrg     xcb_out.left = left;
22220d429e5bSmrg     xcb_out.right = right;
22230d429e5bSmrg     xcb_out.top = top;
22240d429e5bSmrg     xcb_out.bottom = bottom;
22250d429e5bSmrg 
22260d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
22270d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
22280d429e5bSmrg     xcb_parts[3].iov_base = 0;
22290d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
2230ed2038faSmrg 
22310d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
22320d429e5bSmrg     return xcb_ret;
22330d429e5bSmrg }
22340d429e5bSmrg 
22350d429e5bSmrg xcb_void_cookie_t
xcb_xfixes_expand_region(xcb_connection_t * c,xcb_xfixes_region_t source,xcb_xfixes_region_t destination,uint16_t left,uint16_t right,uint16_t top,uint16_t bottom)2236ba6321feSmrg xcb_xfixes_expand_region (xcb_connection_t    *c,
2237ba6321feSmrg                           xcb_xfixes_region_t  source,
2238ba6321feSmrg                           xcb_xfixes_region_t  destination,
2239ba6321feSmrg                           uint16_t             left,
2240ba6321feSmrg                           uint16_t             right,
2241ba6321feSmrg                           uint16_t             top,
2242ba6321feSmrg                           uint16_t             bottom)
22430d429e5bSmrg {
22440d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
2245ba6321feSmrg         .count = 2,
2246ba6321feSmrg         .ext = &xcb_xfixes_id,
2247ba6321feSmrg         .opcode = XCB_XFIXES_EXPAND_REGION,
2248ba6321feSmrg         .isvoid = 1
22490d429e5bSmrg     };
22500d429e5bSmrg 
22510d429e5bSmrg     struct iovec xcb_parts[4];
22520d429e5bSmrg     xcb_void_cookie_t xcb_ret;
22530d429e5bSmrg     xcb_xfixes_expand_region_request_t xcb_out;
22540d429e5bSmrg 
22550d429e5bSmrg     xcb_out.source = source;
22560d429e5bSmrg     xcb_out.destination = destination;
22570d429e5bSmrg     xcb_out.left = left;
22580d429e5bSmrg     xcb_out.right = right;
22590d429e5bSmrg     xcb_out.top = top;
22600d429e5bSmrg     xcb_out.bottom = bottom;
22610d429e5bSmrg 
22620d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
22630d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
22640d429e5bSmrg     xcb_parts[3].iov_base = 0;
22650d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
2266ed2038faSmrg 
22670d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
22680d429e5bSmrg     return xcb_ret;
22690d429e5bSmrg }
22700d429e5bSmrg 
22710d429e5bSmrg xcb_void_cookie_t
xcb_xfixes_hide_cursor_checked(xcb_connection_t * c,xcb_window_t window)2272ba6321feSmrg xcb_xfixes_hide_cursor_checked (xcb_connection_t *c,
2273ba6321feSmrg                                 xcb_window_t      window)
22740d429e5bSmrg {
22750d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
2276ba6321feSmrg         .count = 2,
2277ba6321feSmrg         .ext = &xcb_xfixes_id,
2278ba6321feSmrg         .opcode = XCB_XFIXES_HIDE_CURSOR,
2279ba6321feSmrg         .isvoid = 1
22800d429e5bSmrg     };
22810d429e5bSmrg 
22820d429e5bSmrg     struct iovec xcb_parts[4];
22830d429e5bSmrg     xcb_void_cookie_t xcb_ret;
22840d429e5bSmrg     xcb_xfixes_hide_cursor_request_t xcb_out;
22850d429e5bSmrg 
22860d429e5bSmrg     xcb_out.window = window;
22870d429e5bSmrg 
22880d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
22890d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
22900d429e5bSmrg     xcb_parts[3].iov_base = 0;
22910d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
2292ed2038faSmrg 
22930d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
22940d429e5bSmrg     return xcb_ret;
22950d429e5bSmrg }
22960d429e5bSmrg 
22970d429e5bSmrg xcb_void_cookie_t
xcb_xfixes_hide_cursor(xcb_connection_t * c,xcb_window_t window)2298ba6321feSmrg xcb_xfixes_hide_cursor (xcb_connection_t *c,
2299ba6321feSmrg                         xcb_window_t      window)
23000d429e5bSmrg {
23010d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
2302ba6321feSmrg         .count = 2,
2303ba6321feSmrg         .ext = &xcb_xfixes_id,
2304ba6321feSmrg         .opcode = XCB_XFIXES_HIDE_CURSOR,
2305ba6321feSmrg         .isvoid = 1
23060d429e5bSmrg     };
23070d429e5bSmrg 
23080d429e5bSmrg     struct iovec xcb_parts[4];
23090d429e5bSmrg     xcb_void_cookie_t xcb_ret;
23100d429e5bSmrg     xcb_xfixes_hide_cursor_request_t xcb_out;
23110d429e5bSmrg 
23120d429e5bSmrg     xcb_out.window = window;
23130d429e5bSmrg 
23140d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
23150d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
23160d429e5bSmrg     xcb_parts[3].iov_base = 0;
23170d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
2318ed2038faSmrg 
23190d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
23200d429e5bSmrg     return xcb_ret;
23210d429e5bSmrg }
23220d429e5bSmrg 
23230d429e5bSmrg xcb_void_cookie_t
xcb_xfixes_show_cursor_checked(xcb_connection_t * c,xcb_window_t window)2324ba6321feSmrg xcb_xfixes_show_cursor_checked (xcb_connection_t *c,
2325ba6321feSmrg                                 xcb_window_t      window)
23260d429e5bSmrg {
23270d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
2328ba6321feSmrg         .count = 2,
2329ba6321feSmrg         .ext = &xcb_xfixes_id,
2330ba6321feSmrg         .opcode = XCB_XFIXES_SHOW_CURSOR,
2331ba6321feSmrg         .isvoid = 1
23320d429e5bSmrg     };
23330d429e5bSmrg 
23340d429e5bSmrg     struct iovec xcb_parts[4];
23350d429e5bSmrg     xcb_void_cookie_t xcb_ret;
23360d429e5bSmrg     xcb_xfixes_show_cursor_request_t xcb_out;
23370d429e5bSmrg 
23380d429e5bSmrg     xcb_out.window = window;
23390d429e5bSmrg 
23400d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
23410d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
23420d429e5bSmrg     xcb_parts[3].iov_base = 0;
23430d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
2344ed2038faSmrg 
23450d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
23460d429e5bSmrg     return xcb_ret;
23470d429e5bSmrg }
23480d429e5bSmrg 
23490d429e5bSmrg xcb_void_cookie_t
xcb_xfixes_show_cursor(xcb_connection_t * c,xcb_window_t window)2350ba6321feSmrg xcb_xfixes_show_cursor (xcb_connection_t *c,
2351ba6321feSmrg                         xcb_window_t      window)
23520d429e5bSmrg {
23530d429e5bSmrg     static const xcb_protocol_request_t xcb_req = {
2354ba6321feSmrg         .count = 2,
2355ba6321feSmrg         .ext = &xcb_xfixes_id,
2356ba6321feSmrg         .opcode = XCB_XFIXES_SHOW_CURSOR,
2357ba6321feSmrg         .isvoid = 1
23580d429e5bSmrg     };
23590d429e5bSmrg 
23600d429e5bSmrg     struct iovec xcb_parts[4];
23610d429e5bSmrg     xcb_void_cookie_t xcb_ret;
23620d429e5bSmrg     xcb_xfixes_show_cursor_request_t xcb_out;
23630d429e5bSmrg 
23640d429e5bSmrg     xcb_out.window = window;
23650d429e5bSmrg 
23660d429e5bSmrg     xcb_parts[2].iov_base = (char *) &xcb_out;
23670d429e5bSmrg     xcb_parts[2].iov_len = sizeof(xcb_out);
23680d429e5bSmrg     xcb_parts[3].iov_base = 0;
23690d429e5bSmrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
2370ed2038faSmrg 
23710d429e5bSmrg     xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
23720d429e5bSmrg     return xcb_ret;
23730d429e5bSmrg }
23740d429e5bSmrg 
23756f16f8b8Smrg void
xcb_xfixes_barrier_next(xcb_xfixes_barrier_iterator_t * i)2376ba6321feSmrg xcb_xfixes_barrier_next (xcb_xfixes_barrier_iterator_t *i)
23776f16f8b8Smrg {
23786f16f8b8Smrg     --i->rem;
23796f16f8b8Smrg     ++i->data;
23806f16f8b8Smrg     i->index += sizeof(xcb_xfixes_barrier_t);
23816f16f8b8Smrg }
23826f16f8b8Smrg 
23836f16f8b8Smrg xcb_generic_iterator_t
xcb_xfixes_barrier_end(xcb_xfixes_barrier_iterator_t i)2384ba6321feSmrg xcb_xfixes_barrier_end (xcb_xfixes_barrier_iterator_t i)
23856f16f8b8Smrg {
23866f16f8b8Smrg     xcb_generic_iterator_t ret;
23876f16f8b8Smrg     ret.data = i.data + i.rem;
23886f16f8b8Smrg     ret.index = i.index + ((char *) ret.data - (char *) i.data);
23896f16f8b8Smrg     ret.rem = 0;
23906f16f8b8Smrg     return ret;
23916f16f8b8Smrg }
23926f16f8b8Smrg 
23936f16f8b8Smrg int
xcb_xfixes_create_pointer_barrier_sizeof(const void * _buffer)2394ba6321feSmrg xcb_xfixes_create_pointer_barrier_sizeof (const void  *_buffer)
23956f16f8b8Smrg {
23966f16f8b8Smrg     char *xcb_tmp = (char *)_buffer;
23976f16f8b8Smrg     const xcb_xfixes_create_pointer_barrier_request_t *_aux = (xcb_xfixes_create_pointer_barrier_request_t *)_buffer;
23986f16f8b8Smrg     unsigned int xcb_buffer_len = 0;
23996f16f8b8Smrg     unsigned int xcb_block_len = 0;
24006f16f8b8Smrg     unsigned int xcb_pad = 0;
24016f16f8b8Smrg     unsigned int xcb_align_to = 0;
24026f16f8b8Smrg 
24036f16f8b8Smrg 
24046f16f8b8Smrg     xcb_block_len += sizeof(xcb_xfixes_create_pointer_barrier_request_t);
24056f16f8b8Smrg     xcb_tmp += xcb_block_len;
24066f16f8b8Smrg     xcb_buffer_len += xcb_block_len;
24076f16f8b8Smrg     xcb_block_len = 0;
24086f16f8b8Smrg     /* devices */
24096f16f8b8Smrg     xcb_block_len += _aux->num_devices * sizeof(uint16_t);
24106f16f8b8Smrg     xcb_tmp += xcb_block_len;
24116f16f8b8Smrg     xcb_align_to = ALIGNOF(uint16_t);
24126f16f8b8Smrg     /* insert padding */
24136f16f8b8Smrg     xcb_pad = -xcb_block_len & (xcb_align_to - 1);
24146f16f8b8Smrg     xcb_buffer_len += xcb_block_len + xcb_pad;
24156f16f8b8Smrg     if (0 != xcb_pad) {
24166f16f8b8Smrg         xcb_tmp += xcb_pad;
24176f16f8b8Smrg         xcb_pad = 0;
24186f16f8b8Smrg     }
24196f16f8b8Smrg     xcb_block_len = 0;
24206f16f8b8Smrg 
24216f16f8b8Smrg     return xcb_buffer_len;
24226f16f8b8Smrg }
24236f16f8b8Smrg 
24246f16f8b8Smrg xcb_void_cookie_t
xcb_xfixes_create_pointer_barrier_checked(xcb_connection_t * c,xcb_xfixes_barrier_t barrier,xcb_window_t window,uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2,uint32_t directions,uint16_t num_devices,const uint16_t * devices)2425ba6321feSmrg xcb_xfixes_create_pointer_barrier_checked (xcb_connection_t     *c,
2426ba6321feSmrg                                            xcb_xfixes_barrier_t  barrier,
2427ba6321feSmrg                                            xcb_window_t          window,
2428ba6321feSmrg                                            uint16_t              x1,
2429ba6321feSmrg                                            uint16_t              y1,
2430ba6321feSmrg                                            uint16_t              x2,
2431ba6321feSmrg                                            uint16_t              y2,
2432ba6321feSmrg                                            uint32_t              directions,
2433ba6321feSmrg                                            uint16_t              num_devices,
2434ba6321feSmrg                                            const uint16_t       *devices)
24356f16f8b8Smrg {
24366f16f8b8Smrg     static const xcb_protocol_request_t xcb_req = {
2437ba6321feSmrg         .count = 4,
2438ba6321feSmrg         .ext = &xcb_xfixes_id,
2439ba6321feSmrg         .opcode = XCB_XFIXES_CREATE_POINTER_BARRIER,
2440ba6321feSmrg         .isvoid = 1
24416f16f8b8Smrg     };
24426f16f8b8Smrg 
24436f16f8b8Smrg     struct iovec xcb_parts[6];
24446f16f8b8Smrg     xcb_void_cookie_t xcb_ret;
24456f16f8b8Smrg     xcb_xfixes_create_pointer_barrier_request_t xcb_out;
24466f16f8b8Smrg 
24476f16f8b8Smrg     xcb_out.barrier = barrier;
24486f16f8b8Smrg     xcb_out.window = window;
24496f16f8b8Smrg     xcb_out.x1 = x1;
24506f16f8b8Smrg     xcb_out.y1 = y1;
24516f16f8b8Smrg     xcb_out.x2 = x2;
24526f16f8b8Smrg     xcb_out.y2 = y2;
24536f16f8b8Smrg     xcb_out.directions = directions;
24546f16f8b8Smrg     memset(xcb_out.pad0, 0, 2);
24556f16f8b8Smrg     xcb_out.num_devices = num_devices;
24566f16f8b8Smrg 
24576f16f8b8Smrg     xcb_parts[2].iov_base = (char *) &xcb_out;
24586f16f8b8Smrg     xcb_parts[2].iov_len = sizeof(xcb_out);
24596f16f8b8Smrg     xcb_parts[3].iov_base = 0;
24606f16f8b8Smrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
24616f16f8b8Smrg     /* uint16_t devices */
24626f16f8b8Smrg     xcb_parts[4].iov_base = (char *) devices;
24636f16f8b8Smrg     xcb_parts[4].iov_len = num_devices * sizeof(uint16_t);
24646f16f8b8Smrg     xcb_parts[5].iov_base = 0;
24656f16f8b8Smrg     xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
24666f16f8b8Smrg 
24676f16f8b8Smrg     xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
24686f16f8b8Smrg     return xcb_ret;
24696f16f8b8Smrg }
24706f16f8b8Smrg 
24716f16f8b8Smrg xcb_void_cookie_t
xcb_xfixes_create_pointer_barrier(xcb_connection_t * c,xcb_xfixes_barrier_t barrier,xcb_window_t window,uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2,uint32_t directions,uint16_t num_devices,const uint16_t * devices)2472ba6321feSmrg xcb_xfixes_create_pointer_barrier (xcb_connection_t     *c,
2473ba6321feSmrg                                    xcb_xfixes_barrier_t  barrier,
2474ba6321feSmrg                                    xcb_window_t          window,
2475ba6321feSmrg                                    uint16_t              x1,
2476ba6321feSmrg                                    uint16_t              y1,
2477ba6321feSmrg                                    uint16_t              x2,
2478ba6321feSmrg                                    uint16_t              y2,
2479ba6321feSmrg                                    uint32_t              directions,
2480ba6321feSmrg                                    uint16_t              num_devices,
2481ba6321feSmrg                                    const uint16_t       *devices)
24826f16f8b8Smrg {
24836f16f8b8Smrg     static const xcb_protocol_request_t xcb_req = {
2484ba6321feSmrg         .count = 4,
2485ba6321feSmrg         .ext = &xcb_xfixes_id,
2486ba6321feSmrg         .opcode = XCB_XFIXES_CREATE_POINTER_BARRIER,
2487ba6321feSmrg         .isvoid = 1
24886f16f8b8Smrg     };
24896f16f8b8Smrg 
24906f16f8b8Smrg     struct iovec xcb_parts[6];
24916f16f8b8Smrg     xcb_void_cookie_t xcb_ret;
24926f16f8b8Smrg     xcb_xfixes_create_pointer_barrier_request_t xcb_out;
24936f16f8b8Smrg 
24946f16f8b8Smrg     xcb_out.barrier = barrier;
24956f16f8b8Smrg     xcb_out.window = window;
24966f16f8b8Smrg     xcb_out.x1 = x1;
24976f16f8b8Smrg     xcb_out.y1 = y1;
24986f16f8b8Smrg     xcb_out.x2 = x2;
24996f16f8b8Smrg     xcb_out.y2 = y2;
25006f16f8b8Smrg     xcb_out.directions = directions;
25016f16f8b8Smrg     memset(xcb_out.pad0, 0, 2);
25026f16f8b8Smrg     xcb_out.num_devices = num_devices;
25036f16f8b8Smrg 
25046f16f8b8Smrg     xcb_parts[2].iov_base = (char *) &xcb_out;
25056f16f8b8Smrg     xcb_parts[2].iov_len = sizeof(xcb_out);
25066f16f8b8Smrg     xcb_parts[3].iov_base = 0;
25076f16f8b8Smrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
25086f16f8b8Smrg     /* uint16_t devices */
25096f16f8b8Smrg     xcb_parts[4].iov_base = (char *) devices;
25106f16f8b8Smrg     xcb_parts[4].iov_len = num_devices * sizeof(uint16_t);
25116f16f8b8Smrg     xcb_parts[5].iov_base = 0;
25126f16f8b8Smrg     xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
25136f16f8b8Smrg 
25146f16f8b8Smrg     xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
25156f16f8b8Smrg     return xcb_ret;
25166f16f8b8Smrg }
25176f16f8b8Smrg 
2518ba6321feSmrg uint16_t *
xcb_xfixes_create_pointer_barrier_devices(const xcb_xfixes_create_pointer_barrier_request_t * R)2519ba6321feSmrg xcb_xfixes_create_pointer_barrier_devices (const xcb_xfixes_create_pointer_barrier_request_t *R)
2520ba6321feSmrg {
2521ba6321feSmrg     return (uint16_t *) (R + 1);
2522ba6321feSmrg }
2523ba6321feSmrg 
2524ba6321feSmrg int
xcb_xfixes_create_pointer_barrier_devices_length(const xcb_xfixes_create_pointer_barrier_request_t * R)2525ba6321feSmrg xcb_xfixes_create_pointer_barrier_devices_length (const xcb_xfixes_create_pointer_barrier_request_t *R)
2526ba6321feSmrg {
2527ba6321feSmrg     return R->num_devices;
2528ba6321feSmrg }
2529ba6321feSmrg 
2530ba6321feSmrg xcb_generic_iterator_t
xcb_xfixes_create_pointer_barrier_devices_end(const xcb_xfixes_create_pointer_barrier_request_t * R)2531ba6321feSmrg xcb_xfixes_create_pointer_barrier_devices_end (const xcb_xfixes_create_pointer_barrier_request_t *R)
2532ba6321feSmrg {
2533ba6321feSmrg     xcb_generic_iterator_t i;
2534ba6321feSmrg     i.data = ((uint16_t *) (R + 1)) + (R->num_devices);
2535ba6321feSmrg     i.rem = 0;
2536ba6321feSmrg     i.index = (char *) i.data - (char *) R;
2537ba6321feSmrg     return i;
2538ba6321feSmrg }
2539ba6321feSmrg 
25406f16f8b8Smrg xcb_void_cookie_t
xcb_xfixes_delete_pointer_barrier_checked(xcb_connection_t * c,xcb_xfixes_barrier_t barrier)2541ba6321feSmrg xcb_xfixes_delete_pointer_barrier_checked (xcb_connection_t     *c,
2542ba6321feSmrg                                            xcb_xfixes_barrier_t  barrier)
25436f16f8b8Smrg {
25446f16f8b8Smrg     static const xcb_protocol_request_t xcb_req = {
2545ba6321feSmrg         .count = 2,
2546ba6321feSmrg         .ext = &xcb_xfixes_id,
2547ba6321feSmrg         .opcode = XCB_XFIXES_DELETE_POINTER_BARRIER,
2548ba6321feSmrg         .isvoid = 1
25496f16f8b8Smrg     };
25506f16f8b8Smrg 
25516f16f8b8Smrg     struct iovec xcb_parts[4];
25526f16f8b8Smrg     xcb_void_cookie_t xcb_ret;
25536f16f8b8Smrg     xcb_xfixes_delete_pointer_barrier_request_t xcb_out;
25546f16f8b8Smrg 
25556f16f8b8Smrg     xcb_out.barrier = barrier;
25566f16f8b8Smrg 
25576f16f8b8Smrg     xcb_parts[2].iov_base = (char *) &xcb_out;
25586f16f8b8Smrg     xcb_parts[2].iov_len = sizeof(xcb_out);
25596f16f8b8Smrg     xcb_parts[3].iov_base = 0;
25606f16f8b8Smrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
25616f16f8b8Smrg 
25626f16f8b8Smrg     xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
25636f16f8b8Smrg     return xcb_ret;
25646f16f8b8Smrg }
25656f16f8b8Smrg 
25666f16f8b8Smrg xcb_void_cookie_t
xcb_xfixes_delete_pointer_barrier(xcb_connection_t * c,xcb_xfixes_barrier_t barrier)2567ba6321feSmrg xcb_xfixes_delete_pointer_barrier (xcb_connection_t     *c,
2568ba6321feSmrg                                    xcb_xfixes_barrier_t  barrier)
25696f16f8b8Smrg {
25706f16f8b8Smrg     static const xcb_protocol_request_t xcb_req = {
2571ba6321feSmrg         .count = 2,
2572ba6321feSmrg         .ext = &xcb_xfixes_id,
2573ba6321feSmrg         .opcode = XCB_XFIXES_DELETE_POINTER_BARRIER,
2574ba6321feSmrg         .isvoid = 1
25756f16f8b8Smrg     };
25766f16f8b8Smrg 
25776f16f8b8Smrg     struct iovec xcb_parts[4];
25786f16f8b8Smrg     xcb_void_cookie_t xcb_ret;
25796f16f8b8Smrg     xcb_xfixes_delete_pointer_barrier_request_t xcb_out;
25806f16f8b8Smrg 
25816f16f8b8Smrg     xcb_out.barrier = barrier;
25826f16f8b8Smrg 
25836f16f8b8Smrg     xcb_parts[2].iov_base = (char *) &xcb_out;
25846f16f8b8Smrg     xcb_parts[2].iov_len = sizeof(xcb_out);
25856f16f8b8Smrg     xcb_parts[3].iov_base = 0;
25866f16f8b8Smrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
25876f16f8b8Smrg 
25886f16f8b8Smrg     xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
25896f16f8b8Smrg     return xcb_ret;
25906f16f8b8Smrg }
25916f16f8b8Smrg 
2592*b48426e3Smrg xcb_void_cookie_t
xcb_xfixes_set_client_disconnect_mode_checked(xcb_connection_t * c,uint32_t disconnect_mode)2593*b48426e3Smrg xcb_xfixes_set_client_disconnect_mode_checked (xcb_connection_t *c,
2594*b48426e3Smrg                                                uint32_t          disconnect_mode)
2595*b48426e3Smrg {
2596*b48426e3Smrg     static const xcb_protocol_request_t xcb_req = {
2597*b48426e3Smrg         .count = 2,
2598*b48426e3Smrg         .ext = &xcb_xfixes_id,
2599*b48426e3Smrg         .opcode = XCB_XFIXES_SET_CLIENT_DISCONNECT_MODE,
2600*b48426e3Smrg         .isvoid = 1
2601*b48426e3Smrg     };
2602*b48426e3Smrg 
2603*b48426e3Smrg     struct iovec xcb_parts[4];
2604*b48426e3Smrg     xcb_void_cookie_t xcb_ret;
2605*b48426e3Smrg     xcb_xfixes_set_client_disconnect_mode_request_t xcb_out;
2606*b48426e3Smrg 
2607*b48426e3Smrg     xcb_out.disconnect_mode = disconnect_mode;
2608*b48426e3Smrg 
2609*b48426e3Smrg     xcb_parts[2].iov_base = (char *) &xcb_out;
2610*b48426e3Smrg     xcb_parts[2].iov_len = sizeof(xcb_out);
2611*b48426e3Smrg     xcb_parts[3].iov_base = 0;
2612*b48426e3Smrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
2613*b48426e3Smrg 
2614*b48426e3Smrg     xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
2615*b48426e3Smrg     return xcb_ret;
2616*b48426e3Smrg }
2617*b48426e3Smrg 
2618*b48426e3Smrg xcb_void_cookie_t
xcb_xfixes_set_client_disconnect_mode(xcb_connection_t * c,uint32_t disconnect_mode)2619*b48426e3Smrg xcb_xfixes_set_client_disconnect_mode (xcb_connection_t *c,
2620*b48426e3Smrg                                        uint32_t          disconnect_mode)
2621*b48426e3Smrg {
2622*b48426e3Smrg     static const xcb_protocol_request_t xcb_req = {
2623*b48426e3Smrg         .count = 2,
2624*b48426e3Smrg         .ext = &xcb_xfixes_id,
2625*b48426e3Smrg         .opcode = XCB_XFIXES_SET_CLIENT_DISCONNECT_MODE,
2626*b48426e3Smrg         .isvoid = 1
2627*b48426e3Smrg     };
2628*b48426e3Smrg 
2629*b48426e3Smrg     struct iovec xcb_parts[4];
2630*b48426e3Smrg     xcb_void_cookie_t xcb_ret;
2631*b48426e3Smrg     xcb_xfixes_set_client_disconnect_mode_request_t xcb_out;
2632*b48426e3Smrg 
2633*b48426e3Smrg     xcb_out.disconnect_mode = disconnect_mode;
2634*b48426e3Smrg 
2635*b48426e3Smrg     xcb_parts[2].iov_base = (char *) &xcb_out;
2636*b48426e3Smrg     xcb_parts[2].iov_len = sizeof(xcb_out);
2637*b48426e3Smrg     xcb_parts[3].iov_base = 0;
2638*b48426e3Smrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
2639*b48426e3Smrg 
2640*b48426e3Smrg     xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
2641*b48426e3Smrg     return xcb_ret;
2642*b48426e3Smrg }
2643*b48426e3Smrg 
2644*b48426e3Smrg xcb_xfixes_get_client_disconnect_mode_cookie_t
xcb_xfixes_get_client_disconnect_mode(xcb_connection_t * c)2645*b48426e3Smrg xcb_xfixes_get_client_disconnect_mode (xcb_connection_t *c)
2646*b48426e3Smrg {
2647*b48426e3Smrg     static const xcb_protocol_request_t xcb_req = {
2648*b48426e3Smrg         .count = 2,
2649*b48426e3Smrg         .ext = &xcb_xfixes_id,
2650*b48426e3Smrg         .opcode = XCB_XFIXES_GET_CLIENT_DISCONNECT_MODE,
2651*b48426e3Smrg         .isvoid = 0
2652*b48426e3Smrg     };
2653*b48426e3Smrg 
2654*b48426e3Smrg     struct iovec xcb_parts[4];
2655*b48426e3Smrg     xcb_xfixes_get_client_disconnect_mode_cookie_t xcb_ret;
2656*b48426e3Smrg     xcb_xfixes_get_client_disconnect_mode_request_t xcb_out;
2657*b48426e3Smrg 
2658*b48426e3Smrg 
2659*b48426e3Smrg     xcb_parts[2].iov_base = (char *) &xcb_out;
2660*b48426e3Smrg     xcb_parts[2].iov_len = sizeof(xcb_out);
2661*b48426e3Smrg     xcb_parts[3].iov_base = 0;
2662*b48426e3Smrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
2663*b48426e3Smrg 
2664*b48426e3Smrg     xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
2665*b48426e3Smrg     return xcb_ret;
2666*b48426e3Smrg }
2667*b48426e3Smrg 
2668*b48426e3Smrg xcb_xfixes_get_client_disconnect_mode_cookie_t
xcb_xfixes_get_client_disconnect_mode_unchecked(xcb_connection_t * c)2669*b48426e3Smrg xcb_xfixes_get_client_disconnect_mode_unchecked (xcb_connection_t *c)
2670*b48426e3Smrg {
2671*b48426e3Smrg     static const xcb_protocol_request_t xcb_req = {
2672*b48426e3Smrg         .count = 2,
2673*b48426e3Smrg         .ext = &xcb_xfixes_id,
2674*b48426e3Smrg         .opcode = XCB_XFIXES_GET_CLIENT_DISCONNECT_MODE,
2675*b48426e3Smrg         .isvoid = 0
2676*b48426e3Smrg     };
2677*b48426e3Smrg 
2678*b48426e3Smrg     struct iovec xcb_parts[4];
2679*b48426e3Smrg     xcb_xfixes_get_client_disconnect_mode_cookie_t xcb_ret;
2680*b48426e3Smrg     xcb_xfixes_get_client_disconnect_mode_request_t xcb_out;
2681*b48426e3Smrg 
2682*b48426e3Smrg 
2683*b48426e3Smrg     xcb_parts[2].iov_base = (char *) &xcb_out;
2684*b48426e3Smrg     xcb_parts[2].iov_len = sizeof(xcb_out);
2685*b48426e3Smrg     xcb_parts[3].iov_base = 0;
2686*b48426e3Smrg     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
2687*b48426e3Smrg 
2688*b48426e3Smrg     xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
2689*b48426e3Smrg     return xcb_ret;
2690*b48426e3Smrg }
2691*b48426e3Smrg 
2692*b48426e3Smrg xcb_xfixes_get_client_disconnect_mode_reply_t *
xcb_xfixes_get_client_disconnect_mode_reply(xcb_connection_t * c,xcb_xfixes_get_client_disconnect_mode_cookie_t cookie,xcb_generic_error_t ** e)2693*b48426e3Smrg xcb_xfixes_get_client_disconnect_mode_reply (xcb_connection_t                                *c,
2694*b48426e3Smrg                                              xcb_xfixes_get_client_disconnect_mode_cookie_t   cookie  /**< */,
2695*b48426e3Smrg                                              xcb_generic_error_t                            **e)
2696*b48426e3Smrg {
2697*b48426e3Smrg     return (xcb_xfixes_get_client_disconnect_mode_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
2698*b48426e3Smrg }
2699*b48426e3Smrg 
2700