1/*
2 * This file generated automatically from shm.xml by c_client.py.
3 * Edit at your peril.
4 */
5
6#include <string.h>
7#include <assert.h>
8#include "xcbext.h"
9#include "shm.h"
10#include "xproto.h"
11
12xcb_extension_t xcb_shm_id = { "MIT-SHM", 0 };
13
14
15/*****************************************************************************
16 **
17 ** void xcb_shm_seg_next
18 **
19 ** @param xcb_shm_seg_iterator_t *i
20 ** @returns void
21 **
22 *****************************************************************************/
23
24void
25xcb_shm_seg_next (xcb_shm_seg_iterator_t *i  /**< */)
26{
27    --i->rem;
28    ++i->data;
29    i->index += sizeof(xcb_shm_seg_t);
30}
31
32
33/*****************************************************************************
34 **
35 ** xcb_generic_iterator_t xcb_shm_seg_end
36 **
37 ** @param xcb_shm_seg_iterator_t i
38 ** @returns xcb_generic_iterator_t
39 **
40 *****************************************************************************/
41
42xcb_generic_iterator_t
43xcb_shm_seg_end (xcb_shm_seg_iterator_t i  /**< */)
44{
45    xcb_generic_iterator_t ret;
46    ret.data = i.data + i.rem;
47    ret.index = i.index + ((char *) ret.data - (char *) i.data);
48    ret.rem = 0;
49    return ret;
50}
51
52
53/*****************************************************************************
54 **
55 ** xcb_shm_query_version_cookie_t xcb_shm_query_version
56 **
57 ** @param xcb_connection_t *c
58 ** @returns xcb_shm_query_version_cookie_t
59 **
60 *****************************************************************************/
61
62xcb_shm_query_version_cookie_t
63xcb_shm_query_version (xcb_connection_t *c  /**< */)
64{
65    static const xcb_protocol_request_t xcb_req = {
66        /* count */ 2,
67        /* ext */ &xcb_shm_id,
68        /* opcode */ XCB_SHM_QUERY_VERSION,
69        /* isvoid */ 0
70    };
71
72    struct iovec xcb_parts[4];
73    xcb_shm_query_version_cookie_t xcb_ret;
74    xcb_shm_query_version_request_t xcb_out;
75
76
77    xcb_parts[2].iov_base = (char *) &xcb_out;
78    xcb_parts[2].iov_len = sizeof(xcb_out);
79    xcb_parts[3].iov_base = 0;
80    xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
81    xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
82    return xcb_ret;
83}
84
85
86/*****************************************************************************
87 **
88 ** xcb_shm_query_version_cookie_t xcb_shm_query_version_unchecked
89 **
90 ** @param xcb_connection_t *c
91 ** @returns xcb_shm_query_version_cookie_t
92 **
93 *****************************************************************************/
94
95xcb_shm_query_version_cookie_t
96xcb_shm_query_version_unchecked (xcb_connection_t *c  /**< */)
97{
98    static const xcb_protocol_request_t xcb_req = {
99        /* count */ 2,
100        /* ext */ &xcb_shm_id,
101        /* opcode */ XCB_SHM_QUERY_VERSION,
102        /* isvoid */ 0
103    };
104
105    struct iovec xcb_parts[4];
106    xcb_shm_query_version_cookie_t xcb_ret;
107    xcb_shm_query_version_request_t xcb_out;
108
109
110    xcb_parts[2].iov_base = (char *) &xcb_out;
111    xcb_parts[2].iov_len = sizeof(xcb_out);
112    xcb_parts[3].iov_base = 0;
113    xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
114    xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
115    return xcb_ret;
116}
117
118
119/*****************************************************************************
120 **
121 ** xcb_shm_query_version_reply_t * xcb_shm_query_version_reply
122 **
123 ** @param xcb_connection_t                *c
124 ** @param xcb_shm_query_version_cookie_t   cookie
125 ** @param xcb_generic_error_t            **e
126 ** @returns xcb_shm_query_version_reply_t *
127 **
128 *****************************************************************************/
129
130xcb_shm_query_version_reply_t *
131xcb_shm_query_version_reply (xcb_connection_t                *c  /**< */,
132                             xcb_shm_query_version_cookie_t   cookie  /**< */,
133                             xcb_generic_error_t            **e  /**< */)
134{
135    return (xcb_shm_query_version_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
136}
137
138
139/*****************************************************************************
140 **
141 ** xcb_void_cookie_t xcb_shm_attach_checked
142 **
143 ** @param xcb_connection_t *c
144 ** @param xcb_shm_seg_t     shmseg
145 ** @param uint32_t          shmid
146 ** @param uint8_t           read_only
147 ** @returns xcb_void_cookie_t
148 **
149 *****************************************************************************/
150
151xcb_void_cookie_t
152xcb_shm_attach_checked (xcb_connection_t *c  /**< */,
153                        xcb_shm_seg_t     shmseg  /**< */,
154                        uint32_t          shmid  /**< */,
155                        uint8_t           read_only  /**< */)
156{
157    static const xcb_protocol_request_t xcb_req = {
158        /* count */ 2,
159        /* ext */ &xcb_shm_id,
160        /* opcode */ XCB_SHM_ATTACH,
161        /* isvoid */ 1
162    };
163
164    struct iovec xcb_parts[4];
165    xcb_void_cookie_t xcb_ret;
166    xcb_shm_attach_request_t xcb_out;
167
168    xcb_out.shmseg = shmseg;
169    xcb_out.shmid = shmid;
170    xcb_out.read_only = read_only;
171    memset(xcb_out.pad0, 0, 3);
172
173    xcb_parts[2].iov_base = (char *) &xcb_out;
174    xcb_parts[2].iov_len = sizeof(xcb_out);
175    xcb_parts[3].iov_base = 0;
176    xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
177    xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
178    return xcb_ret;
179}
180
181
182/*****************************************************************************
183 **
184 ** xcb_void_cookie_t xcb_shm_attach
185 **
186 ** @param xcb_connection_t *c
187 ** @param xcb_shm_seg_t     shmseg
188 ** @param uint32_t          shmid
189 ** @param uint8_t           read_only
190 ** @returns xcb_void_cookie_t
191 **
192 *****************************************************************************/
193
194xcb_void_cookie_t
195xcb_shm_attach (xcb_connection_t *c  /**< */,
196                xcb_shm_seg_t     shmseg  /**< */,
197                uint32_t          shmid  /**< */,
198                uint8_t           read_only  /**< */)
199{
200    static const xcb_protocol_request_t xcb_req = {
201        /* count */ 2,
202        /* ext */ &xcb_shm_id,
203        /* opcode */ XCB_SHM_ATTACH,
204        /* isvoid */ 1
205    };
206
207    struct iovec xcb_parts[4];
208    xcb_void_cookie_t xcb_ret;
209    xcb_shm_attach_request_t xcb_out;
210
211    xcb_out.shmseg = shmseg;
212    xcb_out.shmid = shmid;
213    xcb_out.read_only = read_only;
214    memset(xcb_out.pad0, 0, 3);
215
216    xcb_parts[2].iov_base = (char *) &xcb_out;
217    xcb_parts[2].iov_len = sizeof(xcb_out);
218    xcb_parts[3].iov_base = 0;
219    xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
220    xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
221    return xcb_ret;
222}
223
224
225/*****************************************************************************
226 **
227 ** xcb_void_cookie_t xcb_shm_detach_checked
228 **
229 ** @param xcb_connection_t *c
230 ** @param xcb_shm_seg_t     shmseg
231 ** @returns xcb_void_cookie_t
232 **
233 *****************************************************************************/
234
235xcb_void_cookie_t
236xcb_shm_detach_checked (xcb_connection_t *c  /**< */,
237                        xcb_shm_seg_t     shmseg  /**< */)
238{
239    static const xcb_protocol_request_t xcb_req = {
240        /* count */ 2,
241        /* ext */ &xcb_shm_id,
242        /* opcode */ XCB_SHM_DETACH,
243        /* isvoid */ 1
244    };
245
246    struct iovec xcb_parts[4];
247    xcb_void_cookie_t xcb_ret;
248    xcb_shm_detach_request_t xcb_out;
249
250    xcb_out.shmseg = shmseg;
251
252    xcb_parts[2].iov_base = (char *) &xcb_out;
253    xcb_parts[2].iov_len = sizeof(xcb_out);
254    xcb_parts[3].iov_base = 0;
255    xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
256    xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
257    return xcb_ret;
258}
259
260
261/*****************************************************************************
262 **
263 ** xcb_void_cookie_t xcb_shm_detach
264 **
265 ** @param xcb_connection_t *c
266 ** @param xcb_shm_seg_t     shmseg
267 ** @returns xcb_void_cookie_t
268 **
269 *****************************************************************************/
270
271xcb_void_cookie_t
272xcb_shm_detach (xcb_connection_t *c  /**< */,
273                xcb_shm_seg_t     shmseg  /**< */)
274{
275    static const xcb_protocol_request_t xcb_req = {
276        /* count */ 2,
277        /* ext */ &xcb_shm_id,
278        /* opcode */ XCB_SHM_DETACH,
279        /* isvoid */ 1
280    };
281
282    struct iovec xcb_parts[4];
283    xcb_void_cookie_t xcb_ret;
284    xcb_shm_detach_request_t xcb_out;
285
286    xcb_out.shmseg = shmseg;
287
288    xcb_parts[2].iov_base = (char *) &xcb_out;
289    xcb_parts[2].iov_len = sizeof(xcb_out);
290    xcb_parts[3].iov_base = 0;
291    xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
292    xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
293    return xcb_ret;
294}
295
296
297/*****************************************************************************
298 **
299 ** xcb_void_cookie_t xcb_shm_put_image_checked
300 **
301 ** @param xcb_connection_t *c
302 ** @param xcb_drawable_t    drawable
303 ** @param xcb_gcontext_t    gc
304 ** @param uint16_t          total_width
305 ** @param uint16_t          total_height
306 ** @param uint16_t          src_x
307 ** @param uint16_t          src_y
308 ** @param uint16_t          src_width
309 ** @param uint16_t          src_height
310 ** @param int16_t           dst_x
311 ** @param int16_t           dst_y
312 ** @param uint8_t           depth
313 ** @param uint8_t           format
314 ** @param uint8_t           send_event
315 ** @param xcb_shm_seg_t     shmseg
316 ** @param uint32_t          offset
317 ** @returns xcb_void_cookie_t
318 **
319 *****************************************************************************/
320
321xcb_void_cookie_t
322xcb_shm_put_image_checked (xcb_connection_t *c  /**< */,
323                           xcb_drawable_t    drawable  /**< */,
324                           xcb_gcontext_t    gc  /**< */,
325                           uint16_t          total_width  /**< */,
326                           uint16_t          total_height  /**< */,
327                           uint16_t          src_x  /**< */,
328                           uint16_t          src_y  /**< */,
329                           uint16_t          src_width  /**< */,
330                           uint16_t          src_height  /**< */,
331                           int16_t           dst_x  /**< */,
332                           int16_t           dst_y  /**< */,
333                           uint8_t           depth  /**< */,
334                           uint8_t           format  /**< */,
335                           uint8_t           send_event  /**< */,
336                           xcb_shm_seg_t     shmseg  /**< */,
337                           uint32_t          offset  /**< */)
338{
339    static const xcb_protocol_request_t xcb_req = {
340        /* count */ 2,
341        /* ext */ &xcb_shm_id,
342        /* opcode */ XCB_SHM_PUT_IMAGE,
343        /* isvoid */ 1
344    };
345
346    struct iovec xcb_parts[4];
347    xcb_void_cookie_t xcb_ret;
348    xcb_shm_put_image_request_t xcb_out;
349
350    xcb_out.drawable = drawable;
351    xcb_out.gc = gc;
352    xcb_out.total_width = total_width;
353    xcb_out.total_height = total_height;
354    xcb_out.src_x = src_x;
355    xcb_out.src_y = src_y;
356    xcb_out.src_width = src_width;
357    xcb_out.src_height = src_height;
358    xcb_out.dst_x = dst_x;
359    xcb_out.dst_y = dst_y;
360    xcb_out.depth = depth;
361    xcb_out.format = format;
362    xcb_out.send_event = send_event;
363    xcb_out.pad0 = 0;
364    xcb_out.shmseg = shmseg;
365    xcb_out.offset = offset;
366
367    xcb_parts[2].iov_base = (char *) &xcb_out;
368    xcb_parts[2].iov_len = sizeof(xcb_out);
369    xcb_parts[3].iov_base = 0;
370    xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
371    xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
372    return xcb_ret;
373}
374
375
376/*****************************************************************************
377 **
378 ** xcb_void_cookie_t xcb_shm_put_image
379 **
380 ** @param xcb_connection_t *c
381 ** @param xcb_drawable_t    drawable
382 ** @param xcb_gcontext_t    gc
383 ** @param uint16_t          total_width
384 ** @param uint16_t          total_height
385 ** @param uint16_t          src_x
386 ** @param uint16_t          src_y
387 ** @param uint16_t          src_width
388 ** @param uint16_t          src_height
389 ** @param int16_t           dst_x
390 ** @param int16_t           dst_y
391 ** @param uint8_t           depth
392 ** @param uint8_t           format
393 ** @param uint8_t           send_event
394 ** @param xcb_shm_seg_t     shmseg
395 ** @param uint32_t          offset
396 ** @returns xcb_void_cookie_t
397 **
398 *****************************************************************************/
399
400xcb_void_cookie_t
401xcb_shm_put_image (xcb_connection_t *c  /**< */,
402                   xcb_drawable_t    drawable  /**< */,
403                   xcb_gcontext_t    gc  /**< */,
404                   uint16_t          total_width  /**< */,
405                   uint16_t          total_height  /**< */,
406                   uint16_t          src_x  /**< */,
407                   uint16_t          src_y  /**< */,
408                   uint16_t          src_width  /**< */,
409                   uint16_t          src_height  /**< */,
410                   int16_t           dst_x  /**< */,
411                   int16_t           dst_y  /**< */,
412                   uint8_t           depth  /**< */,
413                   uint8_t           format  /**< */,
414                   uint8_t           send_event  /**< */,
415                   xcb_shm_seg_t     shmseg  /**< */,
416                   uint32_t          offset  /**< */)
417{
418    static const xcb_protocol_request_t xcb_req = {
419        /* count */ 2,
420        /* ext */ &xcb_shm_id,
421        /* opcode */ XCB_SHM_PUT_IMAGE,
422        /* isvoid */ 1
423    };
424
425    struct iovec xcb_parts[4];
426    xcb_void_cookie_t xcb_ret;
427    xcb_shm_put_image_request_t xcb_out;
428
429    xcb_out.drawable = drawable;
430    xcb_out.gc = gc;
431    xcb_out.total_width = total_width;
432    xcb_out.total_height = total_height;
433    xcb_out.src_x = src_x;
434    xcb_out.src_y = src_y;
435    xcb_out.src_width = src_width;
436    xcb_out.src_height = src_height;
437    xcb_out.dst_x = dst_x;
438    xcb_out.dst_y = dst_y;
439    xcb_out.depth = depth;
440    xcb_out.format = format;
441    xcb_out.send_event = send_event;
442    xcb_out.pad0 = 0;
443    xcb_out.shmseg = shmseg;
444    xcb_out.offset = offset;
445
446    xcb_parts[2].iov_base = (char *) &xcb_out;
447    xcb_parts[2].iov_len = sizeof(xcb_out);
448    xcb_parts[3].iov_base = 0;
449    xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
450    xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
451    return xcb_ret;
452}
453
454
455/*****************************************************************************
456 **
457 ** xcb_shm_get_image_cookie_t xcb_shm_get_image
458 **
459 ** @param xcb_connection_t *c
460 ** @param xcb_drawable_t    drawable
461 ** @param int16_t           x
462 ** @param int16_t           y
463 ** @param uint16_t          width
464 ** @param uint16_t          height
465 ** @param uint32_t          plane_mask
466 ** @param uint8_t           format
467 ** @param xcb_shm_seg_t     shmseg
468 ** @param uint32_t          offset
469 ** @returns xcb_shm_get_image_cookie_t
470 **
471 *****************************************************************************/
472
473xcb_shm_get_image_cookie_t
474xcb_shm_get_image (xcb_connection_t *c  /**< */,
475                   xcb_drawable_t    drawable  /**< */,
476                   int16_t           x  /**< */,
477                   int16_t           y  /**< */,
478                   uint16_t          width  /**< */,
479                   uint16_t          height  /**< */,
480                   uint32_t          plane_mask  /**< */,
481                   uint8_t           format  /**< */,
482                   xcb_shm_seg_t     shmseg  /**< */,
483                   uint32_t          offset  /**< */)
484{
485    static const xcb_protocol_request_t xcb_req = {
486        /* count */ 2,
487        /* ext */ &xcb_shm_id,
488        /* opcode */ XCB_SHM_GET_IMAGE,
489        /* isvoid */ 0
490    };
491
492    struct iovec xcb_parts[4];
493    xcb_shm_get_image_cookie_t xcb_ret;
494    xcb_shm_get_image_request_t xcb_out;
495
496    xcb_out.drawable = drawable;
497    xcb_out.x = x;
498    xcb_out.y = y;
499    xcb_out.width = width;
500    xcb_out.height = height;
501    xcb_out.plane_mask = plane_mask;
502    xcb_out.format = format;
503    memset(xcb_out.pad0, 0, 3);
504    xcb_out.shmseg = shmseg;
505    xcb_out.offset = offset;
506
507    xcb_parts[2].iov_base = (char *) &xcb_out;
508    xcb_parts[2].iov_len = sizeof(xcb_out);
509    xcb_parts[3].iov_base = 0;
510    xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
511    xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
512    return xcb_ret;
513}
514
515
516/*****************************************************************************
517 **
518 ** xcb_shm_get_image_cookie_t xcb_shm_get_image_unchecked
519 **
520 ** @param xcb_connection_t *c
521 ** @param xcb_drawable_t    drawable
522 ** @param int16_t           x
523 ** @param int16_t           y
524 ** @param uint16_t          width
525 ** @param uint16_t          height
526 ** @param uint32_t          plane_mask
527 ** @param uint8_t           format
528 ** @param xcb_shm_seg_t     shmseg
529 ** @param uint32_t          offset
530 ** @returns xcb_shm_get_image_cookie_t
531 **
532 *****************************************************************************/
533
534xcb_shm_get_image_cookie_t
535xcb_shm_get_image_unchecked (xcb_connection_t *c  /**< */,
536                             xcb_drawable_t    drawable  /**< */,
537                             int16_t           x  /**< */,
538                             int16_t           y  /**< */,
539                             uint16_t          width  /**< */,
540                             uint16_t          height  /**< */,
541                             uint32_t          plane_mask  /**< */,
542                             uint8_t           format  /**< */,
543                             xcb_shm_seg_t     shmseg  /**< */,
544                             uint32_t          offset  /**< */)
545{
546    static const xcb_protocol_request_t xcb_req = {
547        /* count */ 2,
548        /* ext */ &xcb_shm_id,
549        /* opcode */ XCB_SHM_GET_IMAGE,
550        /* isvoid */ 0
551    };
552
553    struct iovec xcb_parts[4];
554    xcb_shm_get_image_cookie_t xcb_ret;
555    xcb_shm_get_image_request_t xcb_out;
556
557    xcb_out.drawable = drawable;
558    xcb_out.x = x;
559    xcb_out.y = y;
560    xcb_out.width = width;
561    xcb_out.height = height;
562    xcb_out.plane_mask = plane_mask;
563    xcb_out.format = format;
564    memset(xcb_out.pad0, 0, 3);
565    xcb_out.shmseg = shmseg;
566    xcb_out.offset = offset;
567
568    xcb_parts[2].iov_base = (char *) &xcb_out;
569    xcb_parts[2].iov_len = sizeof(xcb_out);
570    xcb_parts[3].iov_base = 0;
571    xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
572    xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
573    return xcb_ret;
574}
575
576
577/*****************************************************************************
578 **
579 ** xcb_shm_get_image_reply_t * xcb_shm_get_image_reply
580 **
581 ** @param xcb_connection_t            *c
582 ** @param xcb_shm_get_image_cookie_t   cookie
583 ** @param xcb_generic_error_t        **e
584 ** @returns xcb_shm_get_image_reply_t *
585 **
586 *****************************************************************************/
587
588xcb_shm_get_image_reply_t *
589xcb_shm_get_image_reply (xcb_connection_t            *c  /**< */,
590                         xcb_shm_get_image_cookie_t   cookie  /**< */,
591                         xcb_generic_error_t        **e  /**< */)
592{
593    return (xcb_shm_get_image_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
594}
595
596
597/*****************************************************************************
598 **
599 ** xcb_void_cookie_t xcb_shm_create_pixmap_checked
600 **
601 ** @param xcb_connection_t *c
602 ** @param xcb_pixmap_t      pid
603 ** @param xcb_drawable_t    drawable
604 ** @param uint16_t          width
605 ** @param uint16_t          height
606 ** @param uint8_t           depth
607 ** @param xcb_shm_seg_t     shmseg
608 ** @param uint32_t          offset
609 ** @returns xcb_void_cookie_t
610 **
611 *****************************************************************************/
612
613xcb_void_cookie_t
614xcb_shm_create_pixmap_checked (xcb_connection_t *c  /**< */,
615                               xcb_pixmap_t      pid  /**< */,
616                               xcb_drawable_t    drawable  /**< */,
617                               uint16_t          width  /**< */,
618                               uint16_t          height  /**< */,
619                               uint8_t           depth  /**< */,
620                               xcb_shm_seg_t     shmseg  /**< */,
621                               uint32_t          offset  /**< */)
622{
623    static const xcb_protocol_request_t xcb_req = {
624        /* count */ 2,
625        /* ext */ &xcb_shm_id,
626        /* opcode */ XCB_SHM_CREATE_PIXMAP,
627        /* isvoid */ 1
628    };
629
630    struct iovec xcb_parts[4];
631    xcb_void_cookie_t xcb_ret;
632    xcb_shm_create_pixmap_request_t xcb_out;
633
634    xcb_out.pid = pid;
635    xcb_out.drawable = drawable;
636    xcb_out.width = width;
637    xcb_out.height = height;
638    xcb_out.depth = depth;
639    memset(xcb_out.pad0, 0, 3);
640    xcb_out.shmseg = shmseg;
641    xcb_out.offset = offset;
642
643    xcb_parts[2].iov_base = (char *) &xcb_out;
644    xcb_parts[2].iov_len = sizeof(xcb_out);
645    xcb_parts[3].iov_base = 0;
646    xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
647    xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
648    return xcb_ret;
649}
650
651
652/*****************************************************************************
653 **
654 ** xcb_void_cookie_t xcb_shm_create_pixmap
655 **
656 ** @param xcb_connection_t *c
657 ** @param xcb_pixmap_t      pid
658 ** @param xcb_drawable_t    drawable
659 ** @param uint16_t          width
660 ** @param uint16_t          height
661 ** @param uint8_t           depth
662 ** @param xcb_shm_seg_t     shmseg
663 ** @param uint32_t          offset
664 ** @returns xcb_void_cookie_t
665 **
666 *****************************************************************************/
667
668xcb_void_cookie_t
669xcb_shm_create_pixmap (xcb_connection_t *c  /**< */,
670                       xcb_pixmap_t      pid  /**< */,
671                       xcb_drawable_t    drawable  /**< */,
672                       uint16_t          width  /**< */,
673                       uint16_t          height  /**< */,
674                       uint8_t           depth  /**< */,
675                       xcb_shm_seg_t     shmseg  /**< */,
676                       uint32_t          offset  /**< */)
677{
678    static const xcb_protocol_request_t xcb_req = {
679        /* count */ 2,
680        /* ext */ &xcb_shm_id,
681        /* opcode */ XCB_SHM_CREATE_PIXMAP,
682        /* isvoid */ 1
683    };
684
685    struct iovec xcb_parts[4];
686    xcb_void_cookie_t xcb_ret;
687    xcb_shm_create_pixmap_request_t xcb_out;
688
689    xcb_out.pid = pid;
690    xcb_out.drawable = drawable;
691    xcb_out.width = width;
692    xcb_out.height = height;
693    xcb_out.depth = depth;
694    memset(xcb_out.pad0, 0, 3);
695    xcb_out.shmseg = shmseg;
696    xcb_out.offset = offset;
697
698    xcb_parts[2].iov_base = (char *) &xcb_out;
699    xcb_parts[2].iov_len = sizeof(xcb_out);
700    xcb_parts[3].iov_base = 0;
701    xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
702    xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
703    return xcb_ret;
704}
705
706