1/*
2 * This file generated automatically from shm.xml by c_client.py.
3 * Edit at your peril.
4 */
5
6/**
7 * @defgroup XCB_Shm_API XCB Shm API
8 * @brief Shm XCB Protocol Implementation.
9 * @{
10 **/
11
12#ifndef __SHM_H
13#define __SHM_H
14
15#include "xcb.h"
16#include "xproto.h"
17
18#ifdef __cplusplus
19extern "C" {
20#endif
21
22#define XCB_SHM_MAJOR_VERSION 1
23#define XCB_SHM_MINOR_VERSION 2
24
25extern xcb_extension_t xcb_shm_id;
26
27typedef uint32_t xcb_shm_seg_t;
28
29/**
30 * @brief xcb_shm_seg_iterator_t
31 **/
32typedef struct xcb_shm_seg_iterator_t {
33 xcb_shm_seg_t *data;
34 int rem;
35 int index;
36} xcb_shm_seg_iterator_t;
37
38/** Opcode for xcb_shm_completion. */
39#define XCB_SHM_COMPLETION 0
40
41/**
42 * @brief xcb_shm_completion_event_t
43 **/
44typedef struct xcb_shm_completion_event_t {
45 uint8_t response_type;
46 uint8_t pad0;
47 uint16_t sequence;
48 xcb_drawable_t drawable;
49 uint16_t minor_event;
50 uint8_t major_event;
51 uint8_t pad1;
52 xcb_shm_seg_t shmseg;
53 uint32_t offset;
54} xcb_shm_completion_event_t;
55
56/** Opcode for xcb_shm_bad_seg. */
57#define XCB_SHM_BAD_SEG 0
58
59typedef xcb_value_error_t xcb_shm_bad_seg_error_t;
60
61/**
62 * @brief xcb_shm_query_version_cookie_t
63 **/
64typedef struct xcb_shm_query_version_cookie_t {
65 unsigned int sequence;
66} xcb_shm_query_version_cookie_t;
67
68/** Opcode for xcb_shm_query_version. */
69#define XCB_SHM_QUERY_VERSION 0
70
71/**
72 * @brief xcb_shm_query_version_request_t
73 **/
74typedef struct xcb_shm_query_version_request_t {
75 uint8_t major_opcode;
76 uint8_t minor_opcode;
77 uint16_t length;
78} xcb_shm_query_version_request_t;
79
80/**
81 * @brief xcb_shm_query_version_reply_t
82 **/
83typedef struct xcb_shm_query_version_reply_t {
84 uint8_t response_type;
85 uint8_t shared_pixmaps;
86 uint16_t sequence;
87 uint32_t length;
88 uint16_t major_version;
89 uint16_t minor_version;
90 uint16_t uid;
91 uint16_t gid;
92 uint8_t pixmap_format;
93 uint8_t pad0[15];
94} xcb_shm_query_version_reply_t;
95
96/** Opcode for xcb_shm_attach. */
97#define XCB_SHM_ATTACH 1
98
99/**
100 * @brief xcb_shm_attach_request_t
101 **/
102typedef struct xcb_shm_attach_request_t {
103 uint8_t major_opcode;
104 uint8_t minor_opcode;
105 uint16_t length;
106 xcb_shm_seg_t shmseg;
107 uint32_t shmid;
108 uint8_t read_only;
109 uint8_t pad0[3];
110} xcb_shm_attach_request_t;
111
112/** Opcode for xcb_shm_detach. */
113#define XCB_SHM_DETACH 2
114
115/**
116 * @brief xcb_shm_detach_request_t
117 **/
118typedef struct xcb_shm_detach_request_t {
119 uint8_t major_opcode;
120 uint8_t minor_opcode;
121 uint16_t length;
122 xcb_shm_seg_t shmseg;
123} xcb_shm_detach_request_t;
124
125/** Opcode for xcb_shm_put_image. */
126#define XCB_SHM_PUT_IMAGE 3
127
128/**
129 * @brief xcb_shm_put_image_request_t
130 **/
131typedef struct xcb_shm_put_image_request_t {
132 uint8_t major_opcode;
133 uint8_t minor_opcode;
134 uint16_t length;
135 xcb_drawable_t drawable;
136 xcb_gcontext_t gc;
137 uint16_t total_width;
138 uint16_t total_height;
139 uint16_t src_x;
140 uint16_t src_y;
141 uint16_t src_width;
142 uint16_t src_height;
143 int16_t dst_x;
144 int16_t dst_y;
145 uint8_t depth;
146 uint8_t format;
147 uint8_t send_event;
148 uint8_t pad0;
149 xcb_shm_seg_t shmseg;
150 uint32_t offset;
151} xcb_shm_put_image_request_t;
152
153/**
154 * @brief xcb_shm_get_image_cookie_t
155 **/
156typedef struct xcb_shm_get_image_cookie_t {
157 unsigned int sequence;
158} xcb_shm_get_image_cookie_t;
159
160/** Opcode for xcb_shm_get_image. */
161#define XCB_SHM_GET_IMAGE 4
162
163/**
164 * @brief xcb_shm_get_image_request_t
165 **/
166typedef struct xcb_shm_get_image_request_t {
167 uint8_t major_opcode;
168 uint8_t minor_opcode;
169 uint16_t length;
170 xcb_drawable_t drawable;
171 int16_t x;
172 int16_t y;
173 uint16_t width;
174 uint16_t height;
175 uint32_t plane_mask;
176 uint8_t format;
177 uint8_t pad0[3];
178 xcb_shm_seg_t shmseg;
179 uint32_t offset;
180} xcb_shm_get_image_request_t;
181
182/**
183 * @brief xcb_shm_get_image_reply_t
184 **/
185typedef struct xcb_shm_get_image_reply_t {
186 uint8_t response_type;
187 uint8_t depth;
188 uint16_t sequence;
189 uint32_t length;
190 xcb_visualid_t visual;
191 uint32_t size;
192} xcb_shm_get_image_reply_t;
193
194/** Opcode for xcb_shm_create_pixmap. */
195#define XCB_SHM_CREATE_PIXMAP 5
196
197/**
198 * @brief xcb_shm_create_pixmap_request_t
199 **/
200typedef struct xcb_shm_create_pixmap_request_t {
201 uint8_t major_opcode;
202 uint8_t minor_opcode;
203 uint16_t length;
204 xcb_pixmap_t pid;
205 xcb_drawable_t drawable;
206 uint16_t width;
207 uint16_t height;
208 uint8_t depth;
209 uint8_t pad0[3];
210 xcb_shm_seg_t shmseg;
211 uint32_t offset;
212} xcb_shm_create_pixmap_request_t;
213
214/** Opcode for xcb_shm_attach_fd. */
215#define XCB_SHM_ATTACH_FD 6
216
217/**
218 * @brief xcb_shm_attach_fd_request_t
219 **/
220typedef struct xcb_shm_attach_fd_request_t {
221 uint8_t major_opcode;
222 uint8_t minor_opcode;
223 uint16_t length;
224 xcb_shm_seg_t shmseg;
225 uint8_t read_only;
226 uint8_t pad0[3];
227} xcb_shm_attach_fd_request_t;
228
229/**
230 * @brief xcb_shm_create_segment_cookie_t
231 **/
232typedef struct xcb_shm_create_segment_cookie_t {
233 unsigned int sequence;
234} xcb_shm_create_segment_cookie_t;
235
236/** Opcode for xcb_shm_create_segment. */
237#define XCB_SHM_CREATE_SEGMENT 7
238
239/**
240 * @brief xcb_shm_create_segment_request_t
241 **/
242typedef struct xcb_shm_create_segment_request_t {
243 uint8_t major_opcode;
244 uint8_t minor_opcode;
245 uint16_t length;
246 xcb_shm_seg_t shmseg;
247 uint32_t size;
248 uint8_t read_only;
249 uint8_t pad0[3];
250} xcb_shm_create_segment_request_t;
251
252/**
253 * @brief xcb_shm_create_segment_reply_t
254 **/
255typedef struct xcb_shm_create_segment_reply_t {
256 uint8_t response_type;
257 uint8_t nfd;
258 uint16_t sequence;
259 uint32_t length;
260 uint8_t pad0[24];
261} xcb_shm_create_segment_reply_t;
262
263/**
264 * Get the next element of the iterator
265 * @param i Pointer to a xcb_shm_seg_iterator_t
266 *
267 * Get the next element in the iterator. The member rem is
268 * decreased by one. The member data points to the next
269 * element. The member index is increased by sizeof(xcb_shm_seg_t)
270 */
271void
272xcb_shm_seg_next (xcb_shm_seg_iterator_t *i);
273
274/**
275 * Return the iterator pointing to the last element
276 * @param i An xcb_shm_seg_iterator_t
277 * @return The iterator pointing to the last element
278 *
279 * Set the current element in the iterator to the last element.
280 * The member rem is set to 0. The member data points to the
281 * last element.
282 */
283xcb_generic_iterator_t
284xcb_shm_seg_end (xcb_shm_seg_iterator_t i);
285
286/**
287 *
288 * @param c The connection
289 * @return A cookie
290 *
291 * Delivers a request to the X server.
292 *
293 */
294xcb_shm_query_version_cookie_t
295xcb_shm_query_version (xcb_connection_t *c);
296
297/**
298 *
299 * @param c The connection
300 * @return A cookie
301 *
302 * Delivers a request to the X server.
303 *
304 * This form can be used only if the request will cause
305 * a reply to be generated. Any returned error will be
306 * placed in the event queue.
307 */
308xcb_shm_query_version_cookie_t
309xcb_shm_query_version_unchecked (xcb_connection_t *c);
310
311/**
312 * Return the reply
313 * @param c The connection
314 * @param cookie The cookie
315 * @param e The xcb_generic_error_t supplied
316 *
317 * Returns the reply of the request asked by
318 *
319 * The parameter @p e supplied to this function must be NULL if
320 * xcb_shm_query_version_unchecked(). is used.
321 * Otherwise, it stores the error if any.
322 *
323 * The returned value must be freed by the caller using free().
324 */
325xcb_shm_query_version_reply_t *
326xcb_shm_query_version_reply (xcb_connection_t *c,
327 xcb_shm_query_version_cookie_t cookie /**< */,
328 xcb_generic_error_t **e);
329
330/**
331 *
332 * @param c The connection
333 * @return A cookie
334 *
335 * Delivers a request to the X server.
336 *
337 * This form can be used only if the request will not cause
338 * a reply to be generated. Any returned error will be
339 * saved for handling by xcb_request_check().
340 */
341xcb_void_cookie_t
342xcb_shm_attach_checked (xcb_connection_t *c,
343 xcb_shm_seg_t shmseg,
344 uint32_t shmid,
345 uint8_t read_only);
346
347/**
348 *
349 * @param c The connection
350 * @return A cookie
351 *
352 * Delivers a request to the X server.
353 *
354 */
355xcb_void_cookie_t
356xcb_shm_attach (xcb_connection_t *c,
357 xcb_shm_seg_t shmseg,
358 uint32_t shmid,
359 uint8_t read_only);
360
361/**
362 *
363 * @param c The connection
364 * @return A cookie
365 *
366 * Delivers a request to the X server.
367 *
368 * This form can be used only if the request will not cause
369 * a reply to be generated. Any returned error will be
370 * saved for handling by xcb_request_check().
371 */
372xcb_void_cookie_t
373xcb_shm_detach_checked (xcb_connection_t *c,
374 xcb_shm_seg_t shmseg);
375
376/**
377 *
378 * @param c The connection
379 * @return A cookie
380 *
381 * Delivers a request to the X server.
382 *
383 */
384xcb_void_cookie_t
385xcb_shm_detach (xcb_connection_t *c,
386 xcb_shm_seg_t shmseg);
387
388/**
389 *
390 * @param c The connection
391 * @return A cookie
392 *
393 * Delivers a request to the X server.
394 *
395 * This form can be used only if the request will not cause
396 * a reply to be generated. Any returned error will be
397 * saved for handling by xcb_request_check().
398 */
399xcb_void_cookie_t
400xcb_shm_put_image_checked (xcb_connection_t *c,
401 xcb_drawable_t drawable,
402 xcb_gcontext_t gc,
403 uint16_t total_width,
404 uint16_t total_height,
405 uint16_t src_x,
406 uint16_t src_y,
407 uint16_t src_width,
408 uint16_t src_height,
409 int16_t dst_x,
410 int16_t dst_y,
411 uint8_t depth,
412 uint8_t format,
413 uint8_t send_event,
414 xcb_shm_seg_t shmseg,
415 uint32_t offset);
416
417/**
418 *
419 * @param c The connection
420 * @return A cookie
421 *
422 * Delivers a request to the X server.
423 *
424 */
425xcb_void_cookie_t
426xcb_shm_put_image (xcb_connection_t *c,
427 xcb_drawable_t drawable,
428 xcb_gcontext_t gc,
429 uint16_t total_width,
430 uint16_t total_height,
431 uint16_t src_x,
432 uint16_t src_y,
433 uint16_t src_width,
434 uint16_t src_height,
435 int16_t dst_x,
436 int16_t dst_y,
437 uint8_t depth,
438 uint8_t format,
439 uint8_t send_event,
440 xcb_shm_seg_t shmseg,
441 uint32_t offset);
442
443/**
444 *
445 * @param c The connection
446 * @return A cookie
447 *
448 * Delivers a request to the X server.
449 *
450 */
451xcb_shm_get_image_cookie_t
452xcb_shm_get_image (xcb_connection_t *c,
453 xcb_drawable_t drawable,
454 int16_t x,
455 int16_t y,
456 uint16_t width,
457 uint16_t height,
458 uint32_t plane_mask,
459 uint8_t format,
460 xcb_shm_seg_t shmseg,
461 uint32_t offset);
462
463/**
464 *
465 * @param c The connection
466 * @return A cookie
467 *
468 * Delivers a request to the X server.
469 *
470 * This form can be used only if the request will cause
471 * a reply to be generated. Any returned error will be
472 * placed in the event queue.
473 */
474xcb_shm_get_image_cookie_t
475xcb_shm_get_image_unchecked (xcb_connection_t *c,
476 xcb_drawable_t drawable,
477 int16_t x,
478 int16_t y,
479 uint16_t width,
480 uint16_t height,
481 uint32_t plane_mask,
482 uint8_t format,
483 xcb_shm_seg_t shmseg,
484 uint32_t offset);
485
486/**
487 * Return the reply
488 * @param c The connection
489 * @param cookie The cookie
490 * @param e The xcb_generic_error_t supplied
491 *
492 * Returns the reply of the request asked by
493 *
494 * The parameter @p e supplied to this function must be NULL if
495 * xcb_shm_get_image_unchecked(). is used.
496 * Otherwise, it stores the error if any.
497 *
498 * The returned value must be freed by the caller using free().
499 */
500xcb_shm_get_image_reply_t *
501xcb_shm_get_image_reply (xcb_connection_t *c,
502 xcb_shm_get_image_cookie_t cookie /**< */,
503 xcb_generic_error_t **e);
504
505/**
506 *
507 * @param c The connection
508 * @return A cookie
509 *
510 * Delivers a request to the X server.
511 *
512 * This form can be used only if the request will not cause
513 * a reply to be generated. Any returned error will be
514 * saved for handling by xcb_request_check().
515 */
516xcb_void_cookie_t
517xcb_shm_create_pixmap_checked (xcb_connection_t *c,
518 xcb_pixmap_t pid,
519 xcb_drawable_t drawable,
520 uint16_t width,
521 uint16_t height,
522 uint8_t depth,
523 xcb_shm_seg_t shmseg,
524 uint32_t offset);
525
526/**
527 *
528 * @param c The connection
529 * @return A cookie
530 *
531 * Delivers a request to the X server.
532 *
533 */
534xcb_void_cookie_t
535xcb_shm_create_pixmap (xcb_connection_t *c,
536 xcb_pixmap_t pid,
537 xcb_drawable_t drawable,
538 uint16_t width,
539 uint16_t height,
540 uint8_t depth,
541 xcb_shm_seg_t shmseg,
542 uint32_t offset);
543
544/**
545 *
546 * @param c The connection
547 * @return A cookie
548 *
549 * Delivers a request to the X server.
550 *
551 * This form can be used only if the request will not cause
552 * a reply to be generated. Any returned error will be
553 * saved for handling by xcb_request_check().
554 */
555xcb_void_cookie_t
556xcb_shm_attach_fd_checked (xcb_connection_t *c,
557 xcb_shm_seg_t shmseg,
558 int32_t shm_fd,
559 uint8_t read_only);
560
561/**
562 *
563 * @param c The connection
564 * @return A cookie
565 *
566 * Delivers a request to the X server.
567 *
568 */
569xcb_void_cookie_t
570xcb_shm_attach_fd (xcb_connection_t *c,
571 xcb_shm_seg_t shmseg,
572 int32_t shm_fd,
573 uint8_t read_only);
574
575/**
576 *
577 * @param c The connection
578 * @return A cookie
579 *
580 * Delivers a request to the X server.
581 *
582 */
583xcb_shm_create_segment_cookie_t
584xcb_shm_create_segment (xcb_connection_t *c,
585 xcb_shm_seg_t shmseg,
586 uint32_t size,
587 uint8_t read_only);
588
589/**
590 *
591 * @param c The connection
592 * @return A cookie
593 *
594 * Delivers a request to the X server.
595 *
596 * This form can be used only if the request will cause
597 * a reply to be generated. Any returned error will be
598 * placed in the event queue.
599 */
600xcb_shm_create_segment_cookie_t
601xcb_shm_create_segment_unchecked (xcb_connection_t *c,
602 xcb_shm_seg_t shmseg,
603 uint32_t size,
604 uint8_t read_only);
605
606/**
607 * Return the reply
608 * @param c The connection
609 * @param cookie The cookie
610 * @param e The xcb_generic_error_t supplied
611 *
612 * Returns the reply of the request asked by
613 *
614 * The parameter @p e supplied to this function must be NULL if
615 * xcb_shm_create_segment_unchecked(). is used.
616 * Otherwise, it stores the error if any.
617 *
618 * The returned value must be freed by the caller using free().
619 */
620xcb_shm_create_segment_reply_t *
621xcb_shm_create_segment_reply (xcb_connection_t *c,
622 xcb_shm_create_segment_cookie_t cookie /**< */,
623 xcb_generic_error_t **e);
624
625/**
626 * Return the reply fds
627 * @param c The connection
628 * @param reply The reply
629 *
630 * Returns the array of reply fds of the request asked by
631 *
632 * The returned value must be freed by the caller using free().
633 */
634int *
635xcb_shm_create_segment_reply_fds (xcb_connection_t *c /**< */,
636 xcb_shm_create_segment_reply_t *reply);
637
638
639#ifdef __cplusplus
640}
641#endif
642
643#endif
644
645/**
646 * @}
647 */
648