present.c revision 1.2
1/*
2 * This file generated automatically from present.xml by c_client.py.
3 * Edit at your peril.
4 */
5
6#ifdef HAVE_CONFIG_H
7#include "config.h"
8#endif
9#include <stdlib.h>
10#include <string.h>
11#include <assert.h>
12#include <stddef.h>  /* for offsetof() */
13#include "xcbext.h"
14#include "present.h"
15
16#define ALIGNOF(type) offsetof(struct { char dummy; type member; }, member)
17#include "xproto.h"
18#include "randr.h"
19#include "xfixes.h"
20#include "sync.h"
21
22xcb_extension_t xcb_present_id = { "Present", 0 };
23
24void
25xcb_present_notify_next (xcb_present_notify_iterator_t *i  /**< */)
26{
27    --i->rem;
28    ++i->data;
29    i->index += sizeof(xcb_present_notify_t);
30}
31
32xcb_generic_iterator_t
33xcb_present_notify_end (xcb_present_notify_iterator_t i  /**< */)
34{
35    xcb_generic_iterator_t ret;
36    ret.data = i.data + i.rem;
37    ret.index = i.index + ((char *) ret.data - (char *) i.data);
38    ret.rem = 0;
39    return ret;
40}
41
42xcb_present_query_version_cookie_t
43xcb_present_query_version (xcb_connection_t *c  /**< */,
44                           uint32_t          major_version  /**< */,
45                           uint32_t          minor_version  /**< */)
46{
47    static const xcb_protocol_request_t xcb_req = {
48        /* count */ 2,
49        /* ext */ &xcb_present_id,
50        /* opcode */ XCB_PRESENT_QUERY_VERSION,
51        /* isvoid */ 0
52    };
53
54    struct iovec xcb_parts[4];
55    xcb_present_query_version_cookie_t xcb_ret;
56    xcb_present_query_version_request_t xcb_out;
57
58    xcb_out.major_version = major_version;
59    xcb_out.minor_version = minor_version;
60
61    xcb_parts[2].iov_base = (char *) &xcb_out;
62    xcb_parts[2].iov_len = sizeof(xcb_out);
63    xcb_parts[3].iov_base = 0;
64    xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
65
66    xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
67    return xcb_ret;
68}
69
70xcb_present_query_version_cookie_t
71xcb_present_query_version_unchecked (xcb_connection_t *c  /**< */,
72                                     uint32_t          major_version  /**< */,
73                                     uint32_t          minor_version  /**< */)
74{
75    static const xcb_protocol_request_t xcb_req = {
76        /* count */ 2,
77        /* ext */ &xcb_present_id,
78        /* opcode */ XCB_PRESENT_QUERY_VERSION,
79        /* isvoid */ 0
80    };
81
82    struct iovec xcb_parts[4];
83    xcb_present_query_version_cookie_t xcb_ret;
84    xcb_present_query_version_request_t xcb_out;
85
86    xcb_out.major_version = major_version;
87    xcb_out.minor_version = minor_version;
88
89    xcb_parts[2].iov_base = (char *) &xcb_out;
90    xcb_parts[2].iov_len = sizeof(xcb_out);
91    xcb_parts[3].iov_base = 0;
92    xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
93
94    xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
95    return xcb_ret;
96}
97
98xcb_present_query_version_reply_t *
99xcb_present_query_version_reply (xcb_connection_t                    *c  /**< */,
100                                 xcb_present_query_version_cookie_t   cookie  /**< */,
101                                 xcb_generic_error_t                **e  /**< */)
102{
103    return (xcb_present_query_version_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
104}
105
106int
107xcb_present_pixmap_sizeof (const void  *_buffer  /**< */,
108                           uint32_t     notifies_len  /**< */)
109{
110    char *xcb_tmp = (char *)_buffer;
111    unsigned int xcb_buffer_len = 0;
112    unsigned int xcb_block_len = 0;
113    unsigned int xcb_pad = 0;
114    unsigned int xcb_align_to = 0;
115
116
117    xcb_block_len += sizeof(xcb_present_pixmap_request_t);
118    xcb_tmp += xcb_block_len;
119    xcb_buffer_len += xcb_block_len;
120    xcb_block_len = 0;
121    /* notifies */
122    xcb_block_len += notifies_len * sizeof(xcb_present_notify_t);
123    xcb_tmp += xcb_block_len;
124    xcb_align_to = ALIGNOF(xcb_present_notify_t);
125    /* insert padding */
126    xcb_pad = -xcb_block_len & (xcb_align_to - 1);
127    xcb_buffer_len += xcb_block_len + xcb_pad;
128    if (0 != xcb_pad) {
129        xcb_tmp += xcb_pad;
130        xcb_pad = 0;
131    }
132    xcb_block_len = 0;
133
134    return xcb_buffer_len;
135}
136
137xcb_void_cookie_t
138xcb_present_pixmap_checked (xcb_connection_t           *c  /**< */,
139                            xcb_window_t                window  /**< */,
140                            xcb_pixmap_t                pixmap  /**< */,
141                            uint32_t                    serial  /**< */,
142                            xcb_xfixes_region_t         valid  /**< */,
143                            xcb_xfixes_region_t         update  /**< */,
144                            int16_t                     x_off  /**< */,
145                            int16_t                     y_off  /**< */,
146                            xcb_randr_crtc_t            target_crtc  /**< */,
147                            xcb_sync_fence_t            wait_fence  /**< */,
148                            xcb_sync_fence_t            idle_fence  /**< */,
149                            uint32_t                    options  /**< */,
150                            uint64_t                    target_msc  /**< */,
151                            uint64_t                    divisor  /**< */,
152                            uint64_t                    remainder  /**< */,
153                            uint32_t                    notifies_len  /**< */,
154                            const xcb_present_notify_t *notifies  /**< */)
155{
156    static const xcb_protocol_request_t xcb_req = {
157        /* count */ 4,
158        /* ext */ &xcb_present_id,
159        /* opcode */ XCB_PRESENT_PIXMAP,
160        /* isvoid */ 1
161    };
162
163    struct iovec xcb_parts[6];
164    xcb_void_cookie_t xcb_ret;
165    xcb_present_pixmap_request_t xcb_out;
166
167    xcb_out.window = window;
168    xcb_out.pixmap = pixmap;
169    xcb_out.serial = serial;
170    xcb_out.valid = valid;
171    xcb_out.update = update;
172    xcb_out.x_off = x_off;
173    xcb_out.y_off = y_off;
174    xcb_out.target_crtc = target_crtc;
175    xcb_out.wait_fence = wait_fence;
176    xcb_out.idle_fence = idle_fence;
177    xcb_out.options = options;
178    memset(xcb_out.pad0, 0, 4);
179    xcb_out.target_msc = target_msc;
180    xcb_out.divisor = divisor;
181    xcb_out.remainder = remainder;
182
183    xcb_parts[2].iov_base = (char *) &xcb_out;
184    xcb_parts[2].iov_len = sizeof(xcb_out);
185    xcb_parts[3].iov_base = 0;
186    xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
187    /* xcb_present_notify_t notifies */
188    xcb_parts[4].iov_base = (char *) notifies;
189    xcb_parts[4].iov_len = notifies_len * sizeof(xcb_present_notify_t);
190    xcb_parts[5].iov_base = 0;
191    xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
192
193    xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
194    return xcb_ret;
195}
196
197xcb_void_cookie_t
198xcb_present_pixmap (xcb_connection_t           *c  /**< */,
199                    xcb_window_t                window  /**< */,
200                    xcb_pixmap_t                pixmap  /**< */,
201                    uint32_t                    serial  /**< */,
202                    xcb_xfixes_region_t         valid  /**< */,
203                    xcb_xfixes_region_t         update  /**< */,
204                    int16_t                     x_off  /**< */,
205                    int16_t                     y_off  /**< */,
206                    xcb_randr_crtc_t            target_crtc  /**< */,
207                    xcb_sync_fence_t            wait_fence  /**< */,
208                    xcb_sync_fence_t            idle_fence  /**< */,
209                    uint32_t                    options  /**< */,
210                    uint64_t                    target_msc  /**< */,
211                    uint64_t                    divisor  /**< */,
212                    uint64_t                    remainder  /**< */,
213                    uint32_t                    notifies_len  /**< */,
214                    const xcb_present_notify_t *notifies  /**< */)
215{
216    static const xcb_protocol_request_t xcb_req = {
217        /* count */ 4,
218        /* ext */ &xcb_present_id,
219        /* opcode */ XCB_PRESENT_PIXMAP,
220        /* isvoid */ 1
221    };
222
223    struct iovec xcb_parts[6];
224    xcb_void_cookie_t xcb_ret;
225    xcb_present_pixmap_request_t xcb_out;
226
227    xcb_out.window = window;
228    xcb_out.pixmap = pixmap;
229    xcb_out.serial = serial;
230    xcb_out.valid = valid;
231    xcb_out.update = update;
232    xcb_out.x_off = x_off;
233    xcb_out.y_off = y_off;
234    xcb_out.target_crtc = target_crtc;
235    xcb_out.wait_fence = wait_fence;
236    xcb_out.idle_fence = idle_fence;
237    xcb_out.options = options;
238    memset(xcb_out.pad0, 0, 4);
239    xcb_out.target_msc = target_msc;
240    xcb_out.divisor = divisor;
241    xcb_out.remainder = remainder;
242
243    xcb_parts[2].iov_base = (char *) &xcb_out;
244    xcb_parts[2].iov_len = sizeof(xcb_out);
245    xcb_parts[3].iov_base = 0;
246    xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
247    /* xcb_present_notify_t notifies */
248    xcb_parts[4].iov_base = (char *) notifies;
249    xcb_parts[4].iov_len = notifies_len * sizeof(xcb_present_notify_t);
250    xcb_parts[5].iov_base = 0;
251    xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
252
253    xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
254    return xcb_ret;
255}
256
257xcb_void_cookie_t
258xcb_present_notify_msc_checked (xcb_connection_t *c  /**< */,
259                                xcb_window_t      window  /**< */,
260                                uint32_t          serial  /**< */,
261                                uint64_t          target_msc  /**< */,
262                                uint64_t          divisor  /**< */,
263                                uint64_t          remainder  /**< */)
264{
265    static const xcb_protocol_request_t xcb_req = {
266        /* count */ 2,
267        /* ext */ &xcb_present_id,
268        /* opcode */ XCB_PRESENT_NOTIFY_MSC,
269        /* isvoid */ 1
270    };
271
272    struct iovec xcb_parts[4];
273    xcb_void_cookie_t xcb_ret;
274    xcb_present_notify_msc_request_t xcb_out;
275
276    xcb_out.window = window;
277    xcb_out.serial = serial;
278    memset(xcb_out.pad0, 0, 4);
279    xcb_out.target_msc = target_msc;
280    xcb_out.divisor = divisor;
281    xcb_out.remainder = remainder;
282
283    xcb_parts[2].iov_base = (char *) &xcb_out;
284    xcb_parts[2].iov_len = sizeof(xcb_out);
285    xcb_parts[3].iov_base = 0;
286    xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
287
288    xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
289    return xcb_ret;
290}
291
292xcb_void_cookie_t
293xcb_present_notify_msc (xcb_connection_t *c  /**< */,
294                        xcb_window_t      window  /**< */,
295                        uint32_t          serial  /**< */,
296                        uint64_t          target_msc  /**< */,
297                        uint64_t          divisor  /**< */,
298                        uint64_t          remainder  /**< */)
299{
300    static const xcb_protocol_request_t xcb_req = {
301        /* count */ 2,
302        /* ext */ &xcb_present_id,
303        /* opcode */ XCB_PRESENT_NOTIFY_MSC,
304        /* isvoid */ 1
305    };
306
307    struct iovec xcb_parts[4];
308    xcb_void_cookie_t xcb_ret;
309    xcb_present_notify_msc_request_t xcb_out;
310
311    xcb_out.window = window;
312    xcb_out.serial = serial;
313    memset(xcb_out.pad0, 0, 4);
314    xcb_out.target_msc = target_msc;
315    xcb_out.divisor = divisor;
316    xcb_out.remainder = remainder;
317
318    xcb_parts[2].iov_base = (char *) &xcb_out;
319    xcb_parts[2].iov_len = sizeof(xcb_out);
320    xcb_parts[3].iov_base = 0;
321    xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
322
323    xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
324    return xcb_ret;
325}
326
327void
328xcb_present_event_next (xcb_present_event_iterator_t *i  /**< */)
329{
330    --i->rem;
331    ++i->data;
332    i->index += sizeof(xcb_present_event_t);
333}
334
335xcb_generic_iterator_t
336xcb_present_event_end (xcb_present_event_iterator_t i  /**< */)
337{
338    xcb_generic_iterator_t ret;
339    ret.data = i.data + i.rem;
340    ret.index = i.index + ((char *) ret.data - (char *) i.data);
341    ret.rem = 0;
342    return ret;
343}
344
345xcb_void_cookie_t
346xcb_present_select_input_checked (xcb_connection_t    *c  /**< */,
347                                  xcb_present_event_t  eid  /**< */,
348                                  xcb_window_t         window  /**< */,
349                                  uint32_t             event_mask  /**< */)
350{
351    static const xcb_protocol_request_t xcb_req = {
352        /* count */ 2,
353        /* ext */ &xcb_present_id,
354        /* opcode */ XCB_PRESENT_SELECT_INPUT,
355        /* isvoid */ 1
356    };
357
358    struct iovec xcb_parts[4];
359    xcb_void_cookie_t xcb_ret;
360    xcb_present_select_input_request_t xcb_out;
361
362    xcb_out.eid = eid;
363    xcb_out.window = window;
364    xcb_out.event_mask = event_mask;
365
366    xcb_parts[2].iov_base = (char *) &xcb_out;
367    xcb_parts[2].iov_len = sizeof(xcb_out);
368    xcb_parts[3].iov_base = 0;
369    xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
370
371    xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
372    return xcb_ret;
373}
374
375xcb_void_cookie_t
376xcb_present_select_input (xcb_connection_t    *c  /**< */,
377                          xcb_present_event_t  eid  /**< */,
378                          xcb_window_t         window  /**< */,
379                          uint32_t             event_mask  /**< */)
380{
381    static const xcb_protocol_request_t xcb_req = {
382        /* count */ 2,
383        /* ext */ &xcb_present_id,
384        /* opcode */ XCB_PRESENT_SELECT_INPUT,
385        /* isvoid */ 1
386    };
387
388    struct iovec xcb_parts[4];
389    xcb_void_cookie_t xcb_ret;
390    xcb_present_select_input_request_t xcb_out;
391
392    xcb_out.eid = eid;
393    xcb_out.window = window;
394    xcb_out.event_mask = event_mask;
395
396    xcb_parts[2].iov_base = (char *) &xcb_out;
397    xcb_parts[2].iov_len = sizeof(xcb_out);
398    xcb_parts[3].iov_base = 0;
399    xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
400
401    xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
402    return xcb_ret;
403}
404
405xcb_present_query_capabilities_cookie_t
406xcb_present_query_capabilities (xcb_connection_t *c  /**< */,
407                                uint32_t          target  /**< */)
408{
409    static const xcb_protocol_request_t xcb_req = {
410        /* count */ 2,
411        /* ext */ &xcb_present_id,
412        /* opcode */ XCB_PRESENT_QUERY_CAPABILITIES,
413        /* isvoid */ 0
414    };
415
416    struct iovec xcb_parts[4];
417    xcb_present_query_capabilities_cookie_t xcb_ret;
418    xcb_present_query_capabilities_request_t xcb_out;
419
420    xcb_out.target = target;
421
422    xcb_parts[2].iov_base = (char *) &xcb_out;
423    xcb_parts[2].iov_len = sizeof(xcb_out);
424    xcb_parts[3].iov_base = 0;
425    xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
426
427    xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
428    return xcb_ret;
429}
430
431xcb_present_query_capabilities_cookie_t
432xcb_present_query_capabilities_unchecked (xcb_connection_t *c  /**< */,
433                                          uint32_t          target  /**< */)
434{
435    static const xcb_protocol_request_t xcb_req = {
436        /* count */ 2,
437        /* ext */ &xcb_present_id,
438        /* opcode */ XCB_PRESENT_QUERY_CAPABILITIES,
439        /* isvoid */ 0
440    };
441
442    struct iovec xcb_parts[4];
443    xcb_present_query_capabilities_cookie_t xcb_ret;
444    xcb_present_query_capabilities_request_t xcb_out;
445
446    xcb_out.target = target;
447
448    xcb_parts[2].iov_base = (char *) &xcb_out;
449    xcb_parts[2].iov_len = sizeof(xcb_out);
450    xcb_parts[3].iov_base = 0;
451    xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
452
453    xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
454    return xcb_ret;
455}
456
457xcb_present_query_capabilities_reply_t *
458xcb_present_query_capabilities_reply (xcb_connection_t                         *c  /**< */,
459                                      xcb_present_query_capabilities_cookie_t   cookie  /**< */,
460                                      xcb_generic_error_t                     **e  /**< */)
461{
462    return (xcb_present_query_capabilities_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
463}
464
465int
466xcb_present_redirect_notify_sizeof (const void  *_buffer  /**< */,
467                                    uint32_t     notifies_len  /**< */)
468{
469    char *xcb_tmp = (char *)_buffer;
470    unsigned int xcb_buffer_len = 0;
471    unsigned int xcb_block_len = 0;
472    unsigned int xcb_pad = 0;
473    unsigned int xcb_align_to = 0;
474
475
476    xcb_block_len += sizeof(xcb_present_redirect_notify_event_t);
477    xcb_tmp += xcb_block_len;
478    xcb_buffer_len += xcb_block_len;
479    xcb_block_len = 0;
480    /* notifies */
481    xcb_block_len += notifies_len * sizeof(xcb_present_notify_t);
482    xcb_tmp += xcb_block_len;
483    xcb_align_to = ALIGNOF(xcb_present_notify_t);
484    /* insert padding */
485    xcb_pad = -xcb_block_len & (xcb_align_to - 1);
486    xcb_buffer_len += xcb_block_len + xcb_pad;
487    if (0 != xcb_pad) {
488        xcb_tmp += xcb_pad;
489        xcb_pad = 0;
490    }
491    xcb_block_len = 0;
492
493    return xcb_buffer_len;
494}
495
496