diff options
Diffstat (limited to 'src/3rdparty/xcb')
-rw-r--r-- | src/3rdparty/xcb/README | 8 | ||||
-rw-r--r-- | src/3rdparty/xcb/include/xcb/randr.h | 175 | ||||
-rw-r--r-- | src/3rdparty/xcb/include/xcb/render.h | 229 | ||||
-rw-r--r-- | src/3rdparty/xcb/include/xcb/shape.h | 43 | ||||
-rw-r--r-- | src/3rdparty/xcb/include/xcb/shm.h | 24 | ||||
-rw-r--r-- | src/3rdparty/xcb/include/xcb/sync.h | 567 | ||||
-rw-r--r-- | src/3rdparty/xcb/include/xcb/xfixes.h | 150 | ||||
-rw-r--r-- | src/3rdparty/xcb/include/xcb/xinerama.h | 157 | ||||
-rw-r--r-- | src/3rdparty/xcb/include/xcb/xinput.h | 9306 | ||||
-rw-r--r-- | src/3rdparty/xcb/libxcb/randr.c | 817 | ||||
-rw-r--r-- | src/3rdparty/xcb/libxcb/render.c | 950 | ||||
-rw-r--r-- | src/3rdparty/xcb/libxcb/shape.c | 85 | ||||
-rw-r--r-- | src/3rdparty/xcb/libxcb/shm.c | 19 | ||||
-rw-r--r-- | src/3rdparty/xcb/libxcb/support_libxcb_versions_where_xcb_sumof_not_available.patch | 273 | ||||
-rw-r--r-- | src/3rdparty/xcb/libxcb/sync.c | 751 | ||||
-rw-r--r-- | src/3rdparty/xcb/libxcb/xfixes.c | 321 | ||||
-rw-r--r-- | src/3rdparty/xcb/libxcb/xinerama.c | 212 | ||||
-rw-r--r-- | src/3rdparty/xcb/libxcb/xinput.c | 14156 | ||||
-rw-r--r-- | src/3rdparty/xcb/libxcb/xkb.c | 39 |
19 files changed, 27571 insertions, 711 deletions
diff --git a/src/3rdparty/xcb/README b/src/3rdparty/xcb/README index d7c8eba294..9e8ea30b51 100644 --- a/src/3rdparty/xcb/README +++ b/src/3rdparty/xcb/README @@ -1,15 +1,19 @@ Contains the header and sources files from selected xcb libraries: - libxcb-1.5 together with xcb-proto-1.6 (sync, xfixes, randr, xinerama sources) + libxcb-1.9.1 together with xcb-proto-1.8 (randr, render, shape, shm, sync, + xfixes, xinerama sources) # libxkbcommon-x11 requires libxcb-xkb >= 1.10 libxcb-1.10 together with xcb-proto-1.10 (xkb sources) + libxcb-1.13 together with xcb-proto-1.13 (xinput sources with removed + Pointer Barriers API and SendExtensionEvent API) libxcb-util-image-0.3.9 libxcb-util-keysyms-0.3.9 libxcb-util-renderutil-0.3.8 libxcb-util-wm-0.3.9 The 'include' directory was obtained by compiling and installing all of the modules. -They have been tested to run also with libxcb 1.5 (the oldest version we support). +When upgrading the bundled xcb headers, they must be tested to run also with the +minimal supported libxcb version, which currently is 1.9.1. Use the -qt-xcb configure option to use the files instead of system xcb libraries. See src/plugins/platforms/xcb/README for details. diff --git a/src/3rdparty/xcb/include/xcb/randr.h b/src/3rdparty/xcb/include/xcb/randr.h index 1035c4043c..4f4f2104cf 100644 --- a/src/3rdparty/xcb/include/xcb/randr.h +++ b/src/3rdparty/xcb/include/xcb/randr.h @@ -1379,6 +1379,9 @@ xcb_randr_screen_size_next (xcb_randr_screen_size_iterator_t *i /**< */); xcb_generic_iterator_t xcb_randr_screen_size_end (xcb_randr_screen_size_iterator_t i /**< */); +int +xcb_randr_refresh_rates_sizeof (const void *_buffer /**< */); + /***************************************************************************** ** @@ -1462,7 +1465,7 @@ xcb_generic_iterator_t xcb_randr_refresh_rates_end (xcb_randr_refresh_rates_iterator_t i /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1487,7 +1490,7 @@ xcb_randr_query_version (xcb_connection_t *c /**< */, uint32_t minor_version /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1546,7 +1549,7 @@ xcb_randr_query_version_reply (xcb_connection_t *c /**< */, xcb_generic_error_t **e /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1579,7 +1582,7 @@ xcb_randr_set_screen_config (xcb_connection_t *c /**< */, uint16_t rate /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1646,7 +1649,7 @@ xcb_randr_set_screen_config_reply (xcb_connection_t *c /** xcb_generic_error_t **e /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1674,7 +1677,7 @@ xcb_randr_select_input_checked (xcb_connection_t *c /**< */, uint16_t enable /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1698,8 +1701,11 @@ xcb_randr_select_input (xcb_connection_t *c /**< */, xcb_window_t window /**< */, uint16_t enable /**< */); +int +xcb_randr_get_screen_info_sizeof (const void *_buffer /**< */); + /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1722,7 +1728,7 @@ xcb_randr_get_screen_info (xcb_connection_t *c /**< */, xcb_window_t window /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1844,7 +1850,7 @@ xcb_randr_get_screen_info_reply (xcb_connection_t *c /**< */ xcb_generic_error_t **e /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1867,7 +1873,7 @@ xcb_randr_get_screen_size_range (xcb_connection_t *c /**< */, xcb_window_t window /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1924,7 +1930,7 @@ xcb_randr_get_screen_size_range_reply (xcb_connection_t xcb_generic_error_t **e /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1958,7 +1964,7 @@ xcb_randr_set_screen_size_checked (xcb_connection_t *c /**< */, uint32_t mm_height /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2031,8 +2037,11 @@ xcb_randr_mode_info_next (xcb_randr_mode_info_iterator_t *i /**< */); xcb_generic_iterator_t xcb_randr_mode_info_end (xcb_randr_mode_info_iterator_t i /**< */); +int +xcb_randr_get_screen_resources_sizeof (const void *_buffer /**< */); + /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2055,7 +2064,7 @@ xcb_randr_get_screen_resources (xcb_connection_t *c /**< */, xcb_window_t window /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2267,8 +2276,11 @@ xcb_randr_get_screen_resources_reply (xcb_connection_t * xcb_randr_get_screen_resources_cookie_t cookie /**< */, xcb_generic_error_t **e /**< */); +int +xcb_randr_get_output_info_sizeof (const void *_buffer /**< */); + /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2293,7 +2305,7 @@ xcb_randr_get_output_info (xcb_connection_t *c /**< */, xcb_timestamp_t config_timestamp /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2507,8 +2519,11 @@ xcb_randr_get_output_info_reply (xcb_connection_t *c /**< */ xcb_randr_get_output_info_cookie_t cookie /**< */, xcb_generic_error_t **e /**< */); +int +xcb_randr_list_output_properties_sizeof (const void *_buffer /**< */); + /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2531,7 +2546,7 @@ xcb_randr_list_output_properties (xcb_connection_t *c /**< */, xcb_randr_output_t output /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2626,8 +2641,11 @@ xcb_randr_list_output_properties_reply (xcb_connection_t xcb_randr_list_output_properties_cookie_t cookie /**< */, xcb_generic_error_t **e /**< */); +int +xcb_randr_query_output_property_sizeof (const void *_buffer /**< */); + /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2652,7 +2670,7 @@ xcb_randr_query_output_property (xcb_connection_t *c /**< */, xcb_atom_t property /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2749,8 +2767,12 @@ xcb_randr_query_output_property_reply (xcb_connection_t xcb_randr_query_output_property_cookie_t cookie /**< */, xcb_generic_error_t **e /**< */); +int +xcb_randr_configure_output_property_sizeof (const void *_buffer /**< */, + uint32_t values_len /**< */); + /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2786,7 +2808,7 @@ xcb_randr_configure_output_property_checked (xcb_connection_t *c /**< */, const int32_t *values /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2818,8 +2840,11 @@ xcb_randr_configure_output_property (xcb_connection_t *c /**< */, uint32_t values_len /**< */, const int32_t *values /**< */); +int +xcb_randr_change_output_property_sizeof (const void *_buffer /**< */); + /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2857,7 +2882,7 @@ xcb_randr_change_output_property_checked (xcb_connection_t *c /**< */, const void *data /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2892,7 +2917,7 @@ xcb_randr_change_output_property (xcb_connection_t *c /**< */, const void *data /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2920,7 +2945,7 @@ xcb_randr_delete_output_property_checked (xcb_connection_t *c /**< */, xcb_atom_t property /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2944,8 +2969,11 @@ xcb_randr_delete_output_property (xcb_connection_t *c /**< */, xcb_randr_output_t output /**< */, xcb_atom_t property /**< */); +int +xcb_randr_get_output_property_sizeof (const void *_buffer /**< */); + /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2980,7 +3008,7 @@ xcb_randr_get_output_property (xcb_connection_t *c /**< */, uint8_t pending /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -3087,8 +3115,12 @@ xcb_randr_get_output_property_reply (xcb_connection_t *c xcb_randr_get_output_property_cookie_t cookie /**< */, xcb_generic_error_t **e /**< */); +int +xcb_randr_create_mode_sizeof (const void *_buffer /**< */, + uint32_t name_len /**< */); + /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -3117,7 +3149,7 @@ xcb_randr_create_mode (xcb_connection_t *c /**< */, const char *name /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -3180,7 +3212,7 @@ xcb_randr_create_mode_reply (xcb_connection_t *c /**< */, xcb_generic_error_t **e /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -3206,7 +3238,7 @@ xcb_randr_destroy_mode_checked (xcb_connection_t *c /**< */, xcb_randr_mode_t mode /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -3229,7 +3261,7 @@ xcb_randr_destroy_mode (xcb_connection_t *c /**< */, xcb_randr_mode_t mode /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -3257,7 +3289,7 @@ xcb_randr_add_output_mode_checked (xcb_connection_t *c /**< */, xcb_randr_mode_t mode /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -3282,7 +3314,7 @@ xcb_randr_add_output_mode (xcb_connection_t *c /**< */, xcb_randr_mode_t mode /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -3310,7 +3342,7 @@ xcb_randr_delete_output_mode_checked (xcb_connection_t *c /**< */, xcb_randr_mode_t mode /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -3334,8 +3366,11 @@ xcb_randr_delete_output_mode (xcb_connection_t *c /**< */, xcb_randr_output_t output /**< */, xcb_randr_mode_t mode /**< */); +int +xcb_randr_get_crtc_info_sizeof (const void *_buffer /**< */); + /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -3360,7 +3395,7 @@ xcb_randr_get_crtc_info (xcb_connection_t *c /**< */, xcb_timestamp_t config_timestamp /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -3496,8 +3531,12 @@ xcb_randr_get_crtc_info_reply (xcb_connection_t *c /**< */, xcb_randr_get_crtc_info_cookie_t cookie /**< */, xcb_generic_error_t **e /**< */); +int +xcb_randr_set_crtc_config_sizeof (const void *_buffer /**< */, + uint32_t outputs_len /**< */); + /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -3536,7 +3575,7 @@ xcb_randr_set_crtc_config (xcb_connection_t *c /**< */, const xcb_randr_output_t *outputs /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -3609,7 +3648,7 @@ xcb_randr_set_crtc_config_reply (xcb_connection_t *c /**< */ xcb_generic_error_t **e /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -3632,7 +3671,7 @@ xcb_randr_get_crtc_gamma_size (xcb_connection_t *c /**< */, xcb_randr_crtc_t crtc /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -3688,8 +3727,11 @@ xcb_randr_get_crtc_gamma_size_reply (xcb_connection_t *c xcb_randr_get_crtc_gamma_size_cookie_t cookie /**< */, xcb_generic_error_t **e /**< */); +int +xcb_randr_get_crtc_gamma_sizeof (const void *_buffer /**< */); + /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -3712,7 +3754,7 @@ xcb_randr_get_crtc_gamma (xcb_connection_t *c /**< */, xcb_randr_crtc_t crtc /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -3885,8 +3927,11 @@ xcb_randr_get_crtc_gamma_reply (xcb_connection_t *c /**< */, xcb_randr_get_crtc_gamma_cookie_t cookie /**< */, xcb_generic_error_t **e /**< */); +int +xcb_randr_set_crtc_gamma_sizeof (const void *_buffer /**< */); + /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -3920,7 +3965,7 @@ xcb_randr_set_crtc_gamma_checked (xcb_connection_t *c /**< */, const uint16_t *blue /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -3950,8 +3995,11 @@ xcb_randr_set_crtc_gamma (xcb_connection_t *c /**< */, const uint16_t *green /**< */, const uint16_t *blue /**< */); +int +xcb_randr_get_screen_resources_current_sizeof (const void *_buffer /**< */); + /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -3974,7 +4022,7 @@ xcb_randr_get_screen_resources_current (xcb_connection_t *c /**< */, xcb_window_t window /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -4186,8 +4234,12 @@ xcb_randr_get_screen_resources_current_reply (xcb_connection_t xcb_randr_get_screen_resources_current_cookie_t cookie /**< */, xcb_generic_error_t **e /**< */); +int +xcb_randr_set_crtc_transform_sizeof (const void *_buffer /**< */, + uint32_t filter_params_len /**< */); + /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -4223,7 +4275,7 @@ xcb_randr_set_crtc_transform_checked (xcb_connection_t *c /**< */, const xcb_render_fixed_t *filter_params /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -4255,8 +4307,11 @@ xcb_randr_set_crtc_transform (xcb_connection_t *c /**< */, uint32_t filter_params_len /**< */, const xcb_render_fixed_t *filter_params /**< */); +int +xcb_randr_get_crtc_transform_sizeof (const void *_buffer /**< */); + /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -4279,7 +4334,7 @@ xcb_randr_get_crtc_transform (xcb_connection_t *c /**< */, xcb_randr_crtc_t crtc /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -4492,7 +4547,7 @@ xcb_randr_get_crtc_transform_reply (xcb_connection_t *c / xcb_generic_error_t **e /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -4515,7 +4570,7 @@ xcb_randr_get_panning (xcb_connection_t *c /**< */, xcb_randr_crtc_t crtc /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -4572,7 +4627,7 @@ xcb_randr_get_panning_reply (xcb_connection_t *c /**< */, xcb_generic_error_t **e /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -4621,7 +4676,7 @@ xcb_randr_set_panning (xcb_connection_t *c /**< */, int16_t border_bottom /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -4704,7 +4759,7 @@ xcb_randr_set_panning_reply (xcb_connection_t *c /**< */, xcb_generic_error_t **e /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -4732,7 +4787,7 @@ xcb_randr_set_output_primary_checked (xcb_connection_t *c /**< */, xcb_randr_output_t output /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -4757,7 +4812,7 @@ xcb_randr_set_output_primary (xcb_connection_t *c /**< */, xcb_randr_output_t output /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -4780,7 +4835,7 @@ xcb_randr_get_output_primary (xcb_connection_t *c /**< */, xcb_window_t window /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * diff --git a/src/3rdparty/xcb/include/xcb/render.h b/src/3rdparty/xcb/include/xcb/render.h index 0f96ca1fbc..eb7f0424d5 100644 --- a/src/3rdparty/xcb/include/xcb/render.h +++ b/src/3rdparty/xcb/include/xcb/render.h @@ -20,7 +20,7 @@ extern "C" { #endif #define XCB_RENDER_MAJOR_VERSION 0 -#define XCB_RENDER_MINOR_VERSION 10 +#define XCB_RENDER_MINOR_VERSION 11 extern xcb_extension_t xcb_render_id; @@ -71,7 +71,22 @@ typedef enum xcb_render_pict_op_t { XCB_RENDER_PICT_OP_CONJOINT_OUT_REVERSE, XCB_RENDER_PICT_OP_CONJOINT_ATOP, XCB_RENDER_PICT_OP_CONJOINT_ATOP_REVERSE, - XCB_RENDER_PICT_OP_CONJOINT_XOR + XCB_RENDER_PICT_OP_CONJOINT_XOR, + XCB_RENDER_PICT_OP_MULTIPLY = 48, + XCB_RENDER_PICT_OP_SCREEN, + XCB_RENDER_PICT_OP_OVERLAY, + XCB_RENDER_PICT_OP_DARKEN, + XCB_RENDER_PICT_OP_LIGHTEN, + XCB_RENDER_PICT_OP_COLOR_DODGE, + XCB_RENDER_PICT_OP_COLOR_BURN, + XCB_RENDER_PICT_OP_HARD_LIGHT, + XCB_RENDER_PICT_OP_SOFT_LIGHT, + XCB_RENDER_PICT_OP_DIFFERENCE, + XCB_RENDER_PICT_OP_EXCLUSION, + XCB_RENDER_PICT_OP_HSL_HUE, + XCB_RENDER_PICT_OP_HSL_SATURATION, + XCB_RENDER_PICT_OP_HSL_COLOR, + XCB_RENDER_PICT_OP_HSL_LUMINOSITY } xcb_render_pict_op_t; typedef enum xcb_render_poly_edge_t { @@ -1453,6 +1468,9 @@ xcb_render_pictvisual_next (xcb_render_pictvisual_iterator_t *i /**< */); xcb_generic_iterator_t xcb_render_pictvisual_end (xcb_render_pictvisual_iterator_t i /**< */); +int +xcb_render_pictdepth_sizeof (const void *_buffer /**< */); + /***************************************************************************** ** @@ -1535,6 +1553,9 @@ xcb_render_pictdepth_next (xcb_render_pictdepth_iterator_t *i /**< */); xcb_generic_iterator_t xcb_render_pictdepth_end (xcb_render_pictdepth_iterator_t i /**< */); +int +xcb_render_pictscreen_sizeof (const void *_buffer /**< */); + /***************************************************************************** ** @@ -1906,7 +1927,7 @@ xcb_generic_iterator_t xcb_render_glyphinfo_end (xcb_render_glyphinfo_iterator_t i /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1931,7 +1952,7 @@ xcb_render_query_version (xcb_connection_t *c /**< */, uint32_t client_minor_version /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1989,8 +2010,11 @@ xcb_render_query_version_reply (xcb_connection_t *c /**< */, xcb_render_query_version_cookie_t cookie /**< */, xcb_generic_error_t **e /**< */); +int +xcb_render_query_pict_formats_sizeof (const void *_buffer /**< */); + /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2011,7 +2035,7 @@ xcb_render_query_pict_formats_cookie_t xcb_render_query_pict_formats (xcb_connection_t *c /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2169,8 +2193,11 @@ xcb_render_query_pict_formats_reply (xcb_connection_t *c xcb_render_query_pict_formats_cookie_t cookie /**< */, xcb_generic_error_t **e /**< */); +int +xcb_render_query_pict_index_values_sizeof (const void *_buffer /**< */); + /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2193,7 +2220,7 @@ xcb_render_query_pict_index_values (xcb_connection_t *c /**< */, xcb_render_pictformat_t format /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2288,8 +2315,11 @@ xcb_render_query_pict_index_values_reply (xcb_connection_t xcb_render_query_pict_index_values_cookie_t cookie /**< */, xcb_generic_error_t **e /**< */); +int +xcb_render_create_picture_sizeof (const void *_buffer /**< */); + /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2323,7 +2353,7 @@ xcb_render_create_picture_checked (xcb_connection_t *c /**< */, const uint32_t *value_list /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2353,8 +2383,11 @@ xcb_render_create_picture (xcb_connection_t *c /**< */, uint32_t value_mask /**< */, const uint32_t *value_list /**< */); +int +xcb_render_change_picture_sizeof (const void *_buffer /**< */); + /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2384,7 +2417,7 @@ xcb_render_change_picture_checked (xcb_connection_t *c /**< */, const uint32_t *value_list /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2410,8 +2443,12 @@ xcb_render_change_picture (xcb_connection_t *c /**< */, uint32_t value_mask /**< */, const uint32_t *value_list /**< */); +int +xcb_render_set_picture_clip_rectangles_sizeof (const void *_buffer /**< */, + uint32_t rectangles_len /**< */); + /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2445,7 +2482,7 @@ xcb_render_set_picture_clip_rectangles_checked (xcb_connection_t *c /**< * const xcb_rectangle_t *rectangles /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2476,7 +2513,7 @@ xcb_render_set_picture_clip_rectangles (xcb_connection_t *c /**< */, const xcb_rectangle_t *rectangles /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2502,7 +2539,7 @@ xcb_render_free_picture_checked (xcb_connection_t *c /**< */, xcb_render_picture_t picture /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2525,7 +2562,7 @@ xcb_render_free_picture (xcb_connection_t *c /**< */, xcb_render_picture_t picture /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2573,7 +2610,7 @@ xcb_render_composite_checked (xcb_connection_t *c /**< */, uint16_t height /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2617,8 +2654,12 @@ xcb_render_composite (xcb_connection_t *c /**< */, uint16_t width /**< */, uint16_t height /**< */); +int +xcb_render_trapezoids_sizeof (const void *_buffer /**< */, + uint32_t traps_len /**< */); + /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2658,7 +2699,7 @@ xcb_render_trapezoids_checked (xcb_connection_t *c /**< */, const xcb_render_trapezoid_t *traps /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2694,8 +2735,12 @@ xcb_render_trapezoids (xcb_connection_t *c /**< */, uint32_t traps_len /**< */, const xcb_render_trapezoid_t *traps /**< */); +int +xcb_render_triangles_sizeof (const void *_buffer /**< */, + uint32_t triangles_len /**< */); + /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2735,7 +2780,7 @@ xcb_render_triangles_checked (xcb_connection_t *c /**< */, const xcb_render_triangle_t *triangles /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2771,8 +2816,12 @@ xcb_render_triangles (xcb_connection_t *c /**< */, uint32_t triangles_len /**< */, const xcb_render_triangle_t *triangles /**< */); +int +xcb_render_tri_strip_sizeof (const void *_buffer /**< */, + uint32_t points_len /**< */); + /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2812,7 +2861,7 @@ xcb_render_tri_strip_checked (xcb_connection_t *c /**< */, const xcb_render_pointfix_t *points /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2848,8 +2897,12 @@ xcb_render_tri_strip (xcb_connection_t *c /**< */, uint32_t points_len /**< */, const xcb_render_pointfix_t *points /**< */); +int +xcb_render_tri_fan_sizeof (const void *_buffer /**< */, + uint32_t points_len /**< */); + /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2889,7 +2942,7 @@ xcb_render_tri_fan_checked (xcb_connection_t *c /**< */, const xcb_render_pointfix_t *points /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2926,7 +2979,7 @@ xcb_render_tri_fan (xcb_connection_t *c /**< */, const xcb_render_pointfix_t *points /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2954,7 +3007,7 @@ xcb_render_create_glyph_set_checked (xcb_connection_t *c /**< */, xcb_render_pictformat_t format /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2979,7 +3032,7 @@ xcb_render_create_glyph_set (xcb_connection_t *c /**< */, xcb_render_pictformat_t format /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -3007,7 +3060,7 @@ xcb_render_reference_glyph_set_checked (xcb_connection_t *c /**< */, xcb_render_glyphset_t existing /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -3032,7 +3085,7 @@ xcb_render_reference_glyph_set (xcb_connection_t *c /**< */, xcb_render_glyphset_t existing /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -3058,7 +3111,7 @@ xcb_render_free_glyph_set_checked (xcb_connection_t *c /**< */, xcb_render_glyphset_t glyphset /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -3080,8 +3133,12 @@ xcb_void_cookie_t xcb_render_free_glyph_set (xcb_connection_t *c /**< */, xcb_render_glyphset_t glyphset /**< */); +int +xcb_render_add_glyphs_sizeof (const void *_buffer /**< */, + uint32_t data_len /**< */); + /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -3117,7 +3174,7 @@ xcb_render_add_glyphs_checked (xcb_connection_t *c /**< */, const uint8_t *data /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -3149,8 +3206,12 @@ xcb_render_add_glyphs (xcb_connection_t *c /**< */, uint32_t data_len /**< */, const uint8_t *data /**< */); +int +xcb_render_free_glyphs_sizeof (const void *_buffer /**< */, + uint32_t glyphs_len /**< */); + /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -3180,7 +3241,7 @@ xcb_render_free_glyphs_checked (xcb_connection_t *c /**< */, const xcb_render_glyph_t *glyphs /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -3206,8 +3267,12 @@ xcb_render_free_glyphs (xcb_connection_t *c /**< */, uint32_t glyphs_len /**< */, const xcb_render_glyph_t *glyphs /**< */); +int +xcb_render_composite_glyphs_8_sizeof (const void *_buffer /**< */, + uint32_t glyphcmds_len /**< */); + /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -3249,7 +3314,7 @@ xcb_render_composite_glyphs_8_checked (xcb_connection_t *c /**< */, const uint8_t *glyphcmds /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -3287,8 +3352,12 @@ xcb_render_composite_glyphs_8 (xcb_connection_t *c /**< */, uint32_t glyphcmds_len /**< */, const uint8_t *glyphcmds /**< */); +int +xcb_render_composite_glyphs_16_sizeof (const void *_buffer /**< */, + uint32_t glyphcmds_len /**< */); + /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -3330,7 +3399,7 @@ xcb_render_composite_glyphs_16_checked (xcb_connection_t *c /**< */, const uint8_t *glyphcmds /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -3368,8 +3437,12 @@ xcb_render_composite_glyphs_16 (xcb_connection_t *c /**< */, uint32_t glyphcmds_len /**< */, const uint8_t *glyphcmds /**< */); +int +xcb_render_composite_glyphs_32_sizeof (const void *_buffer /**< */, + uint32_t glyphcmds_len /**< */); + /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -3411,7 +3484,7 @@ xcb_render_composite_glyphs_32_checked (xcb_connection_t *c /**< */, const uint8_t *glyphcmds /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -3449,8 +3522,12 @@ xcb_render_composite_glyphs_32 (xcb_connection_t *c /**< */, uint32_t glyphcmds_len /**< */, const uint8_t *glyphcmds /**< */); +int +xcb_render_fill_rectangles_sizeof (const void *_buffer /**< */, + uint32_t rects_len /**< */); + /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -3484,7 +3561,7 @@ xcb_render_fill_rectangles_checked (xcb_connection_t *c /**< */, const xcb_rectangle_t *rects /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -3515,7 +3592,7 @@ xcb_render_fill_rectangles (xcb_connection_t *c /**< */, const xcb_rectangle_t *rects /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -3547,7 +3624,7 @@ xcb_render_create_cursor_checked (xcb_connection_t *c /**< */, uint16_t y /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -3619,7 +3696,7 @@ xcb_generic_iterator_t xcb_render_transform_end (xcb_render_transform_iterator_t i /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -3647,7 +3724,7 @@ xcb_render_set_picture_transform_checked (xcb_connection_t *c /**< */, xcb_render_transform_t transform /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -3671,8 +3748,11 @@ xcb_render_set_picture_transform (xcb_connection_t *c /**< */, xcb_render_picture_t picture /**< */, xcb_render_transform_t transform /**< */); +int +xcb_render_query_filters_sizeof (const void *_buffer /**< */); + /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -3695,7 +3775,7 @@ xcb_render_query_filters (xcb_connection_t *c /**< */, xcb_drawable_t drawable /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -3816,8 +3896,12 @@ xcb_render_query_filters_reply (xcb_connection_t *c /**< */, xcb_render_query_filters_cookie_t cookie /**< */, xcb_generic_error_t **e /**< */); +int +xcb_render_set_picture_filter_sizeof (const void *_buffer /**< */, + uint32_t values_len /**< */); + /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -3851,7 +3935,7 @@ xcb_render_set_picture_filter_checked (xcb_connection_t *c /**< */, const xcb_render_fixed_t *values /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -3924,8 +4008,12 @@ xcb_render_animcursorelt_next (xcb_render_animcursorelt_iterator_t *i /**< */); xcb_generic_iterator_t xcb_render_animcursorelt_end (xcb_render_animcursorelt_iterator_t i /**< */); +int +xcb_render_create_anim_cursor_sizeof (const void *_buffer /**< */, + uint32_t cursors_len /**< */); + /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -3955,7 +4043,7 @@ xcb_render_create_anim_cursor_checked (xcb_connection_t *c /**< const xcb_render_animcursorelt_t *cursors /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -4067,8 +4155,12 @@ xcb_render_trap_next (xcb_render_trap_iterator_t *i /**< */); xcb_generic_iterator_t xcb_render_trap_end (xcb_render_trap_iterator_t i /**< */); +int +xcb_render_add_traps_sizeof (const void *_buffer /**< */, + uint32_t traps_len /**< */); + /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -4102,7 +4194,7 @@ xcb_render_add_traps_checked (xcb_connection_t *c /**< */, const xcb_render_trap_t *traps /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -4133,7 +4225,7 @@ xcb_render_add_traps (xcb_connection_t *c /**< */, const xcb_render_trap_t *traps /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -4161,7 +4253,7 @@ xcb_render_create_solid_fill_checked (xcb_connection_t *c /**< */, xcb_render_color_t color /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -4185,8 +4277,11 @@ xcb_render_create_solid_fill (xcb_connection_t *c /**< */, xcb_render_picture_t picture /**< */, xcb_render_color_t color /**< */); +int +xcb_render_create_linear_gradient_sizeof (const void *_buffer /**< */); + /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -4222,7 +4317,7 @@ xcb_render_create_linear_gradient_checked (xcb_connection_t *c /**< */, const xcb_render_color_t *colors /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -4254,8 +4349,11 @@ xcb_render_create_linear_gradient (xcb_connection_t *c /**< */, const xcb_render_fixed_t *stops /**< */, const xcb_render_color_t *colors /**< */); +int +xcb_render_create_radial_gradient_sizeof (const void *_buffer /**< */); + /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -4295,7 +4393,7 @@ xcb_render_create_radial_gradient_checked (xcb_connection_t *c /**< */, const xcb_render_color_t *colors /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -4331,8 +4429,11 @@ xcb_render_create_radial_gradient (xcb_connection_t *c /**< */, const xcb_render_fixed_t *stops /**< */, const xcb_render_color_t *colors /**< */); +int +xcb_render_create_conical_gradient_sizeof (const void *_buffer /**< */); + /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -4368,7 +4469,7 @@ xcb_render_create_conical_gradient_checked (xcb_connection_t *c /**< */ const xcb_render_color_t *colors /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * diff --git a/src/3rdparty/xcb/include/xcb/shape.h b/src/3rdparty/xcb/include/xcb/shape.h index 107d2ff748..63919b42c7 100644 --- a/src/3rdparty/xcb/include/xcb/shape.h +++ b/src/3rdparty/xcb/include/xcb/shape.h @@ -393,7 +393,7 @@ xcb_generic_iterator_t xcb_shape_kind_end (xcb_shape_kind_iterator_t i /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -414,7 +414,7 @@ xcb_shape_query_version_cookie_t xcb_shape_query_version (xcb_connection_t *c /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -468,8 +468,12 @@ xcb_shape_query_version_reply (xcb_connection_t *c /**< */, xcb_shape_query_version_cookie_t cookie /**< */, xcb_generic_error_t **e /**< */); +int +xcb_shape_rectangles_sizeof (const void *_buffer /**< */, + uint32_t rectangles_len /**< */); + /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -509,7 +513,7 @@ xcb_shape_rectangles_checked (xcb_connection_t *c /**< */, const xcb_rectangle_t *rectangles /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -546,7 +550,7 @@ xcb_shape_rectangles (xcb_connection_t *c /**< */, const xcb_rectangle_t *rectangles /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -582,7 +586,7 @@ xcb_shape_mask_checked (xcb_connection_t *c /**< */, xcb_pixmap_t source_bitmap /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -615,7 +619,7 @@ xcb_shape_mask (xcb_connection_t *c /**< */, xcb_pixmap_t source_bitmap /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -653,7 +657,7 @@ xcb_shape_combine_checked (xcb_connection_t *c /**< */, xcb_window_t source_window /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -688,7 +692,7 @@ xcb_shape_combine (xcb_connection_t *c /**< */, xcb_window_t source_window /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -720,7 +724,7 @@ xcb_shape_offset_checked (xcb_connection_t *c /**< */, int16_t y_offset /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -749,7 +753,7 @@ xcb_shape_offset (xcb_connection_t *c /**< */, int16_t y_offset /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -772,7 +776,7 @@ xcb_shape_query_extents (xcb_connection_t *c /**< */, xcb_window_t destination_window /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -829,7 +833,7 @@ xcb_shape_query_extents_reply (xcb_connection_t *c /**< */, xcb_generic_error_t **e /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -857,7 +861,7 @@ xcb_shape_select_input_checked (xcb_connection_t *c /**< */, uint8_t enable /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -882,7 +886,7 @@ xcb_shape_select_input (xcb_connection_t *c /**< */, uint8_t enable /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -905,7 +909,7 @@ xcb_shape_input_selected (xcb_connection_t *c /**< */, xcb_window_t destination_window /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -961,8 +965,11 @@ xcb_shape_input_selected_reply (xcb_connection_t *c /**< */, xcb_shape_input_selected_cookie_t cookie /**< */, xcb_generic_error_t **e /**< */); +int +xcb_shape_get_rectangles_sizeof (const void *_buffer /**< */); + /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -987,7 +994,7 @@ xcb_shape_get_rectangles (xcb_connection_t *c /**< */, xcb_shape_kind_t source_kind /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * diff --git a/src/3rdparty/xcb/include/xcb/shm.h b/src/3rdparty/xcb/include/xcb/shm.h index bcb60d81f1..315f37e9b9 100644 --- a/src/3rdparty/xcb/include/xcb/shm.h +++ b/src/3rdparty/xcb/include/xcb/shm.h @@ -255,7 +255,7 @@ xcb_generic_iterator_t xcb_shm_seg_end (xcb_shm_seg_iterator_t i /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -276,7 +276,7 @@ xcb_shm_query_version_cookie_t xcb_shm_query_version (xcb_connection_t *c /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -331,7 +331,7 @@ xcb_shm_query_version_reply (xcb_connection_t *c /**< */, xcb_generic_error_t **e /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -361,7 +361,7 @@ xcb_shm_attach_checked (xcb_connection_t *c /**< */, uint8_t read_only /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -388,7 +388,7 @@ xcb_shm_attach (xcb_connection_t *c /**< */, uint8_t read_only /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -414,7 +414,7 @@ xcb_shm_detach_checked (xcb_connection_t *c /**< */, xcb_shm_seg_t shmseg /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -437,7 +437,7 @@ xcb_shm_detach (xcb_connection_t *c /**< */, xcb_shm_seg_t shmseg /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -491,7 +491,7 @@ xcb_shm_put_image_checked (xcb_connection_t *c /**< */, uint32_t offset /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -542,7 +542,7 @@ xcb_shm_put_image (xcb_connection_t *c /**< */, uint32_t offset /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -581,7 +581,7 @@ xcb_shm_get_image (xcb_connection_t *c /**< */, uint32_t offset /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -654,7 +654,7 @@ xcb_shm_get_image_reply (xcb_connection_t *c /**< */, xcb_generic_error_t **e /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -692,7 +692,7 @@ xcb_shm_create_pixmap_checked (xcb_connection_t *c /**< */, uint32_t offset /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * diff --git a/src/3rdparty/xcb/include/xcb/sync.h b/src/3rdparty/xcb/include/xcb/sync.h index 50665c2865..3d0069d7ef 100644 --- a/src/3rdparty/xcb/include/xcb/sync.h +++ b/src/3rdparty/xcb/include/xcb/sync.h @@ -20,7 +20,7 @@ extern "C" { #endif #define XCB_SYNC_MAJOR_VERSION 3 -#define XCB_SYNC_MINOR_VERSION 0 +#define XCB_SYNC_MINOR_VERSION 1 extern xcb_extension_t xcb_sync_id; @@ -52,6 +52,17 @@ typedef struct xcb_sync_counter_iterator_t { int index; /**< */ } xcb_sync_counter_iterator_t; +typedef uint32_t xcb_sync_fence_t; + +/** + * @brief xcb_sync_fence_iterator_t + **/ +typedef struct xcb_sync_fence_iterator_t { + xcb_sync_fence_t *data; /**< */ + int rem; /**< */ + int index; /**< */ +} xcb_sync_fence_iterator_t; + typedef enum xcb_sync_testtype_t { XCB_SYNC_TESTTYPE_POSITIVE_TRANSITION, XCB_SYNC_TESTTYPE_NEGATIVE_TRANSITION, @@ -458,6 +469,104 @@ typedef struct xcb_sync_get_priority_reply_t { int32_t priority; /**< */ } xcb_sync_get_priority_reply_t; +/** Opcode for xcb_sync_create_fence. */ +#define XCB_SYNC_CREATE_FENCE 14 + +/** + * @brief xcb_sync_create_fence_request_t + **/ +typedef struct xcb_sync_create_fence_request_t { + uint8_t major_opcode; /**< */ + uint8_t minor_opcode; /**< */ + uint16_t length; /**< */ + xcb_drawable_t drawable; /**< */ + xcb_sync_fence_t fence; /**< */ + uint8_t initially_triggered; /**< */ +} xcb_sync_create_fence_request_t; + +/** Opcode for xcb_sync_trigger_fence. */ +#define XCB_SYNC_TRIGGER_FENCE 15 + +/** + * @brief xcb_sync_trigger_fence_request_t + **/ +typedef struct xcb_sync_trigger_fence_request_t { + uint8_t major_opcode; /**< */ + uint8_t minor_opcode; /**< */ + uint16_t length; /**< */ + xcb_sync_fence_t fence; /**< */ +} xcb_sync_trigger_fence_request_t; + +/** Opcode for xcb_sync_reset_fence. */ +#define XCB_SYNC_RESET_FENCE 16 + +/** + * @brief xcb_sync_reset_fence_request_t + **/ +typedef struct xcb_sync_reset_fence_request_t { + uint8_t major_opcode; /**< */ + uint8_t minor_opcode; /**< */ + uint16_t length; /**< */ + xcb_sync_fence_t fence; /**< */ +} xcb_sync_reset_fence_request_t; + +/** Opcode for xcb_sync_destroy_fence. */ +#define XCB_SYNC_DESTROY_FENCE 17 + +/** + * @brief xcb_sync_destroy_fence_request_t + **/ +typedef struct xcb_sync_destroy_fence_request_t { + uint8_t major_opcode; /**< */ + uint8_t minor_opcode; /**< */ + uint16_t length; /**< */ + xcb_sync_fence_t fence; /**< */ +} xcb_sync_destroy_fence_request_t; + +/** + * @brief xcb_sync_query_fence_cookie_t + **/ +typedef struct xcb_sync_query_fence_cookie_t { + unsigned int sequence; /**< */ +} xcb_sync_query_fence_cookie_t; + +/** Opcode for xcb_sync_query_fence. */ +#define XCB_SYNC_QUERY_FENCE 18 + +/** + * @brief xcb_sync_query_fence_request_t + **/ +typedef struct xcb_sync_query_fence_request_t { + uint8_t major_opcode; /**< */ + uint8_t minor_opcode; /**< */ + uint16_t length; /**< */ + xcb_sync_fence_t fence; /**< */ +} xcb_sync_query_fence_request_t; + +/** + * @brief xcb_sync_query_fence_reply_t + **/ +typedef struct xcb_sync_query_fence_reply_t { + uint8_t response_type; /**< */ + uint8_t pad0; /**< */ + uint16_t sequence; /**< */ + uint32_t length; /**< */ + uint8_t triggered; /**< */ + uint8_t pad1[23]; /**< */ +} xcb_sync_query_fence_reply_t; + +/** Opcode for xcb_sync_await_fence. */ +#define XCB_SYNC_AWAIT_FENCE 19 + +/** + * @brief xcb_sync_await_fence_request_t + **/ +typedef struct xcb_sync_await_fence_request_t { + uint8_t major_opcode; /**< */ + uint8_t minor_opcode; /**< */ + uint16_t length; /**< */ +} xcb_sync_await_fence_request_t; + /** Opcode for xcb_sync_counter_notify. */ #define XCB_SYNC_COUNTER_NOTIFY 0 @@ -583,6 +692,49 @@ xcb_sync_counter_end (xcb_sync_counter_iterator_t i /**< */); /** * Get the next element of the iterator + * @param i Pointer to a xcb_sync_fence_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_sync_fence_t) + */ + +/***************************************************************************** + ** + ** void xcb_sync_fence_next + ** + ** @param xcb_sync_fence_iterator_t *i + ** @returns void + ** + *****************************************************************************/ + +void +xcb_sync_fence_next (xcb_sync_fence_iterator_t *i /**< */); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_sync_fence_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ + +/***************************************************************************** + ** + ** xcb_generic_iterator_t xcb_sync_fence_end + ** + ** @param xcb_sync_fence_iterator_t i + ** @returns xcb_generic_iterator_t + ** + *****************************************************************************/ + +xcb_generic_iterator_t +xcb_sync_fence_end (xcb_sync_fence_iterator_t i /**< */); + +/** + * Get the next element of the iterator * @param i Pointer to a xcb_sync_int64_iterator_t * * Get the next element in the iterator. The member rem is @@ -624,6 +776,9 @@ xcb_sync_int64_next (xcb_sync_int64_iterator_t *i /**< */); xcb_generic_iterator_t xcb_sync_int64_end (xcb_sync_int64_iterator_t i /**< */); +int +xcb_sync_systemcounter_sizeof (const void *_buffer /**< */); + /***************************************************************************** ** @@ -793,7 +948,7 @@ xcb_generic_iterator_t xcb_sync_waitcondition_end (xcb_sync_waitcondition_iterator_t i /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -818,7 +973,7 @@ xcb_sync_initialize (xcb_connection_t *c /**< */, uint8_t desired_minor_version /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -876,8 +1031,11 @@ xcb_sync_initialize_reply (xcb_connection_t *c /**< */, xcb_sync_initialize_cookie_t cookie /**< */, xcb_generic_error_t **e /**< */); +int +xcb_sync_list_system_counters_sizeof (const void *_buffer /**< */); + /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -898,7 +1056,7 @@ xcb_sync_list_system_counters_cookie_t xcb_sync_list_system_counters (xcb_connection_t *c /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -979,7 +1137,7 @@ xcb_sync_list_system_counters_reply (xcb_connection_t *c xcb_generic_error_t **e /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1007,7 +1165,7 @@ xcb_sync_create_counter_checked (xcb_connection_t *c /**< */, xcb_sync_int64_t initial_value /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1032,7 +1190,7 @@ xcb_sync_create_counter (xcb_connection_t *c /**< */, xcb_sync_int64_t initial_value /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1058,7 +1216,7 @@ xcb_sync_destroy_counter_checked (xcb_connection_t *c /**< */, xcb_sync_counter_t counter /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1081,7 +1239,7 @@ xcb_sync_destroy_counter (xcb_connection_t *c /**< */, xcb_sync_counter_t counter /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1104,7 +1262,7 @@ xcb_sync_query_counter (xcb_connection_t *c /**< */, xcb_sync_counter_t counter /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1160,8 +1318,12 @@ xcb_sync_query_counter_reply (xcb_connection_t *c /**< */, xcb_sync_query_counter_cookie_t cookie /**< */, xcb_generic_error_t **e /**< */); +int +xcb_sync_await_sizeof (const void *_buffer /**< */, + uint32_t wait_list_len /**< */); + /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1189,7 +1351,7 @@ xcb_sync_await_checked (xcb_connection_t *c /**< */, const xcb_sync_waitcondition_t *wait_list /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1214,7 +1376,7 @@ xcb_sync_await (xcb_connection_t *c /**< */, const xcb_sync_waitcondition_t *wait_list /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1242,7 +1404,7 @@ xcb_sync_change_counter_checked (xcb_connection_t *c /**< */, xcb_sync_int64_t amount /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1267,7 +1429,7 @@ xcb_sync_change_counter (xcb_connection_t *c /**< */, xcb_sync_int64_t amount /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1295,7 +1457,7 @@ xcb_sync_set_counter_checked (xcb_connection_t *c /**< */, xcb_sync_int64_t value /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1319,8 +1481,11 @@ xcb_sync_set_counter (xcb_connection_t *c /**< */, xcb_sync_counter_t counter /**< */, xcb_sync_int64_t value /**< */); +int +xcb_sync_create_alarm_sizeof (const void *_buffer /**< */); + /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1350,7 +1515,7 @@ xcb_sync_create_alarm_checked (xcb_connection_t *c /**< */, const uint32_t *value_list /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1376,8 +1541,11 @@ xcb_sync_create_alarm (xcb_connection_t *c /**< */, uint32_t value_mask /**< */, const uint32_t *value_list /**< */); +int +xcb_sync_change_alarm_sizeof (const void *_buffer /**< */); + /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1407,7 +1575,7 @@ xcb_sync_change_alarm_checked (xcb_connection_t *c /**< */, const uint32_t *value_list /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1434,7 +1602,7 @@ xcb_sync_change_alarm (xcb_connection_t *c /**< */, const uint32_t *value_list /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1460,7 +1628,7 @@ xcb_sync_destroy_alarm_checked (xcb_connection_t *c /**< */, xcb_sync_alarm_t alarm /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1483,7 +1651,7 @@ xcb_sync_destroy_alarm (xcb_connection_t *c /**< */, xcb_sync_alarm_t alarm /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1506,7 +1674,7 @@ xcb_sync_query_alarm (xcb_connection_t *c /**< */, xcb_sync_alarm_t alarm /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1563,7 +1731,7 @@ xcb_sync_query_alarm_reply (xcb_connection_t *c /**< */, xcb_generic_error_t **e /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1591,7 +1759,7 @@ xcb_sync_set_priority_checked (xcb_connection_t *c /**< */, int32_t priority /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1616,7 +1784,7 @@ xcb_sync_set_priority (xcb_connection_t *c /**< */, int32_t priority /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1639,7 +1807,7 @@ xcb_sync_get_priority (xcb_connection_t *c /**< */, uint32_t id /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1695,6 +1863,347 @@ xcb_sync_get_priority_reply (xcb_connection_t *c /**< */, xcb_sync_get_priority_cookie_t cookie /**< */, xcb_generic_error_t **e /**< */); +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will not cause + * a reply to be generated. Any returned error will be + * saved for handling by xcb_request_check(). + */ + +/***************************************************************************** + ** + ** xcb_void_cookie_t xcb_sync_create_fence_checked + ** + ** @param xcb_connection_t *c + ** @param xcb_drawable_t drawable + ** @param xcb_sync_fence_t fence + ** @param uint8_t initially_triggered + ** @returns xcb_void_cookie_t + ** + *****************************************************************************/ + +xcb_void_cookie_t +xcb_sync_create_fence_checked (xcb_connection_t *c /**< */, + xcb_drawable_t drawable /**< */, + xcb_sync_fence_t fence /**< */, + uint8_t initially_triggered /**< */); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ + +/***************************************************************************** + ** + ** xcb_void_cookie_t xcb_sync_create_fence + ** + ** @param xcb_connection_t *c + ** @param xcb_drawable_t drawable + ** @param xcb_sync_fence_t fence + ** @param uint8_t initially_triggered + ** @returns xcb_void_cookie_t + ** + *****************************************************************************/ + +xcb_void_cookie_t +xcb_sync_create_fence (xcb_connection_t *c /**< */, + xcb_drawable_t drawable /**< */, + xcb_sync_fence_t fence /**< */, + uint8_t initially_triggered /**< */); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will not cause + * a reply to be generated. Any returned error will be + * saved for handling by xcb_request_check(). + */ + +/***************************************************************************** + ** + ** xcb_void_cookie_t xcb_sync_trigger_fence_checked + ** + ** @param xcb_connection_t *c + ** @param xcb_sync_fence_t fence + ** @returns xcb_void_cookie_t + ** + *****************************************************************************/ + +xcb_void_cookie_t +xcb_sync_trigger_fence_checked (xcb_connection_t *c /**< */, + xcb_sync_fence_t fence /**< */); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ + +/***************************************************************************** + ** + ** xcb_void_cookie_t xcb_sync_trigger_fence + ** + ** @param xcb_connection_t *c + ** @param xcb_sync_fence_t fence + ** @returns xcb_void_cookie_t + ** + *****************************************************************************/ + +xcb_void_cookie_t +xcb_sync_trigger_fence (xcb_connection_t *c /**< */, + xcb_sync_fence_t fence /**< */); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will not cause + * a reply to be generated. Any returned error will be + * saved for handling by xcb_request_check(). + */ + +/***************************************************************************** + ** + ** xcb_void_cookie_t xcb_sync_reset_fence_checked + ** + ** @param xcb_connection_t *c + ** @param xcb_sync_fence_t fence + ** @returns xcb_void_cookie_t + ** + *****************************************************************************/ + +xcb_void_cookie_t +xcb_sync_reset_fence_checked (xcb_connection_t *c /**< */, + xcb_sync_fence_t fence /**< */); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ + +/***************************************************************************** + ** + ** xcb_void_cookie_t xcb_sync_reset_fence + ** + ** @param xcb_connection_t *c + ** @param xcb_sync_fence_t fence + ** @returns xcb_void_cookie_t + ** + *****************************************************************************/ + +xcb_void_cookie_t +xcb_sync_reset_fence (xcb_connection_t *c /**< */, + xcb_sync_fence_t fence /**< */); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will not cause + * a reply to be generated. Any returned error will be + * saved for handling by xcb_request_check(). + */ + +/***************************************************************************** + ** + ** xcb_void_cookie_t xcb_sync_destroy_fence_checked + ** + ** @param xcb_connection_t *c + ** @param xcb_sync_fence_t fence + ** @returns xcb_void_cookie_t + ** + *****************************************************************************/ + +xcb_void_cookie_t +xcb_sync_destroy_fence_checked (xcb_connection_t *c /**< */, + xcb_sync_fence_t fence /**< */); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ + +/***************************************************************************** + ** + ** xcb_void_cookie_t xcb_sync_destroy_fence + ** + ** @param xcb_connection_t *c + ** @param xcb_sync_fence_t fence + ** @returns xcb_void_cookie_t + ** + *****************************************************************************/ + +xcb_void_cookie_t +xcb_sync_destroy_fence (xcb_connection_t *c /**< */, + xcb_sync_fence_t fence /**< */); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ + +/***************************************************************************** + ** + ** xcb_sync_query_fence_cookie_t xcb_sync_query_fence + ** + ** @param xcb_connection_t *c + ** @param xcb_sync_fence_t fence + ** @returns xcb_sync_query_fence_cookie_t + ** + *****************************************************************************/ + +xcb_sync_query_fence_cookie_t +xcb_sync_query_fence (xcb_connection_t *c /**< */, + xcb_sync_fence_t fence /**< */); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will cause + * a reply to be generated. Any returned error will be + * placed in the event queue. + */ + +/***************************************************************************** + ** + ** xcb_sync_query_fence_cookie_t xcb_sync_query_fence_unchecked + ** + ** @param xcb_connection_t *c + ** @param xcb_sync_fence_t fence + ** @returns xcb_sync_query_fence_cookie_t + ** + *****************************************************************************/ + +xcb_sync_query_fence_cookie_t +xcb_sync_query_fence_unchecked (xcb_connection_t *c /**< */, + xcb_sync_fence_t fence /**< */); + +/** + * Return the reply + * @param c The connection + * @param cookie The cookie + * @param e The xcb_generic_error_t supplied + * + * Returns the reply of the request asked by + * + * The parameter @p e supplied to this function must be NULL if + * xcb_sync_query_fence_unchecked(). is used. + * Otherwise, it stores the error if any. + * + * The returned value must be freed by the caller using free(). + */ + +/***************************************************************************** + ** + ** xcb_sync_query_fence_reply_t * xcb_sync_query_fence_reply + ** + ** @param xcb_connection_t *c + ** @param xcb_sync_query_fence_cookie_t cookie + ** @param xcb_generic_error_t **e + ** @returns xcb_sync_query_fence_reply_t * + ** + *****************************************************************************/ + +xcb_sync_query_fence_reply_t * +xcb_sync_query_fence_reply (xcb_connection_t *c /**< */, + xcb_sync_query_fence_cookie_t cookie /**< */, + xcb_generic_error_t **e /**< */); + +int +xcb_sync_await_fence_sizeof (const void *_buffer /**< */, + uint32_t fence_list_len /**< */); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will not cause + * a reply to be generated. Any returned error will be + * saved for handling by xcb_request_check(). + */ + +/***************************************************************************** + ** + ** xcb_void_cookie_t xcb_sync_await_fence_checked + ** + ** @param xcb_connection_t *c + ** @param uint32_t fence_list_len + ** @param const xcb_sync_fence_t *fence_list + ** @returns xcb_void_cookie_t + ** + *****************************************************************************/ + +xcb_void_cookie_t +xcb_sync_await_fence_checked (xcb_connection_t *c /**< */, + uint32_t fence_list_len /**< */, + const xcb_sync_fence_t *fence_list /**< */); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ + +/***************************************************************************** + ** + ** xcb_void_cookie_t xcb_sync_await_fence + ** + ** @param xcb_connection_t *c + ** @param uint32_t fence_list_len + ** @param const xcb_sync_fence_t *fence_list + ** @returns xcb_void_cookie_t + ** + *****************************************************************************/ + +xcb_void_cookie_t +xcb_sync_await_fence (xcb_connection_t *c /**< */, + uint32_t fence_list_len /**< */, + const xcb_sync_fence_t *fence_list /**< */); + #ifdef __cplusplus } diff --git a/src/3rdparty/xcb/include/xcb/xfixes.h b/src/3rdparty/xcb/include/xcb/xfixes.h index 4d7eb0900a..b67aa85135 100644 --- a/src/3rdparty/xcb/include/xcb/xfixes.h +++ b/src/3rdparty/xcb/include/xcb/xfixes.h @@ -683,7 +683,7 @@ typedef struct xcb_xfixes_show_cursor_request_t { } xcb_xfixes_show_cursor_request_t; /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -708,7 +708,7 @@ xcb_xfixes_query_version (xcb_connection_t *c /**< */, uint32_t client_minor_version /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -767,7 +767,7 @@ xcb_xfixes_query_version_reply (xcb_connection_t *c /**< */, xcb_generic_error_t **e /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -799,7 +799,7 @@ xcb_xfixes_change_save_set_checked (xcb_connection_t *c /**< */, xcb_window_t window /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -828,7 +828,7 @@ xcb_xfixes_change_save_set (xcb_connection_t *c /**< */, xcb_window_t window /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -858,7 +858,7 @@ xcb_xfixes_select_selection_input_checked (xcb_connection_t *c /**< */, uint32_t event_mask /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -885,7 +885,7 @@ xcb_xfixes_select_selection_input (xcb_connection_t *c /**< */, uint32_t event_mask /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -913,7 +913,7 @@ xcb_xfixes_select_cursor_input_checked (xcb_connection_t *c /**< */, uint32_t event_mask /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -937,8 +937,11 @@ xcb_xfixes_select_cursor_input (xcb_connection_t *c /**< */, xcb_window_t window /**< */, uint32_t event_mask /**< */); +int +xcb_xfixes_get_cursor_image_sizeof (const void *_buffer /**< */); + /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -959,7 +962,7 @@ xcb_xfixes_get_cursor_image_cookie_t xcb_xfixes_get_cursor_image (xcb_connection_t *c /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1095,8 +1098,12 @@ xcb_xfixes_region_next (xcb_xfixes_region_iterator_t *i /**< */); xcb_generic_iterator_t xcb_xfixes_region_end (xcb_xfixes_region_iterator_t i /**< */); +int +xcb_xfixes_create_region_sizeof (const void *_buffer /**< */, + uint32_t rectangles_len /**< */); + /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1126,7 +1133,7 @@ xcb_xfixes_create_region_checked (xcb_connection_t *c /**< */, const xcb_rectangle_t *rectangles /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1153,7 +1160,7 @@ xcb_xfixes_create_region (xcb_connection_t *c /**< */, const xcb_rectangle_t *rectangles /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1181,7 +1188,7 @@ xcb_xfixes_create_region_from_bitmap_checked (xcb_connection_t *c /**< */, xcb_pixmap_t bitmap /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1206,7 +1213,7 @@ xcb_xfixes_create_region_from_bitmap (xcb_connection_t *c /**< */, xcb_pixmap_t bitmap /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1236,7 +1243,7 @@ xcb_xfixes_create_region_from_window_checked (xcb_connection_t *c /**< */, xcb_shape_kind_t kind /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1263,7 +1270,7 @@ xcb_xfixes_create_region_from_window (xcb_connection_t *c /**< */, xcb_shape_kind_t kind /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1291,7 +1298,7 @@ xcb_xfixes_create_region_from_gc_checked (xcb_connection_t *c /**< */, xcb_gcontext_t gc /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1316,7 +1323,7 @@ xcb_xfixes_create_region_from_gc (xcb_connection_t *c /**< */, xcb_gcontext_t gc /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1344,7 +1351,7 @@ xcb_xfixes_create_region_from_picture_checked (xcb_connection_t *c /**< */, xcb_render_picture_t picture /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1369,7 +1376,7 @@ xcb_xfixes_create_region_from_picture (xcb_connection_t *c /**< */, xcb_render_picture_t picture /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1395,7 +1402,7 @@ xcb_xfixes_destroy_region_checked (xcb_connection_t *c /**< */, xcb_xfixes_region_t region /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1417,8 +1424,12 @@ xcb_void_cookie_t xcb_xfixes_destroy_region (xcb_connection_t *c /**< */, xcb_xfixes_region_t region /**< */); +int +xcb_xfixes_set_region_sizeof (const void *_buffer /**< */, + uint32_t rectangles_len /**< */); + /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1448,7 +1459,7 @@ xcb_xfixes_set_region_checked (xcb_connection_t *c /**< */, const xcb_rectangle_t *rectangles /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1475,7 +1486,7 @@ xcb_xfixes_set_region (xcb_connection_t *c /**< */, const xcb_rectangle_t *rectangles /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1503,7 +1514,7 @@ xcb_xfixes_copy_region_checked (xcb_connection_t *c /**< */, xcb_xfixes_region_t destination /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1528,7 +1539,7 @@ xcb_xfixes_copy_region (xcb_connection_t *c /**< */, xcb_xfixes_region_t destination /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1558,7 +1569,7 @@ xcb_xfixes_union_region_checked (xcb_connection_t *c /**< */, xcb_xfixes_region_t destination /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1585,7 +1596,7 @@ xcb_xfixes_union_region (xcb_connection_t *c /**< */, xcb_xfixes_region_t destination /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1615,7 +1626,7 @@ xcb_xfixes_intersect_region_checked (xcb_connection_t *c /**< */, xcb_xfixes_region_t destination /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1642,7 +1653,7 @@ xcb_xfixes_intersect_region (xcb_connection_t *c /**< */, xcb_xfixes_region_t destination /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1672,7 +1683,7 @@ xcb_xfixes_subtract_region_checked (xcb_connection_t *c /**< */, xcb_xfixes_region_t destination /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1699,7 +1710,7 @@ xcb_xfixes_subtract_region (xcb_connection_t *c /**< */, xcb_xfixes_region_t destination /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1729,7 +1740,7 @@ xcb_xfixes_invert_region_checked (xcb_connection_t *c /**< */, xcb_xfixes_region_t destination /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1756,7 +1767,7 @@ xcb_xfixes_invert_region (xcb_connection_t *c /**< */, xcb_xfixes_region_t destination /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1786,7 +1797,7 @@ xcb_xfixes_translate_region_checked (xcb_connection_t *c /**< */, int16_t dy /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1813,7 +1824,7 @@ xcb_xfixes_translate_region (xcb_connection_t *c /**< */, int16_t dy /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1841,7 +1852,7 @@ xcb_xfixes_region_extents_checked (xcb_connection_t *c /**< */, xcb_xfixes_region_t destination /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1865,8 +1876,11 @@ xcb_xfixes_region_extents (xcb_connection_t *c /**< */, xcb_xfixes_region_t source /**< */, xcb_xfixes_region_t destination /**< */); +int +xcb_xfixes_fetch_region_sizeof (const void *_buffer /**< */); + /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1889,7 +1903,7 @@ xcb_xfixes_fetch_region (xcb_connection_t *c /**< */, xcb_xfixes_region_t region /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -1985,7 +1999,7 @@ xcb_xfixes_fetch_region_reply (xcb_connection_t *c /**< */, xcb_generic_error_t **e /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2017,7 +2031,7 @@ xcb_xfixes_set_gc_clip_region_checked (xcb_connection_t *c /**< */, int16_t y_origin /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2046,7 +2060,7 @@ xcb_xfixes_set_gc_clip_region (xcb_connection_t *c /**< */, int16_t y_origin /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2080,7 +2094,7 @@ xcb_xfixes_set_window_shape_region_checked (xcb_connection_t *c /**< */, xcb_xfixes_region_t region /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2111,7 +2125,7 @@ xcb_xfixes_set_window_shape_region (xcb_connection_t *c /**< */, xcb_xfixes_region_t region /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2143,7 +2157,7 @@ xcb_xfixes_set_picture_clip_region_checked (xcb_connection_t *c /**< */, int16_t y_origin /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2171,8 +2185,11 @@ xcb_xfixes_set_picture_clip_region (xcb_connection_t *c /**< */, int16_t x_origin /**< */, int16_t y_origin /**< */); +int +xcb_xfixes_set_cursor_name_sizeof (const void *_buffer /**< */); + /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2202,7 +2219,7 @@ xcb_xfixes_set_cursor_name_checked (xcb_connection_t *c /**< */, const char *name /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2228,8 +2245,11 @@ xcb_xfixes_set_cursor_name (xcb_connection_t *c /**< */, uint16_t nbytes /**< */, const char *name /**< */); +int +xcb_xfixes_get_cursor_name_sizeof (const void *_buffer /**< */); + /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2252,7 +2272,7 @@ xcb_xfixes_get_cursor_name (xcb_connection_t *c /**< */, xcb_cursor_t cursor /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2347,8 +2367,11 @@ xcb_xfixes_get_cursor_name_reply (xcb_connection_t *c /**< xcb_xfixes_get_cursor_name_cookie_t cookie /**< */, xcb_generic_error_t **e /**< */); +int +xcb_xfixes_get_cursor_image_and_name_sizeof (const void *_buffer /**< */); + /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2369,7 +2392,7 @@ xcb_xfixes_get_cursor_image_and_name_cookie_t xcb_xfixes_get_cursor_image_and_name (xcb_connection_t *c /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2502,7 +2525,7 @@ xcb_xfixes_get_cursor_image_and_name_reply (xcb_connection_t xcb_generic_error_t **e /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2530,7 +2553,7 @@ xcb_xfixes_change_cursor_checked (xcb_connection_t *c /**< */, xcb_cursor_t destination /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2554,8 +2577,11 @@ xcb_xfixes_change_cursor (xcb_connection_t *c /**< */, xcb_cursor_t source /**< */, xcb_cursor_t destination /**< */); +int +xcb_xfixes_change_cursor_by_name_sizeof (const void *_buffer /**< */); + /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2585,7 +2611,7 @@ xcb_xfixes_change_cursor_by_name_checked (xcb_connection_t *c /**< */, const char *name /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2612,7 +2638,7 @@ xcb_xfixes_change_cursor_by_name (xcb_connection_t *c /**< */, const char *name /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2648,7 +2674,7 @@ xcb_xfixes_expand_region_checked (xcb_connection_t *c /**< */, uint16_t bottom /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2681,7 +2707,7 @@ xcb_xfixes_expand_region (xcb_connection_t *c /**< */, uint16_t bottom /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2707,7 +2733,7 @@ xcb_xfixes_hide_cursor_checked (xcb_connection_t *c /**< */, xcb_window_t window /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2730,7 +2756,7 @@ xcb_xfixes_hide_cursor (xcb_connection_t *c /**< */, xcb_window_t window /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * @@ -2756,7 +2782,7 @@ xcb_xfixes_show_cursor_checked (xcb_connection_t *c /**< */, xcb_window_t window /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * diff --git a/src/3rdparty/xcb/include/xcb/xinerama.h b/src/3rdparty/xcb/include/xcb/xinerama.h index 74da5458d2..f18a96c791 100644 --- a/src/3rdparty/xcb/include/xcb/xinerama.h +++ b/src/3rdparty/xcb/include/xcb/xinerama.h @@ -21,7 +21,7 @@ extern "C" { #define XCB_XINERAMA_MAJOR_VERSION 1 #define XCB_XINERAMA_MINOR_VERSION 1 - + extern xcb_extension_t xcb_xinerama_id; /** @@ -246,12 +246,12 @@ typedef struct xcb_xinerama_query_screens_reply_t { /***************************************************************************** ** ** void xcb_xinerama_screen_info_next - ** + ** ** @param xcb_xinerama_screen_info_iterator_t *i ** @returns void ** *****************************************************************************/ - + void xcb_xinerama_screen_info_next (xcb_xinerama_screen_info_iterator_t *i /**< */); @@ -268,47 +268,47 @@ xcb_xinerama_screen_info_next (xcb_xinerama_screen_info_iterator_t *i /**< */); /***************************************************************************** ** ** xcb_generic_iterator_t xcb_xinerama_screen_info_end - ** + ** ** @param xcb_xinerama_screen_info_iterator_t i ** @returns xcb_generic_iterator_t ** *****************************************************************************/ - + xcb_generic_iterator_t xcb_xinerama_screen_info_end (xcb_xinerama_screen_info_iterator_t i /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * * Delivers a request to the X server. - * + * */ /***************************************************************************** ** ** xcb_xinerama_query_version_cookie_t xcb_xinerama_query_version - ** + ** ** @param xcb_connection_t *c ** @param uint8_t major ** @param uint8_t minor ** @returns xcb_xinerama_query_version_cookie_t ** *****************************************************************************/ - + xcb_xinerama_query_version_cookie_t xcb_xinerama_query_version (xcb_connection_t *c /**< */, uint8_t major /**< */, uint8_t minor /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * * Delivers a request to the X server. - * + * * This form can be used only if the request will cause * a reply to be generated. Any returned error will be * placed in the event queue. @@ -317,14 +317,14 @@ xcb_xinerama_query_version (xcb_connection_t *c /**< */, /***************************************************************************** ** ** xcb_xinerama_query_version_cookie_t xcb_xinerama_query_version_unchecked - ** + ** ** @param xcb_connection_t *c ** @param uint8_t major ** @param uint8_t minor ** @returns xcb_xinerama_query_version_cookie_t ** *****************************************************************************/ - + xcb_xinerama_query_version_cookie_t xcb_xinerama_query_version_unchecked (xcb_connection_t *c /**< */, uint8_t major /**< */, @@ -337,7 +337,7 @@ xcb_xinerama_query_version_unchecked (xcb_connection_t *c /**< */, * @param e The xcb_generic_error_t supplied * * Returns the reply of the request asked by - * + * * The parameter @p e supplied to this function must be NULL if * xcb_xinerama_query_version_unchecked(). is used. * Otherwise, it stores the error if any. @@ -348,49 +348,49 @@ xcb_xinerama_query_version_unchecked (xcb_connection_t *c /**< */, /***************************************************************************** ** ** xcb_xinerama_query_version_reply_t * xcb_xinerama_query_version_reply - ** + ** ** @param xcb_connection_t *c ** @param xcb_xinerama_query_version_cookie_t cookie ** @param xcb_generic_error_t **e ** @returns xcb_xinerama_query_version_reply_t * ** *****************************************************************************/ - + xcb_xinerama_query_version_reply_t * xcb_xinerama_query_version_reply (xcb_connection_t *c /**< */, xcb_xinerama_query_version_cookie_t cookie /**< */, xcb_generic_error_t **e /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * * Delivers a request to the X server. - * + * */ /***************************************************************************** ** ** xcb_xinerama_get_state_cookie_t xcb_xinerama_get_state - ** + ** ** @param xcb_connection_t *c ** @param xcb_window_t window ** @returns xcb_xinerama_get_state_cookie_t ** *****************************************************************************/ - + xcb_xinerama_get_state_cookie_t xcb_xinerama_get_state (xcb_connection_t *c /**< */, xcb_window_t window /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * * Delivers a request to the X server. - * + * * This form can be used only if the request will cause * a reply to be generated. Any returned error will be * placed in the event queue. @@ -399,13 +399,13 @@ xcb_xinerama_get_state (xcb_connection_t *c /**< */, /***************************************************************************** ** ** xcb_xinerama_get_state_cookie_t xcb_xinerama_get_state_unchecked - ** + ** ** @param xcb_connection_t *c ** @param xcb_window_t window ** @returns xcb_xinerama_get_state_cookie_t ** *****************************************************************************/ - + xcb_xinerama_get_state_cookie_t xcb_xinerama_get_state_unchecked (xcb_connection_t *c /**< */, xcb_window_t window /**< */); @@ -417,7 +417,7 @@ xcb_xinerama_get_state_unchecked (xcb_connection_t *c /**< */, * @param e The xcb_generic_error_t supplied * * Returns the reply of the request asked by - * + * * The parameter @p e supplied to this function must be NULL if * xcb_xinerama_get_state_unchecked(). is used. * Otherwise, it stores the error if any. @@ -428,49 +428,49 @@ xcb_xinerama_get_state_unchecked (xcb_connection_t *c /**< */, /***************************************************************************** ** ** xcb_xinerama_get_state_reply_t * xcb_xinerama_get_state_reply - ** + ** ** @param xcb_connection_t *c ** @param xcb_xinerama_get_state_cookie_t cookie ** @param xcb_generic_error_t **e ** @returns xcb_xinerama_get_state_reply_t * ** *****************************************************************************/ - + xcb_xinerama_get_state_reply_t * xcb_xinerama_get_state_reply (xcb_connection_t *c /**< */, xcb_xinerama_get_state_cookie_t cookie /**< */, xcb_generic_error_t **e /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * * Delivers a request to the X server. - * + * */ /***************************************************************************** ** ** xcb_xinerama_get_screen_count_cookie_t xcb_xinerama_get_screen_count - ** + ** ** @param xcb_connection_t *c ** @param xcb_window_t window ** @returns xcb_xinerama_get_screen_count_cookie_t ** *****************************************************************************/ - + xcb_xinerama_get_screen_count_cookie_t xcb_xinerama_get_screen_count (xcb_connection_t *c /**< */, xcb_window_t window /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * * Delivers a request to the X server. - * + * * This form can be used only if the request will cause * a reply to be generated. Any returned error will be * placed in the event queue. @@ -479,13 +479,13 @@ xcb_xinerama_get_screen_count (xcb_connection_t *c /**< */, /***************************************************************************** ** ** xcb_xinerama_get_screen_count_cookie_t xcb_xinerama_get_screen_count_unchecked - ** + ** ** @param xcb_connection_t *c ** @param xcb_window_t window ** @returns xcb_xinerama_get_screen_count_cookie_t ** *****************************************************************************/ - + xcb_xinerama_get_screen_count_cookie_t xcb_xinerama_get_screen_count_unchecked (xcb_connection_t *c /**< */, xcb_window_t window /**< */); @@ -497,7 +497,7 @@ xcb_xinerama_get_screen_count_unchecked (xcb_connection_t *c /**< */, * @param e The xcb_generic_error_t supplied * * Returns the reply of the request asked by - * + * * The parameter @p e supplied to this function must be NULL if * xcb_xinerama_get_screen_count_unchecked(). is used. * Otherwise, it stores the error if any. @@ -508,51 +508,51 @@ xcb_xinerama_get_screen_count_unchecked (xcb_connection_t *c /**< */, /***************************************************************************** ** ** xcb_xinerama_get_screen_count_reply_t * xcb_xinerama_get_screen_count_reply - ** + ** ** @param xcb_connection_t *c ** @param xcb_xinerama_get_screen_count_cookie_t cookie ** @param xcb_generic_error_t **e ** @returns xcb_xinerama_get_screen_count_reply_t * ** *****************************************************************************/ - + xcb_xinerama_get_screen_count_reply_t * xcb_xinerama_get_screen_count_reply (xcb_connection_t *c /**< */, xcb_xinerama_get_screen_count_cookie_t cookie /**< */, xcb_generic_error_t **e /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * * Delivers a request to the X server. - * + * */ /***************************************************************************** ** ** xcb_xinerama_get_screen_size_cookie_t xcb_xinerama_get_screen_size - ** + ** ** @param xcb_connection_t *c ** @param xcb_window_t window ** @param uint32_t screen ** @returns xcb_xinerama_get_screen_size_cookie_t ** *****************************************************************************/ - + xcb_xinerama_get_screen_size_cookie_t xcb_xinerama_get_screen_size (xcb_connection_t *c /**< */, xcb_window_t window /**< */, uint32_t screen /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * * Delivers a request to the X server. - * + * * This form can be used only if the request will cause * a reply to be generated. Any returned error will be * placed in the event queue. @@ -561,14 +561,14 @@ xcb_xinerama_get_screen_size (xcb_connection_t *c /**< */, /***************************************************************************** ** ** xcb_xinerama_get_screen_size_cookie_t xcb_xinerama_get_screen_size_unchecked - ** + ** ** @param xcb_connection_t *c ** @param xcb_window_t window ** @param uint32_t screen ** @returns xcb_xinerama_get_screen_size_cookie_t ** *****************************************************************************/ - + xcb_xinerama_get_screen_size_cookie_t xcb_xinerama_get_screen_size_unchecked (xcb_connection_t *c /**< */, xcb_window_t window /**< */, @@ -581,7 +581,7 @@ xcb_xinerama_get_screen_size_unchecked (xcb_connection_t *c /**< */, * @param e The xcb_generic_error_t supplied * * Returns the reply of the request asked by - * + * * The parameter @p e supplied to this function must be NULL if * xcb_xinerama_get_screen_size_unchecked(). is used. * Otherwise, it stores the error if any. @@ -592,47 +592,47 @@ xcb_xinerama_get_screen_size_unchecked (xcb_connection_t *c /**< */, /***************************************************************************** ** ** xcb_xinerama_get_screen_size_reply_t * xcb_xinerama_get_screen_size_reply - ** + ** ** @param xcb_connection_t *c ** @param xcb_xinerama_get_screen_size_cookie_t cookie ** @param xcb_generic_error_t **e ** @returns xcb_xinerama_get_screen_size_reply_t * ** *****************************************************************************/ - + xcb_xinerama_get_screen_size_reply_t * xcb_xinerama_get_screen_size_reply (xcb_connection_t *c /**< */, xcb_xinerama_get_screen_size_cookie_t cookie /**< */, xcb_generic_error_t **e /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * * Delivers a request to the X server. - * + * */ /***************************************************************************** ** ** xcb_xinerama_is_active_cookie_t xcb_xinerama_is_active - ** + ** ** @param xcb_connection_t *c ** @returns xcb_xinerama_is_active_cookie_t ** *****************************************************************************/ - + xcb_xinerama_is_active_cookie_t xcb_xinerama_is_active (xcb_connection_t *c /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * * Delivers a request to the X server. - * + * * This form can be used only if the request will cause * a reply to be generated. Any returned error will be * placed in the event queue. @@ -641,12 +641,12 @@ xcb_xinerama_is_active (xcb_connection_t *c /**< */); /***************************************************************************** ** ** xcb_xinerama_is_active_cookie_t xcb_xinerama_is_active_unchecked - ** + ** ** @param xcb_connection_t *c ** @returns xcb_xinerama_is_active_cookie_t ** *****************************************************************************/ - + xcb_xinerama_is_active_cookie_t xcb_xinerama_is_active_unchecked (xcb_connection_t *c /**< */); @@ -657,7 +657,7 @@ xcb_xinerama_is_active_unchecked (xcb_connection_t *c /**< */); * @param e The xcb_generic_error_t supplied * * Returns the reply of the request asked by - * + * * The parameter @p e supplied to this function must be NULL if * xcb_xinerama_is_active_unchecked(). is used. * Otherwise, it stores the error if any. @@ -668,47 +668,50 @@ xcb_xinerama_is_active_unchecked (xcb_connection_t *c /**< */); /***************************************************************************** ** ** xcb_xinerama_is_active_reply_t * xcb_xinerama_is_active_reply - ** + ** ** @param xcb_connection_t *c ** @param xcb_xinerama_is_active_cookie_t cookie ** @param xcb_generic_error_t **e ** @returns xcb_xinerama_is_active_reply_t * ** *****************************************************************************/ - + xcb_xinerama_is_active_reply_t * xcb_xinerama_is_active_reply (xcb_connection_t *c /**< */, xcb_xinerama_is_active_cookie_t cookie /**< */, xcb_generic_error_t **e /**< */); +int +xcb_xinerama_query_screens_sizeof (const void *_buffer /**< */); + /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * * Delivers a request to the X server. - * + * */ /***************************************************************************** ** ** xcb_xinerama_query_screens_cookie_t xcb_xinerama_query_screens - ** + ** ** @param xcb_connection_t *c ** @returns xcb_xinerama_query_screens_cookie_t ** *****************************************************************************/ - + xcb_xinerama_query_screens_cookie_t xcb_xinerama_query_screens (xcb_connection_t *c /**< */); /** - * Delivers a request to the X server + * * @param c The connection * @return A cookie * * Delivers a request to the X server. - * + * * This form can be used only if the request will cause * a reply to be generated. Any returned error will be * placed in the event queue. @@ -717,12 +720,12 @@ xcb_xinerama_query_screens (xcb_connection_t *c /**< */); /***************************************************************************** ** ** xcb_xinerama_query_screens_cookie_t xcb_xinerama_query_screens_unchecked - ** + ** ** @param xcb_connection_t *c ** @returns xcb_xinerama_query_screens_cookie_t ** *****************************************************************************/ - + xcb_xinerama_query_screens_cookie_t xcb_xinerama_query_screens_unchecked (xcb_connection_t *c /**< */); @@ -730,12 +733,12 @@ xcb_xinerama_query_screens_unchecked (xcb_connection_t *c /**< */); /***************************************************************************** ** ** xcb_xinerama_screen_info_t * xcb_xinerama_query_screens_screen_info - ** + ** ** @param const xcb_xinerama_query_screens_reply_t *R ** @returns xcb_xinerama_screen_info_t * ** *****************************************************************************/ - + xcb_xinerama_screen_info_t * xcb_xinerama_query_screens_screen_info (const xcb_xinerama_query_screens_reply_t *R /**< */); @@ -743,12 +746,12 @@ xcb_xinerama_query_screens_screen_info (const xcb_xinerama_query_screens_reply_t /***************************************************************************** ** ** int xcb_xinerama_query_screens_screen_info_length - ** + ** ** @param const xcb_xinerama_query_screens_reply_t *R ** @returns int ** *****************************************************************************/ - + int xcb_xinerama_query_screens_screen_info_length (const xcb_xinerama_query_screens_reply_t *R /**< */); @@ -756,12 +759,12 @@ xcb_xinerama_query_screens_screen_info_length (const xcb_xinerama_query_screens_ /***************************************************************************** ** ** xcb_xinerama_screen_info_iterator_t xcb_xinerama_query_screens_screen_info_iterator - ** + ** ** @param const xcb_xinerama_query_screens_reply_t *R ** @returns xcb_xinerama_screen_info_iterator_t ** *****************************************************************************/ - + xcb_xinerama_screen_info_iterator_t xcb_xinerama_query_screens_screen_info_iterator (const xcb_xinerama_query_screens_reply_t *R /**< */); @@ -772,7 +775,7 @@ xcb_xinerama_query_screens_screen_info_iterator (const xcb_xinerama_query_screen * @param e The xcb_generic_error_t supplied * * Returns the reply of the request asked by - * + * * The parameter @p e supplied to this function must be NULL if * xcb_xinerama_query_screens_unchecked(). is used. * Otherwise, it stores the error if any. @@ -783,14 +786,14 @@ xcb_xinerama_query_screens_screen_info_iterator (const xcb_xinerama_query_screen /***************************************************************************** ** ** xcb_xinerama_query_screens_reply_t * xcb_xinerama_query_screens_reply - ** + ** ** @param xcb_connection_t *c ** @param xcb_xinerama_query_screens_cookie_t cookie ** @param xcb_generic_error_t **e ** @returns xcb_xinerama_query_screens_reply_t * ** *****************************************************************************/ - + xcb_xinerama_query_screens_reply_t * xcb_xinerama_query_screens_reply (xcb_connection_t *c /**< */, xcb_xinerama_query_screens_cookie_t cookie /**< */, diff --git a/src/3rdparty/xcb/include/xcb/xinput.h b/src/3rdparty/xcb/include/xcb/xinput.h new file mode 100644 index 0000000000..9420047c71 --- /dev/null +++ b/src/3rdparty/xcb/include/xcb/xinput.h @@ -0,0 +1,9306 @@ +/* + * This file generated automatically from xinput.xml by c_client.py. + * Edit at your peril. + */ + +/** + * @defgroup XCB_Input_API XCB Input API + * @brief Input XCB Protocol Implementation. + * @{ + **/ + +#ifndef __XINPUT_H +#define __XINPUT_H + +#include "xcb.h" +#include "xfixes.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define XCB_INPUT_MAJOR_VERSION 2 +#define XCB_INPUT_MINOR_VERSION 3 + +extern xcb_extension_t xcb_input_id; + +typedef uint32_t xcb_input_event_class_t; + +/** + * @brief xcb_input_event_class_iterator_t + **/ +typedef struct xcb_input_event_class_iterator_t { + xcb_input_event_class_t *data; + int rem; + int index; +} xcb_input_event_class_iterator_t; + +typedef uint8_t xcb_input_key_code_t; + +/** + * @brief xcb_input_key_code_iterator_t + **/ +typedef struct xcb_input_key_code_iterator_t { + xcb_input_key_code_t *data; + int rem; + int index; +} xcb_input_key_code_iterator_t; + +typedef uint16_t xcb_input_device_id_t; + +/** + * @brief xcb_input_device_id_iterator_t + **/ +typedef struct xcb_input_device_id_iterator_t { + xcb_input_device_id_t *data; + int rem; + int index; +} xcb_input_device_id_iterator_t; + +typedef int32_t xcb_input_fp1616_t; + +/** + * @brief xcb_input_fp1616_iterator_t + **/ +typedef struct xcb_input_fp1616_iterator_t { + xcb_input_fp1616_t *data; + int rem; + int index; +} xcb_input_fp1616_iterator_t; + +/** + * @brief xcb_input_fp3232_t + **/ +typedef struct xcb_input_fp3232_t { + int32_t integral; + uint32_t frac; +} xcb_input_fp3232_t; + +/** + * @brief xcb_input_fp3232_iterator_t + **/ +typedef struct xcb_input_fp3232_iterator_t { + xcb_input_fp3232_t *data; + int rem; + int index; +} xcb_input_fp3232_iterator_t; + +/** + * @brief xcb_input_get_extension_version_cookie_t + **/ +typedef struct xcb_input_get_extension_version_cookie_t { + unsigned int sequence; +} xcb_input_get_extension_version_cookie_t; + +/** Opcode for xcb_input_get_extension_version. */ +#define XCB_INPUT_GET_EXTENSION_VERSION 1 + +/** + * @brief xcb_input_get_extension_version_request_t + **/ +typedef struct xcb_input_get_extension_version_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + uint16_t name_len; + uint8_t pad0[2]; +} xcb_input_get_extension_version_request_t; + +/** + * @brief xcb_input_get_extension_version_reply_t + **/ +typedef struct xcb_input_get_extension_version_reply_t { + uint8_t response_type; + uint8_t xi_reply_type; + uint16_t sequence; + uint32_t length; + uint16_t server_major; + uint16_t server_minor; + uint8_t present; + uint8_t pad0[19]; +} xcb_input_get_extension_version_reply_t; + +typedef enum xcb_input_device_use_t { + XCB_INPUT_DEVICE_USE_IS_X_POINTER = 0, + XCB_INPUT_DEVICE_USE_IS_X_KEYBOARD = 1, + XCB_INPUT_DEVICE_USE_IS_X_EXTENSION_DEVICE = 2, + XCB_INPUT_DEVICE_USE_IS_X_EXTENSION_KEYBOARD = 3, + XCB_INPUT_DEVICE_USE_IS_X_EXTENSION_POINTER = 4 +} xcb_input_device_use_t; + +typedef enum xcb_input_input_class_t { + XCB_INPUT_INPUT_CLASS_KEY = 0, + XCB_INPUT_INPUT_CLASS_BUTTON = 1, + XCB_INPUT_INPUT_CLASS_VALUATOR = 2, + XCB_INPUT_INPUT_CLASS_FEEDBACK = 3, + XCB_INPUT_INPUT_CLASS_PROXIMITY = 4, + XCB_INPUT_INPUT_CLASS_FOCUS = 5, + XCB_INPUT_INPUT_CLASS_OTHER = 6 +} xcb_input_input_class_t; + +typedef enum xcb_input_valuator_mode_t { + XCB_INPUT_VALUATOR_MODE_RELATIVE = 0, + XCB_INPUT_VALUATOR_MODE_ABSOLUTE = 1 +} xcb_input_valuator_mode_t; + +/** + * @brief xcb_input_device_info_t + **/ +typedef struct xcb_input_device_info_t { + xcb_atom_t device_type; + uint8_t device_id; + uint8_t num_class_info; + uint8_t device_use; + uint8_t pad0; +} xcb_input_device_info_t; + +/** + * @brief xcb_input_device_info_iterator_t + **/ +typedef struct xcb_input_device_info_iterator_t { + xcb_input_device_info_t *data; + int rem; + int index; +} xcb_input_device_info_iterator_t; + +/** + * @brief xcb_input_key_info_t + **/ +typedef struct xcb_input_key_info_t { + uint8_t class_id; + uint8_t len; + xcb_input_key_code_t min_keycode; + xcb_input_key_code_t max_keycode; + uint16_t num_keys; + uint8_t pad0[2]; +} xcb_input_key_info_t; + +/** + * @brief xcb_input_key_info_iterator_t + **/ +typedef struct xcb_input_key_info_iterator_t { + xcb_input_key_info_t *data; + int rem; + int index; +} xcb_input_key_info_iterator_t; + +/** + * @brief xcb_input_button_info_t + **/ +typedef struct xcb_input_button_info_t { + uint8_t class_id; + uint8_t len; + uint16_t num_buttons; +} xcb_input_button_info_t; + +/** + * @brief xcb_input_button_info_iterator_t + **/ +typedef struct xcb_input_button_info_iterator_t { + xcb_input_button_info_t *data; + int rem; + int index; +} xcb_input_button_info_iterator_t; + +/** + * @brief xcb_input_axis_info_t + **/ +typedef struct xcb_input_axis_info_t { + uint32_t resolution; + int32_t minimum; + int32_t maximum; +} xcb_input_axis_info_t; + +/** + * @brief xcb_input_axis_info_iterator_t + **/ +typedef struct xcb_input_axis_info_iterator_t { + xcb_input_axis_info_t *data; + int rem; + int index; +} xcb_input_axis_info_iterator_t; + +/** + * @brief xcb_input_valuator_info_t + **/ +typedef struct xcb_input_valuator_info_t { + uint8_t class_id; + uint8_t len; + uint8_t axes_len; + uint8_t mode; + uint32_t motion_size; +} xcb_input_valuator_info_t; + +/** + * @brief xcb_input_valuator_info_iterator_t + **/ +typedef struct xcb_input_valuator_info_iterator_t { + xcb_input_valuator_info_t *data; + int rem; + int index; +} xcb_input_valuator_info_iterator_t; + +/** + * @brief xcb_input_input_info_info_t + **/ +typedef struct xcb_input_input_info_info_t { + struct { + xcb_input_key_code_t min_keycode; + xcb_input_key_code_t max_keycode; + uint16_t num_keys; + uint8_t pad0[2]; + } key; + struct { + uint16_t num_buttons; + } button; + struct { + uint8_t axes_len; + uint8_t mode; + uint32_t motion_size; + xcb_input_axis_info_t *axes; + } valuator; +} xcb_input_input_info_info_t; + +/** + * @brief xcb_input_input_info_t + **/ +typedef struct xcb_input_input_info_t { + uint8_t class_id; + uint8_t len; +} xcb_input_input_info_t; + +void * +xcb_input_input_info_info (const xcb_input_input_info_t *R); + +/** + * @brief xcb_input_input_info_iterator_t + **/ +typedef struct xcb_input_input_info_iterator_t { + xcb_input_input_info_t *data; + int rem; + int index; +} xcb_input_input_info_iterator_t; + +/** + * @brief xcb_input_device_name_t + **/ +typedef struct xcb_input_device_name_t { + uint8_t len; +} xcb_input_device_name_t; + +/** + * @brief xcb_input_device_name_iterator_t + **/ +typedef struct xcb_input_device_name_iterator_t { + xcb_input_device_name_t *data; + int rem; + int index; +} xcb_input_device_name_iterator_t; + +/** + * @brief xcb_input_list_input_devices_cookie_t + **/ +typedef struct xcb_input_list_input_devices_cookie_t { + unsigned int sequence; +} xcb_input_list_input_devices_cookie_t; + +/** Opcode for xcb_input_list_input_devices. */ +#define XCB_INPUT_LIST_INPUT_DEVICES 2 + +/** + * @brief xcb_input_list_input_devices_request_t + **/ +typedef struct xcb_input_list_input_devices_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; +} xcb_input_list_input_devices_request_t; + +/** + * @brief xcb_input_list_input_devices_reply_t + **/ +typedef struct xcb_input_list_input_devices_reply_t { + uint8_t response_type; + uint8_t xi_reply_type; + uint16_t sequence; + uint32_t length; + uint8_t devices_len; + uint8_t pad0[23]; +} xcb_input_list_input_devices_reply_t; + +typedef uint8_t xcb_input_event_type_base_t; + +/** + * @brief xcb_input_event_type_base_iterator_t + **/ +typedef struct xcb_input_event_type_base_iterator_t { + xcb_input_event_type_base_t *data; + int rem; + int index; +} xcb_input_event_type_base_iterator_t; + +/** + * @brief xcb_input_input_class_info_t + **/ +typedef struct xcb_input_input_class_info_t { + uint8_t class_id; + xcb_input_event_type_base_t event_type_base; +} xcb_input_input_class_info_t; + +/** + * @brief xcb_input_input_class_info_iterator_t + **/ +typedef struct xcb_input_input_class_info_iterator_t { + xcb_input_input_class_info_t *data; + int rem; + int index; +} xcb_input_input_class_info_iterator_t; + +/** + * @brief xcb_input_open_device_cookie_t + **/ +typedef struct xcb_input_open_device_cookie_t { + unsigned int sequence; +} xcb_input_open_device_cookie_t; + +/** Opcode for xcb_input_open_device. */ +#define XCB_INPUT_OPEN_DEVICE 3 + +/** + * @brief xcb_input_open_device_request_t + **/ +typedef struct xcb_input_open_device_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + uint8_t device_id; + uint8_t pad0[3]; +} xcb_input_open_device_request_t; + +/** + * @brief xcb_input_open_device_reply_t + **/ +typedef struct xcb_input_open_device_reply_t { + uint8_t response_type; + uint8_t xi_reply_type; + uint16_t sequence; + uint32_t length; + uint8_t num_classes; + uint8_t pad0[23]; +} xcb_input_open_device_reply_t; + +/** Opcode for xcb_input_close_device. */ +#define XCB_INPUT_CLOSE_DEVICE 4 + +/** + * @brief xcb_input_close_device_request_t + **/ +typedef struct xcb_input_close_device_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + uint8_t device_id; + uint8_t pad0[3]; +} xcb_input_close_device_request_t; + +/** + * @brief xcb_input_set_device_mode_cookie_t + **/ +typedef struct xcb_input_set_device_mode_cookie_t { + unsigned int sequence; +} xcb_input_set_device_mode_cookie_t; + +/** Opcode for xcb_input_set_device_mode. */ +#define XCB_INPUT_SET_DEVICE_MODE 5 + +/** + * @brief xcb_input_set_device_mode_request_t + **/ +typedef struct xcb_input_set_device_mode_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + uint8_t device_id; + uint8_t mode; + uint8_t pad0[2]; +} xcb_input_set_device_mode_request_t; + +/** + * @brief xcb_input_set_device_mode_reply_t + **/ +typedef struct xcb_input_set_device_mode_reply_t { + uint8_t response_type; + uint8_t xi_reply_type; + uint16_t sequence; + uint32_t length; + uint8_t status; + uint8_t pad0[23]; +} xcb_input_set_device_mode_reply_t; + +/** Opcode for xcb_input_select_extension_event. */ +#define XCB_INPUT_SELECT_EXTENSION_EVENT 6 + +/** + * @brief xcb_input_select_extension_event_request_t + **/ +typedef struct xcb_input_select_extension_event_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + xcb_window_t window; + uint16_t num_classes; + uint8_t pad0[2]; +} xcb_input_select_extension_event_request_t; + +/** + * @brief xcb_input_get_selected_extension_events_cookie_t + **/ +typedef struct xcb_input_get_selected_extension_events_cookie_t { + unsigned int sequence; +} xcb_input_get_selected_extension_events_cookie_t; + +/** Opcode for xcb_input_get_selected_extension_events. */ +#define XCB_INPUT_GET_SELECTED_EXTENSION_EVENTS 7 + +/** + * @brief xcb_input_get_selected_extension_events_request_t + **/ +typedef struct xcb_input_get_selected_extension_events_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + xcb_window_t window; +} xcb_input_get_selected_extension_events_request_t; + +/** + * @brief xcb_input_get_selected_extension_events_reply_t + **/ +typedef struct xcb_input_get_selected_extension_events_reply_t { + uint8_t response_type; + uint8_t xi_reply_type; + uint16_t sequence; + uint32_t length; + uint16_t num_this_classes; + uint16_t num_all_classes; + uint8_t pad0[20]; +} xcb_input_get_selected_extension_events_reply_t; + +typedef enum xcb_input_propagate_mode_t { + XCB_INPUT_PROPAGATE_MODE_ADD_TO_LIST = 0, + XCB_INPUT_PROPAGATE_MODE_DELETE_FROM_LIST = 1 +} xcb_input_propagate_mode_t; + +/** Opcode for xcb_input_change_device_dont_propagate_list. */ +#define XCB_INPUT_CHANGE_DEVICE_DONT_PROPAGATE_LIST 8 + +/** + * @brief xcb_input_change_device_dont_propagate_list_request_t + **/ +typedef struct xcb_input_change_device_dont_propagate_list_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + xcb_window_t window; + uint16_t num_classes; + uint8_t mode; + uint8_t pad0; +} xcb_input_change_device_dont_propagate_list_request_t; + +/** + * @brief xcb_input_get_device_dont_propagate_list_cookie_t + **/ +typedef struct xcb_input_get_device_dont_propagate_list_cookie_t { + unsigned int sequence; +} xcb_input_get_device_dont_propagate_list_cookie_t; + +/** Opcode for xcb_input_get_device_dont_propagate_list. */ +#define XCB_INPUT_GET_DEVICE_DONT_PROPAGATE_LIST 9 + +/** + * @brief xcb_input_get_device_dont_propagate_list_request_t + **/ +typedef struct xcb_input_get_device_dont_propagate_list_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + xcb_window_t window; +} xcb_input_get_device_dont_propagate_list_request_t; + +/** + * @brief xcb_input_get_device_dont_propagate_list_reply_t + **/ +typedef struct xcb_input_get_device_dont_propagate_list_reply_t { + uint8_t response_type; + uint8_t xi_reply_type; + uint16_t sequence; + uint32_t length; + uint16_t num_classes; + uint8_t pad0[22]; +} xcb_input_get_device_dont_propagate_list_reply_t; + +/** + * @brief xcb_input_device_time_coord_t + **/ +typedef struct xcb_input_device_time_coord_t { + xcb_timestamp_t time; +} xcb_input_device_time_coord_t; + +/** + * @brief xcb_input_device_time_coord_iterator_t + **/ +typedef struct xcb_input_device_time_coord_iterator_t { + xcb_input_device_time_coord_t *data; + int rem; + int index; + uint8_t num_axes; /**< */ +} xcb_input_device_time_coord_iterator_t; + +/** + * @brief xcb_input_get_device_motion_events_cookie_t + **/ +typedef struct xcb_input_get_device_motion_events_cookie_t { + unsigned int sequence; +} xcb_input_get_device_motion_events_cookie_t; + +/** Opcode for xcb_input_get_device_motion_events. */ +#define XCB_INPUT_GET_DEVICE_MOTION_EVENTS 10 + +/** + * @brief xcb_input_get_device_motion_events_request_t + **/ +typedef struct xcb_input_get_device_motion_events_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + xcb_timestamp_t start; + xcb_timestamp_t stop; + uint8_t device_id; + uint8_t pad0[3]; +} xcb_input_get_device_motion_events_request_t; + +/** + * @brief xcb_input_get_device_motion_events_reply_t + **/ +typedef struct xcb_input_get_device_motion_events_reply_t { + uint8_t response_type; + uint8_t xi_reply_type; + uint16_t sequence; + uint32_t length; + uint32_t num_events; + uint8_t num_axes; + uint8_t device_mode; + uint8_t pad0[18]; +} xcb_input_get_device_motion_events_reply_t; + +/** + * @brief xcb_input_change_keyboard_device_cookie_t + **/ +typedef struct xcb_input_change_keyboard_device_cookie_t { + unsigned int sequence; +} xcb_input_change_keyboard_device_cookie_t; + +/** Opcode for xcb_input_change_keyboard_device. */ +#define XCB_INPUT_CHANGE_KEYBOARD_DEVICE 11 + +/** + * @brief xcb_input_change_keyboard_device_request_t + **/ +typedef struct xcb_input_change_keyboard_device_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + uint8_t device_id; + uint8_t pad0[3]; +} xcb_input_change_keyboard_device_request_t; + +/** + * @brief xcb_input_change_keyboard_device_reply_t + **/ +typedef struct xcb_input_change_keyboard_device_reply_t { + uint8_t response_type; + uint8_t xi_reply_type; + uint16_t sequence; + uint32_t length; + uint8_t status; + uint8_t pad0[23]; +} xcb_input_change_keyboard_device_reply_t; + +/** + * @brief xcb_input_change_pointer_device_cookie_t + **/ +typedef struct xcb_input_change_pointer_device_cookie_t { + unsigned int sequence; +} xcb_input_change_pointer_device_cookie_t; + +/** Opcode for xcb_input_change_pointer_device. */ +#define XCB_INPUT_CHANGE_POINTER_DEVICE 12 + +/** + * @brief xcb_input_change_pointer_device_request_t + **/ +typedef struct xcb_input_change_pointer_device_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + uint8_t x_axis; + uint8_t y_axis; + uint8_t device_id; + uint8_t pad0; +} xcb_input_change_pointer_device_request_t; + +/** + * @brief xcb_input_change_pointer_device_reply_t + **/ +typedef struct xcb_input_change_pointer_device_reply_t { + uint8_t response_type; + uint8_t xi_reply_type; + uint16_t sequence; + uint32_t length; + uint8_t status; + uint8_t pad0[23]; +} xcb_input_change_pointer_device_reply_t; + +/** + * @brief xcb_input_grab_device_cookie_t + **/ +typedef struct xcb_input_grab_device_cookie_t { + unsigned int sequence; +} xcb_input_grab_device_cookie_t; + +/** Opcode for xcb_input_grab_device. */ +#define XCB_INPUT_GRAB_DEVICE 13 + +/** + * @brief xcb_input_grab_device_request_t + **/ +typedef struct xcb_input_grab_device_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + xcb_window_t grab_window; + xcb_timestamp_t time; + uint16_t num_classes; + uint8_t this_device_mode; + uint8_t other_device_mode; + uint8_t owner_events; + uint8_t device_id; + uint8_t pad0[2]; +} xcb_input_grab_device_request_t; + +/** + * @brief xcb_input_grab_device_reply_t + **/ +typedef struct xcb_input_grab_device_reply_t { + uint8_t response_type; + uint8_t xi_reply_type; + uint16_t sequence; + uint32_t length; + uint8_t status; + uint8_t pad0[23]; +} xcb_input_grab_device_reply_t; + +/** Opcode for xcb_input_ungrab_device. */ +#define XCB_INPUT_UNGRAB_DEVICE 14 + +/** + * @brief xcb_input_ungrab_device_request_t + **/ +typedef struct xcb_input_ungrab_device_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + xcb_timestamp_t time; + uint8_t device_id; + uint8_t pad0[3]; +} xcb_input_ungrab_device_request_t; + +typedef enum xcb_input_modifier_device_t { + XCB_INPUT_MODIFIER_DEVICE_USE_X_KEYBOARD = 255 +} xcb_input_modifier_device_t; + +/** Opcode for xcb_input_grab_device_key. */ +#define XCB_INPUT_GRAB_DEVICE_KEY 15 + +/** + * @brief xcb_input_grab_device_key_request_t + **/ +typedef struct xcb_input_grab_device_key_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + xcb_window_t grab_window; + uint16_t num_classes; + uint16_t modifiers; + uint8_t modifier_device; + uint8_t grabbed_device; + uint8_t key; + uint8_t this_device_mode; + uint8_t other_device_mode; + uint8_t owner_events; + uint8_t pad0[2]; +} xcb_input_grab_device_key_request_t; + +/** Opcode for xcb_input_ungrab_device_key. */ +#define XCB_INPUT_UNGRAB_DEVICE_KEY 16 + +/** + * @brief xcb_input_ungrab_device_key_request_t + **/ +typedef struct xcb_input_ungrab_device_key_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + xcb_window_t grabWindow; + uint16_t modifiers; + uint8_t modifier_device; + uint8_t key; + uint8_t grabbed_device; +} xcb_input_ungrab_device_key_request_t; + +/** Opcode for xcb_input_grab_device_button. */ +#define XCB_INPUT_GRAB_DEVICE_BUTTON 17 + +/** + * @brief xcb_input_grab_device_button_request_t + **/ +typedef struct xcb_input_grab_device_button_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + xcb_window_t grab_window; + uint8_t grabbed_device; + uint8_t modifier_device; + uint16_t num_classes; + uint16_t modifiers; + uint8_t this_device_mode; + uint8_t other_device_mode; + uint8_t button; + uint8_t owner_events; + uint8_t pad0[2]; +} xcb_input_grab_device_button_request_t; + +/** Opcode for xcb_input_ungrab_device_button. */ +#define XCB_INPUT_UNGRAB_DEVICE_BUTTON 18 + +/** + * @brief xcb_input_ungrab_device_button_request_t + **/ +typedef struct xcb_input_ungrab_device_button_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + xcb_window_t grab_window; + uint16_t modifiers; + uint8_t modifier_device; + uint8_t button; + uint8_t grabbed_device; + uint8_t pad0[3]; +} xcb_input_ungrab_device_button_request_t; + +typedef enum xcb_input_device_input_mode_t { + XCB_INPUT_DEVICE_INPUT_MODE_ASYNC_THIS_DEVICE = 0, + XCB_INPUT_DEVICE_INPUT_MODE_SYNC_THIS_DEVICE = 1, + XCB_INPUT_DEVICE_INPUT_MODE_REPLAY_THIS_DEVICE = 2, + XCB_INPUT_DEVICE_INPUT_MODE_ASYNC_OTHER_DEVICES = 3, + XCB_INPUT_DEVICE_INPUT_MODE_ASYNC_ALL = 4, + XCB_INPUT_DEVICE_INPUT_MODE_SYNC_ALL = 5 +} xcb_input_device_input_mode_t; + +/** Opcode for xcb_input_allow_device_events. */ +#define XCB_INPUT_ALLOW_DEVICE_EVENTS 19 + +/** + * @brief xcb_input_allow_device_events_request_t + **/ +typedef struct xcb_input_allow_device_events_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + xcb_timestamp_t time; + uint8_t mode; + uint8_t device_id; + uint8_t pad0[2]; +} xcb_input_allow_device_events_request_t; + +/** + * @brief xcb_input_get_device_focus_cookie_t + **/ +typedef struct xcb_input_get_device_focus_cookie_t { + unsigned int sequence; +} xcb_input_get_device_focus_cookie_t; + +/** Opcode for xcb_input_get_device_focus. */ +#define XCB_INPUT_GET_DEVICE_FOCUS 20 + +/** + * @brief xcb_input_get_device_focus_request_t + **/ +typedef struct xcb_input_get_device_focus_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + uint8_t device_id; + uint8_t pad0[3]; +} xcb_input_get_device_focus_request_t; + +/** + * @brief xcb_input_get_device_focus_reply_t + **/ +typedef struct xcb_input_get_device_focus_reply_t { + uint8_t response_type; + uint8_t xi_reply_type; + uint16_t sequence; + uint32_t length; + xcb_window_t focus; + xcb_timestamp_t time; + uint8_t revert_to; + uint8_t pad0[15]; +} xcb_input_get_device_focus_reply_t; + +/** Opcode for xcb_input_set_device_focus. */ +#define XCB_INPUT_SET_DEVICE_FOCUS 21 + +/** + * @brief xcb_input_set_device_focus_request_t + **/ +typedef struct xcb_input_set_device_focus_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + xcb_window_t focus; + xcb_timestamp_t time; + uint8_t revert_to; + uint8_t device_id; + uint8_t pad0[2]; +} xcb_input_set_device_focus_request_t; + +typedef enum xcb_input_feedback_class_t { + XCB_INPUT_FEEDBACK_CLASS_KEYBOARD = 0, + XCB_INPUT_FEEDBACK_CLASS_POINTER = 1, + XCB_INPUT_FEEDBACK_CLASS_STRING = 2, + XCB_INPUT_FEEDBACK_CLASS_INTEGER = 3, + XCB_INPUT_FEEDBACK_CLASS_LED = 4, + XCB_INPUT_FEEDBACK_CLASS_BELL = 5 +} xcb_input_feedback_class_t; + +/** + * @brief xcb_input_kbd_feedback_state_t + **/ +typedef struct xcb_input_kbd_feedback_state_t { + uint8_t class_id; + uint8_t feedback_id; + uint16_t len; + uint16_t pitch; + uint16_t duration; + uint32_t led_mask; + uint32_t led_values; + uint8_t global_auto_repeat; + uint8_t click; + uint8_t percent; + uint8_t pad0; + uint8_t auto_repeats[32]; +} xcb_input_kbd_feedback_state_t; + +/** + * @brief xcb_input_kbd_feedback_state_iterator_t + **/ +typedef struct xcb_input_kbd_feedback_state_iterator_t { + xcb_input_kbd_feedback_state_t *data; + int rem; + int index; +} xcb_input_kbd_feedback_state_iterator_t; + +/** + * @brief xcb_input_ptr_feedback_state_t + **/ +typedef struct xcb_input_ptr_feedback_state_t { + uint8_t class_id; + uint8_t feedback_id; + uint16_t len; + uint8_t pad0[2]; + uint16_t accel_num; + uint16_t accel_denom; + uint16_t threshold; +} xcb_input_ptr_feedback_state_t; + +/** + * @brief xcb_input_ptr_feedback_state_iterator_t + **/ +typedef struct xcb_input_ptr_feedback_state_iterator_t { + xcb_input_ptr_feedback_state_t *data; + int rem; + int index; +} xcb_input_ptr_feedback_state_iterator_t; + +/** + * @brief xcb_input_integer_feedback_state_t + **/ +typedef struct xcb_input_integer_feedback_state_t { + uint8_t class_id; + uint8_t feedback_id; + uint16_t len; + uint32_t resolution; + int32_t min_value; + int32_t max_value; +} xcb_input_integer_feedback_state_t; + +/** + * @brief xcb_input_integer_feedback_state_iterator_t + **/ +typedef struct xcb_input_integer_feedback_state_iterator_t { + xcb_input_integer_feedback_state_t *data; + int rem; + int index; +} xcb_input_integer_feedback_state_iterator_t; + +/** + * @brief xcb_input_string_feedback_state_t + **/ +typedef struct xcb_input_string_feedback_state_t { + uint8_t class_id; + uint8_t feedback_id; + uint16_t len; + uint16_t max_symbols; + uint16_t num_keysyms; +} xcb_input_string_feedback_state_t; + +/** + * @brief xcb_input_string_feedback_state_iterator_t + **/ +typedef struct xcb_input_string_feedback_state_iterator_t { + xcb_input_string_feedback_state_t *data; + int rem; + int index; +} xcb_input_string_feedback_state_iterator_t; + +/** + * @brief xcb_input_bell_feedback_state_t + **/ +typedef struct xcb_input_bell_feedback_state_t { + uint8_t class_id; + uint8_t feedback_id; + uint16_t len; + uint8_t percent; + uint8_t pad0[3]; + uint16_t pitch; + uint16_t duration; +} xcb_input_bell_feedback_state_t; + +/** + * @brief xcb_input_bell_feedback_state_iterator_t + **/ +typedef struct xcb_input_bell_feedback_state_iterator_t { + xcb_input_bell_feedback_state_t *data; + int rem; + int index; +} xcb_input_bell_feedback_state_iterator_t; + +/** + * @brief xcb_input_led_feedback_state_t + **/ +typedef struct xcb_input_led_feedback_state_t { + uint8_t class_id; + uint8_t feedback_id; + uint16_t len; + uint32_t led_mask; + uint32_t led_values; +} xcb_input_led_feedback_state_t; + +/** + * @brief xcb_input_led_feedback_state_iterator_t + **/ +typedef struct xcb_input_led_feedback_state_iterator_t { + xcb_input_led_feedback_state_t *data; + int rem; + int index; +} xcb_input_led_feedback_state_iterator_t; + +/** + * @brief xcb_input_feedback_state_data_t + **/ +typedef struct xcb_input_feedback_state_data_t { + struct { + uint16_t pitch; + uint16_t duration; + uint32_t led_mask; + uint32_t led_values; + uint8_t global_auto_repeat; + uint8_t click; + uint8_t percent; + uint8_t pad0; + uint8_t auto_repeats[32]; + } keyboard; + struct { + uint8_t pad1[2]; + uint16_t accel_num; + uint16_t accel_denom; + uint16_t threshold; + } pointer; + struct { + uint16_t max_symbols; + uint16_t num_keysyms; + xcb_keysym_t *keysyms; + } string; + struct { + uint32_t resolution; + int32_t min_value; + int32_t max_value; + } integer; + struct { + uint32_t led_mask; + uint32_t led_values; + } led; + struct { + uint8_t percent; + uint8_t pad2[3]; + uint16_t pitch; + uint16_t duration; + } bell; +} xcb_input_feedback_state_data_t; + +/** + * @brief xcb_input_feedback_state_t + **/ +typedef struct xcb_input_feedback_state_t { + uint8_t class_id; + uint8_t feedback_id; + uint16_t len; +} xcb_input_feedback_state_t; + +void * +xcb_input_feedback_state_data (const xcb_input_feedback_state_t *R); + +/** + * @brief xcb_input_feedback_state_iterator_t + **/ +typedef struct xcb_input_feedback_state_iterator_t { + xcb_input_feedback_state_t *data; + int rem; + int index; +} xcb_input_feedback_state_iterator_t; + +/** + * @brief xcb_input_get_feedback_control_cookie_t + **/ +typedef struct xcb_input_get_feedback_control_cookie_t { + unsigned int sequence; +} xcb_input_get_feedback_control_cookie_t; + +/** Opcode for xcb_input_get_feedback_control. */ +#define XCB_INPUT_GET_FEEDBACK_CONTROL 22 + +/** + * @brief xcb_input_get_feedback_control_request_t + **/ +typedef struct xcb_input_get_feedback_control_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + uint8_t device_id; + uint8_t pad0[3]; +} xcb_input_get_feedback_control_request_t; + +/** + * @brief xcb_input_get_feedback_control_reply_t + **/ +typedef struct xcb_input_get_feedback_control_reply_t { + uint8_t response_type; + uint8_t xi_reply_type; + uint16_t sequence; + uint32_t length; + uint16_t num_feedbacks; + uint8_t pad0[22]; +} xcb_input_get_feedback_control_reply_t; + +/** + * @brief xcb_input_kbd_feedback_ctl_t + **/ +typedef struct xcb_input_kbd_feedback_ctl_t { + uint8_t class_id; + uint8_t feedback_id; + uint16_t len; + xcb_input_key_code_t key; + uint8_t auto_repeat_mode; + int8_t key_click_percent; + int8_t bell_percent; + int16_t bell_pitch; + int16_t bell_duration; + uint32_t led_mask; + uint32_t led_values; +} xcb_input_kbd_feedback_ctl_t; + +/** + * @brief xcb_input_kbd_feedback_ctl_iterator_t + **/ +typedef struct xcb_input_kbd_feedback_ctl_iterator_t { + xcb_input_kbd_feedback_ctl_t *data; + int rem; + int index; +} xcb_input_kbd_feedback_ctl_iterator_t; + +/** + * @brief xcb_input_ptr_feedback_ctl_t + **/ +typedef struct xcb_input_ptr_feedback_ctl_t { + uint8_t class_id; + uint8_t feedback_id; + uint16_t len; + uint8_t pad0[2]; + int16_t num; + int16_t denom; + int16_t threshold; +} xcb_input_ptr_feedback_ctl_t; + +/** + * @brief xcb_input_ptr_feedback_ctl_iterator_t + **/ +typedef struct xcb_input_ptr_feedback_ctl_iterator_t { + xcb_input_ptr_feedback_ctl_t *data; + int rem; + int index; +} xcb_input_ptr_feedback_ctl_iterator_t; + +/** + * @brief xcb_input_integer_feedback_ctl_t + **/ +typedef struct xcb_input_integer_feedback_ctl_t { + uint8_t class_id; + uint8_t feedback_id; + uint16_t len; + int32_t int_to_display; +} xcb_input_integer_feedback_ctl_t; + +/** + * @brief xcb_input_integer_feedback_ctl_iterator_t + **/ +typedef struct xcb_input_integer_feedback_ctl_iterator_t { + xcb_input_integer_feedback_ctl_t *data; + int rem; + int index; +} xcb_input_integer_feedback_ctl_iterator_t; + +/** + * @brief xcb_input_string_feedback_ctl_t + **/ +typedef struct xcb_input_string_feedback_ctl_t { + uint8_t class_id; + uint8_t feedback_id; + uint16_t len; + uint8_t pad0[2]; + uint16_t num_keysyms; +} xcb_input_string_feedback_ctl_t; + +/** + * @brief xcb_input_string_feedback_ctl_iterator_t + **/ +typedef struct xcb_input_string_feedback_ctl_iterator_t { + xcb_input_string_feedback_ctl_t *data; + int rem; + int index; +} xcb_input_string_feedback_ctl_iterator_t; + +/** + * @brief xcb_input_bell_feedback_ctl_t + **/ +typedef struct xcb_input_bell_feedback_ctl_t { + uint8_t class_id; + uint8_t feedback_id; + uint16_t len; + int8_t percent; + uint8_t pad0[3]; + int16_t pitch; + int16_t duration; +} xcb_input_bell_feedback_ctl_t; + +/** + * @brief xcb_input_bell_feedback_ctl_iterator_t + **/ +typedef struct xcb_input_bell_feedback_ctl_iterator_t { + xcb_input_bell_feedback_ctl_t *data; + int rem; + int index; +} xcb_input_bell_feedback_ctl_iterator_t; + +/** + * @brief xcb_input_led_feedback_ctl_t + **/ +typedef struct xcb_input_led_feedback_ctl_t { + uint8_t class_id; + uint8_t feedback_id; + uint16_t len; + uint32_t led_mask; + uint32_t led_values; +} xcb_input_led_feedback_ctl_t; + +/** + * @brief xcb_input_led_feedback_ctl_iterator_t + **/ +typedef struct xcb_input_led_feedback_ctl_iterator_t { + xcb_input_led_feedback_ctl_t *data; + int rem; + int index; +} xcb_input_led_feedback_ctl_iterator_t; + +/** + * @brief xcb_input_feedback_ctl_data_t + **/ +typedef struct xcb_input_feedback_ctl_data_t { + struct { + xcb_input_key_code_t key; + uint8_t auto_repeat_mode; + int8_t key_click_percent; + int8_t bell_percent; + int16_t bell_pitch; + int16_t bell_duration; + uint32_t led_mask; + uint32_t led_values; + } keyboard; + struct { + uint8_t pad0[2]; + int16_t num; + int16_t denom; + int16_t threshold; + } pointer; + struct { + uint8_t pad1[2]; + uint16_t num_keysyms; + xcb_keysym_t *keysyms; + } string; + struct { + int32_t int_to_display; + } integer; + struct { + uint32_t led_mask; + uint32_t led_values; + } led; + struct { + int8_t percent; + uint8_t pad2[3]; + int16_t pitch; + int16_t duration; + } bell; +} xcb_input_feedback_ctl_data_t; + +/** + * @brief xcb_input_feedback_ctl_t + **/ +typedef struct xcb_input_feedback_ctl_t { + uint8_t class_id; + uint8_t feedback_id; + uint16_t len; +} xcb_input_feedback_ctl_t; + +void * +xcb_input_feedback_ctl_data (const xcb_input_feedback_ctl_t *R); + +/** + * @brief xcb_input_feedback_ctl_iterator_t + **/ +typedef struct xcb_input_feedback_ctl_iterator_t { + xcb_input_feedback_ctl_t *data; + int rem; + int index; +} xcb_input_feedback_ctl_iterator_t; + +typedef enum xcb_input_change_feedback_control_mask_t { + XCB_INPUT_CHANGE_FEEDBACK_CONTROL_MASK_KEY_CLICK_PERCENT = 1, + XCB_INPUT_CHANGE_FEEDBACK_CONTROL_MASK_PERCENT = 2, + XCB_INPUT_CHANGE_FEEDBACK_CONTROL_MASK_PITCH = 4, + XCB_INPUT_CHANGE_FEEDBACK_CONTROL_MASK_DURATION = 8, + XCB_INPUT_CHANGE_FEEDBACK_CONTROL_MASK_LED = 16, + XCB_INPUT_CHANGE_FEEDBACK_CONTROL_MASK_LED_MODE = 32, + XCB_INPUT_CHANGE_FEEDBACK_CONTROL_MASK_KEY = 64, + XCB_INPUT_CHANGE_FEEDBACK_CONTROL_MASK_AUTO_REPEAT_MODE = 128, + XCB_INPUT_CHANGE_FEEDBACK_CONTROL_MASK_STRING = 1, + XCB_INPUT_CHANGE_FEEDBACK_CONTROL_MASK_INTEGER = 1, + XCB_INPUT_CHANGE_FEEDBACK_CONTROL_MASK_ACCEL_NUM = 1, + XCB_INPUT_CHANGE_FEEDBACK_CONTROL_MASK_ACCEL_DENOM = 2, + XCB_INPUT_CHANGE_FEEDBACK_CONTROL_MASK_THRESHOLD = 4 +} xcb_input_change_feedback_control_mask_t; + +/** Opcode for xcb_input_change_feedback_control. */ +#define XCB_INPUT_CHANGE_FEEDBACK_CONTROL 23 + +/** + * @brief xcb_input_change_feedback_control_request_t + **/ +typedef struct xcb_input_change_feedback_control_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + uint32_t mask; + uint8_t device_id; + uint8_t feedback_id; + uint8_t pad0[2]; +} xcb_input_change_feedback_control_request_t; + +/** + * @brief xcb_input_get_device_key_mapping_cookie_t + **/ +typedef struct xcb_input_get_device_key_mapping_cookie_t { + unsigned int sequence; +} xcb_input_get_device_key_mapping_cookie_t; + +/** Opcode for xcb_input_get_device_key_mapping. */ +#define XCB_INPUT_GET_DEVICE_KEY_MAPPING 24 + +/** + * @brief xcb_input_get_device_key_mapping_request_t + **/ +typedef struct xcb_input_get_device_key_mapping_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + uint8_t device_id; + xcb_input_key_code_t first_keycode; + uint8_t count; + uint8_t pad0; +} xcb_input_get_device_key_mapping_request_t; + +/** + * @brief xcb_input_get_device_key_mapping_reply_t + **/ +typedef struct xcb_input_get_device_key_mapping_reply_t { + uint8_t response_type; + uint8_t xi_reply_type; + uint16_t sequence; + uint32_t length; + uint8_t keysyms_per_keycode; + uint8_t pad0[23]; +} xcb_input_get_device_key_mapping_reply_t; + +/** Opcode for xcb_input_change_device_key_mapping. */ +#define XCB_INPUT_CHANGE_DEVICE_KEY_MAPPING 25 + +/** + * @brief xcb_input_change_device_key_mapping_request_t + **/ +typedef struct xcb_input_change_device_key_mapping_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + uint8_t device_id; + xcb_input_key_code_t first_keycode; + uint8_t keysyms_per_keycode; + uint8_t keycode_count; +} xcb_input_change_device_key_mapping_request_t; + +/** + * @brief xcb_input_get_device_modifier_mapping_cookie_t + **/ +typedef struct xcb_input_get_device_modifier_mapping_cookie_t { + unsigned int sequence; +} xcb_input_get_device_modifier_mapping_cookie_t; + +/** Opcode for xcb_input_get_device_modifier_mapping. */ +#define XCB_INPUT_GET_DEVICE_MODIFIER_MAPPING 26 + +/** + * @brief xcb_input_get_device_modifier_mapping_request_t + **/ +typedef struct xcb_input_get_device_modifier_mapping_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + uint8_t device_id; + uint8_t pad0[3]; +} xcb_input_get_device_modifier_mapping_request_t; + +/** + * @brief xcb_input_get_device_modifier_mapping_reply_t + **/ +typedef struct xcb_input_get_device_modifier_mapping_reply_t { + uint8_t response_type; + uint8_t xi_reply_type; + uint16_t sequence; + uint32_t length; + uint8_t keycodes_per_modifier; + uint8_t pad0[23]; +} xcb_input_get_device_modifier_mapping_reply_t; + +/** + * @brief xcb_input_set_device_modifier_mapping_cookie_t + **/ +typedef struct xcb_input_set_device_modifier_mapping_cookie_t { + unsigned int sequence; +} xcb_input_set_device_modifier_mapping_cookie_t; + +/** Opcode for xcb_input_set_device_modifier_mapping. */ +#define XCB_INPUT_SET_DEVICE_MODIFIER_MAPPING 27 + +/** + * @brief xcb_input_set_device_modifier_mapping_request_t + **/ +typedef struct xcb_input_set_device_modifier_mapping_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + uint8_t device_id; + uint8_t keycodes_per_modifier; + uint8_t pad0[2]; +} xcb_input_set_device_modifier_mapping_request_t; + +/** + * @brief xcb_input_set_device_modifier_mapping_reply_t + **/ +typedef struct xcb_input_set_device_modifier_mapping_reply_t { + uint8_t response_type; + uint8_t xi_reply_type; + uint16_t sequence; + uint32_t length; + uint8_t status; + uint8_t pad0[23]; +} xcb_input_set_device_modifier_mapping_reply_t; + +/** + * @brief xcb_input_get_device_button_mapping_cookie_t + **/ +typedef struct xcb_input_get_device_button_mapping_cookie_t { + unsigned int sequence; +} xcb_input_get_device_button_mapping_cookie_t; + +/** Opcode for xcb_input_get_device_button_mapping. */ +#define XCB_INPUT_GET_DEVICE_BUTTON_MAPPING 28 + +/** + * @brief xcb_input_get_device_button_mapping_request_t + **/ +typedef struct xcb_input_get_device_button_mapping_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + uint8_t device_id; + uint8_t pad0[3]; +} xcb_input_get_device_button_mapping_request_t; + +/** + * @brief xcb_input_get_device_button_mapping_reply_t + **/ +typedef struct xcb_input_get_device_button_mapping_reply_t { + uint8_t response_type; + uint8_t xi_reply_type; + uint16_t sequence; + uint32_t length; + uint8_t map_size; + uint8_t pad0[23]; +} xcb_input_get_device_button_mapping_reply_t; + +/** + * @brief xcb_input_set_device_button_mapping_cookie_t + **/ +typedef struct xcb_input_set_device_button_mapping_cookie_t { + unsigned int sequence; +} xcb_input_set_device_button_mapping_cookie_t; + +/** Opcode for xcb_input_set_device_button_mapping. */ +#define XCB_INPUT_SET_DEVICE_BUTTON_MAPPING 29 + +/** + * @brief xcb_input_set_device_button_mapping_request_t + **/ +typedef struct xcb_input_set_device_button_mapping_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + uint8_t device_id; + uint8_t map_size; + uint8_t pad0[2]; +} xcb_input_set_device_button_mapping_request_t; + +/** + * @brief xcb_input_set_device_button_mapping_reply_t + **/ +typedef struct xcb_input_set_device_button_mapping_reply_t { + uint8_t response_type; + uint8_t xi_reply_type; + uint16_t sequence; + uint32_t length; + uint8_t status; + uint8_t pad0[23]; +} xcb_input_set_device_button_mapping_reply_t; + +/** + * @brief xcb_input_key_state_t + **/ +typedef struct xcb_input_key_state_t { + uint8_t class_id; + uint8_t len; + uint8_t num_keys; + uint8_t pad0; + uint8_t keys[32]; +} xcb_input_key_state_t; + +/** + * @brief xcb_input_key_state_iterator_t + **/ +typedef struct xcb_input_key_state_iterator_t { + xcb_input_key_state_t *data; + int rem; + int index; +} xcb_input_key_state_iterator_t; + +/** + * @brief xcb_input_button_state_t + **/ +typedef struct xcb_input_button_state_t { + uint8_t class_id; + uint8_t len; + uint8_t num_buttons; + uint8_t pad0; + uint8_t buttons[32]; +} xcb_input_button_state_t; + +/** + * @brief xcb_input_button_state_iterator_t + **/ +typedef struct xcb_input_button_state_iterator_t { + xcb_input_button_state_t *data; + int rem; + int index; +} xcb_input_button_state_iterator_t; + +typedef enum xcb_input_valuator_state_mode_mask_t { + XCB_INPUT_VALUATOR_STATE_MODE_MASK_DEVICE_MODE_ABSOLUTE = 1, + XCB_INPUT_VALUATOR_STATE_MODE_MASK_OUT_OF_PROXIMITY = 2 +} xcb_input_valuator_state_mode_mask_t; + +/** + * @brief xcb_input_valuator_state_t + **/ +typedef struct xcb_input_valuator_state_t { + uint8_t class_id; + uint8_t len; + uint8_t num_valuators; + uint8_t mode; +} xcb_input_valuator_state_t; + +/** + * @brief xcb_input_valuator_state_iterator_t + **/ +typedef struct xcb_input_valuator_state_iterator_t { + xcb_input_valuator_state_t *data; + int rem; + int index; +} xcb_input_valuator_state_iterator_t; + +/** + * @brief xcb_input_input_state_data_t + **/ +typedef struct xcb_input_input_state_data_t { + struct { + uint8_t num_keys; + uint8_t pad0; + uint8_t keys[32]; + } key; + struct { + uint8_t num_buttons; + uint8_t pad1; + uint8_t buttons[32]; + } button; + struct { + uint8_t num_valuators; + uint8_t mode; + int32_t *valuators; + } valuator; +} xcb_input_input_state_data_t; + +/** + * @brief xcb_input_input_state_t + **/ +typedef struct xcb_input_input_state_t { + uint8_t class_id; + uint8_t len; +} xcb_input_input_state_t; + +void * +xcb_input_input_state_data (const xcb_input_input_state_t *R); + +/** + * @brief xcb_input_input_state_iterator_t + **/ +typedef struct xcb_input_input_state_iterator_t { + xcb_input_input_state_t *data; + int rem; + int index; +} xcb_input_input_state_iterator_t; + +/** + * @brief xcb_input_query_device_state_cookie_t + **/ +typedef struct xcb_input_query_device_state_cookie_t { + unsigned int sequence; +} xcb_input_query_device_state_cookie_t; + +/** Opcode for xcb_input_query_device_state. */ +#define XCB_INPUT_QUERY_DEVICE_STATE 30 + +/** + * @brief xcb_input_query_device_state_request_t + **/ +typedef struct xcb_input_query_device_state_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + uint8_t device_id; + uint8_t pad0[3]; +} xcb_input_query_device_state_request_t; + +/** + * @brief xcb_input_query_device_state_reply_t + **/ +typedef struct xcb_input_query_device_state_reply_t { + uint8_t response_type; + uint8_t xi_reply_type; + uint16_t sequence; + uint32_t length; + uint8_t num_classes; + uint8_t pad0[23]; +} xcb_input_query_device_state_reply_t; + +/** Opcode for xcb_input_device_bell. */ +#define XCB_INPUT_DEVICE_BELL 32 + +/** + * @brief xcb_input_device_bell_request_t + **/ +typedef struct xcb_input_device_bell_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + uint8_t device_id; + uint8_t feedback_id; + uint8_t feedback_class; + int8_t percent; +} xcb_input_device_bell_request_t; + +/** + * @brief xcb_input_set_device_valuators_cookie_t + **/ +typedef struct xcb_input_set_device_valuators_cookie_t { + unsigned int sequence; +} xcb_input_set_device_valuators_cookie_t; + +/** Opcode for xcb_input_set_device_valuators. */ +#define XCB_INPUT_SET_DEVICE_VALUATORS 33 + +/** + * @brief xcb_input_set_device_valuators_request_t + **/ +typedef struct xcb_input_set_device_valuators_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + uint8_t device_id; + uint8_t first_valuator; + uint8_t num_valuators; + uint8_t pad0; +} xcb_input_set_device_valuators_request_t; + +/** + * @brief xcb_input_set_device_valuators_reply_t + **/ +typedef struct xcb_input_set_device_valuators_reply_t { + uint8_t response_type; + uint8_t xi_reply_type; + uint16_t sequence; + uint32_t length; + uint8_t status; + uint8_t pad0[23]; +} xcb_input_set_device_valuators_reply_t; + +typedef enum xcb_input_device_control_t { + XCB_INPUT_DEVICE_CONTROL_RESOLUTION = 1, + XCB_INPUT_DEVICE_CONTROL_ABS_CALIB = 2, + XCB_INPUT_DEVICE_CONTROL_CORE = 3, + XCB_INPUT_DEVICE_CONTROL_ENABLE = 4, + XCB_INPUT_DEVICE_CONTROL_ABS_AREA = 5 +} xcb_input_device_control_t; + +/** + * @brief xcb_input_device_resolution_state_t + **/ +typedef struct xcb_input_device_resolution_state_t { + uint16_t control_id; + uint16_t len; + uint32_t num_valuators; +} xcb_input_device_resolution_state_t; + +/** + * @brief xcb_input_device_resolution_state_iterator_t + **/ +typedef struct xcb_input_device_resolution_state_iterator_t { + xcb_input_device_resolution_state_t *data; + int rem; + int index; +} xcb_input_device_resolution_state_iterator_t; + +/** + * @brief xcb_input_device_abs_calib_state_t + **/ +typedef struct xcb_input_device_abs_calib_state_t { + uint16_t control_id; + uint16_t len; + int32_t min_x; + int32_t max_x; + int32_t min_y; + int32_t max_y; + uint32_t flip_x; + uint32_t flip_y; + uint32_t rotation; + uint32_t button_threshold; +} xcb_input_device_abs_calib_state_t; + +/** + * @brief xcb_input_device_abs_calib_state_iterator_t + **/ +typedef struct xcb_input_device_abs_calib_state_iterator_t { + xcb_input_device_abs_calib_state_t *data; + int rem; + int index; +} xcb_input_device_abs_calib_state_iterator_t; + +/** + * @brief xcb_input_device_abs_area_state_t + **/ +typedef struct xcb_input_device_abs_area_state_t { + uint16_t control_id; + uint16_t len; + uint32_t offset_x; + uint32_t offset_y; + uint32_t width; + uint32_t height; + uint32_t screen; + uint32_t following; +} xcb_input_device_abs_area_state_t; + +/** + * @brief xcb_input_device_abs_area_state_iterator_t + **/ +typedef struct xcb_input_device_abs_area_state_iterator_t { + xcb_input_device_abs_area_state_t *data; + int rem; + int index; +} xcb_input_device_abs_area_state_iterator_t; + +/** + * @brief xcb_input_device_core_state_t + **/ +typedef struct xcb_input_device_core_state_t { + uint16_t control_id; + uint16_t len; + uint8_t status; + uint8_t iscore; + uint8_t pad0[2]; +} xcb_input_device_core_state_t; + +/** + * @brief xcb_input_device_core_state_iterator_t + **/ +typedef struct xcb_input_device_core_state_iterator_t { + xcb_input_device_core_state_t *data; + int rem; + int index; +} xcb_input_device_core_state_iterator_t; + +/** + * @brief xcb_input_device_enable_state_t + **/ +typedef struct xcb_input_device_enable_state_t { + uint16_t control_id; + uint16_t len; + uint8_t enable; + uint8_t pad0[3]; +} xcb_input_device_enable_state_t; + +/** + * @brief xcb_input_device_enable_state_iterator_t + **/ +typedef struct xcb_input_device_enable_state_iterator_t { + xcb_input_device_enable_state_t *data; + int rem; + int index; +} xcb_input_device_enable_state_iterator_t; + +/** + * @brief xcb_input_device_state_data_t + **/ +typedef struct xcb_input_device_state_data_t { + struct { + uint32_t num_valuators; + uint32_t *resolution_values; + uint32_t *resolution_min; + uint32_t *resolution_max; + } resolution; + struct { + int32_t min_x; + int32_t max_x; + int32_t min_y; + int32_t max_y; + uint32_t flip_x; + uint32_t flip_y; + uint32_t rotation; + uint32_t button_threshold; + } abs_calib; + struct { + uint8_t status; + uint8_t iscore; + uint8_t pad0[2]; + } core; + struct { + uint8_t enable; + uint8_t pad1[3]; + } enable; + struct { + uint32_t offset_x; + uint32_t offset_y; + uint32_t width; + uint32_t height; + uint32_t screen; + uint32_t following; + } abs_area; +} xcb_input_device_state_data_t; + +/** + * @brief xcb_input_device_state_t + **/ +typedef struct xcb_input_device_state_t { + uint16_t control_id; + uint16_t len; +} xcb_input_device_state_t; + +void * +xcb_input_device_state_data (const xcb_input_device_state_t *R); + +/** + * @brief xcb_input_device_state_iterator_t + **/ +typedef struct xcb_input_device_state_iterator_t { + xcb_input_device_state_t *data; + int rem; + int index; +} xcb_input_device_state_iterator_t; + +/** + * @brief xcb_input_get_device_control_cookie_t + **/ +typedef struct xcb_input_get_device_control_cookie_t { + unsigned int sequence; +} xcb_input_get_device_control_cookie_t; + +/** Opcode for xcb_input_get_device_control. */ +#define XCB_INPUT_GET_DEVICE_CONTROL 34 + +/** + * @brief xcb_input_get_device_control_request_t + **/ +typedef struct xcb_input_get_device_control_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + uint16_t control_id; + uint8_t device_id; + uint8_t pad0; +} xcb_input_get_device_control_request_t; + +/** + * @brief xcb_input_get_device_control_reply_t + **/ +typedef struct xcb_input_get_device_control_reply_t { + uint8_t response_type; + uint8_t xi_reply_type; + uint16_t sequence; + uint32_t length; + uint8_t status; + uint8_t pad0[23]; +} xcb_input_get_device_control_reply_t; + +/** + * @brief xcb_input_device_resolution_ctl_t + **/ +typedef struct xcb_input_device_resolution_ctl_t { + uint16_t control_id; + uint16_t len; + uint8_t first_valuator; + uint8_t num_valuators; + uint8_t pad0[2]; +} xcb_input_device_resolution_ctl_t; + +/** + * @brief xcb_input_device_resolution_ctl_iterator_t + **/ +typedef struct xcb_input_device_resolution_ctl_iterator_t { + xcb_input_device_resolution_ctl_t *data; + int rem; + int index; +} xcb_input_device_resolution_ctl_iterator_t; + +/** + * @brief xcb_input_device_abs_calib_ctl_t + **/ +typedef struct xcb_input_device_abs_calib_ctl_t { + uint16_t control_id; + uint16_t len; + int32_t min_x; + int32_t max_x; + int32_t min_y; + int32_t max_y; + uint32_t flip_x; + uint32_t flip_y; + uint32_t rotation; + uint32_t button_threshold; +} xcb_input_device_abs_calib_ctl_t; + +/** + * @brief xcb_input_device_abs_calib_ctl_iterator_t + **/ +typedef struct xcb_input_device_abs_calib_ctl_iterator_t { + xcb_input_device_abs_calib_ctl_t *data; + int rem; + int index; +} xcb_input_device_abs_calib_ctl_iterator_t; + +/** + * @brief xcb_input_device_abs_area_ctrl_t + **/ +typedef struct xcb_input_device_abs_area_ctrl_t { + uint16_t control_id; + uint16_t len; + uint32_t offset_x; + uint32_t offset_y; + int32_t width; + int32_t height; + int32_t screen; + uint32_t following; +} xcb_input_device_abs_area_ctrl_t; + +/** + * @brief xcb_input_device_abs_area_ctrl_iterator_t + **/ +typedef struct xcb_input_device_abs_area_ctrl_iterator_t { + xcb_input_device_abs_area_ctrl_t *data; + int rem; + int index; +} xcb_input_device_abs_area_ctrl_iterator_t; + +/** + * @brief xcb_input_device_core_ctrl_t + **/ +typedef struct xcb_input_device_core_ctrl_t { + uint16_t control_id; + uint16_t len; + uint8_t status; + uint8_t pad0[3]; +} xcb_input_device_core_ctrl_t; + +/** + * @brief xcb_input_device_core_ctrl_iterator_t + **/ +typedef struct xcb_input_device_core_ctrl_iterator_t { + xcb_input_device_core_ctrl_t *data; + int rem; + int index; +} xcb_input_device_core_ctrl_iterator_t; + +/** + * @brief xcb_input_device_enable_ctrl_t + **/ +typedef struct xcb_input_device_enable_ctrl_t { + uint16_t control_id; + uint16_t len; + uint8_t enable; + uint8_t pad0[3]; +} xcb_input_device_enable_ctrl_t; + +/** + * @brief xcb_input_device_enable_ctrl_iterator_t + **/ +typedef struct xcb_input_device_enable_ctrl_iterator_t { + xcb_input_device_enable_ctrl_t *data; + int rem; + int index; +} xcb_input_device_enable_ctrl_iterator_t; + +/** + * @brief xcb_input_device_ctl_data_t + **/ +typedef struct xcb_input_device_ctl_data_t { + struct { + uint8_t first_valuator; + uint8_t num_valuators; + uint8_t pad0[2]; + uint32_t *resolution_values; + } resolution; + struct { + int32_t min_x; + int32_t max_x; + int32_t min_y; + int32_t max_y; + uint32_t flip_x; + uint32_t flip_y; + uint32_t rotation; + uint32_t button_threshold; + } abs_calib; + struct { + uint8_t status; + uint8_t pad1[3]; + } core; + struct { + uint8_t enable; + uint8_t pad2[3]; + } enable; + struct { + uint32_t offset_x; + uint32_t offset_y; + int32_t width; + int32_t height; + int32_t screen; + uint32_t following; + } abs_area; +} xcb_input_device_ctl_data_t; + +/** + * @brief xcb_input_device_ctl_t + **/ +typedef struct xcb_input_device_ctl_t { + uint16_t control_id; + uint16_t len; +} xcb_input_device_ctl_t; + +void * +xcb_input_device_ctl_data (const xcb_input_device_ctl_t *R); + +/** + * @brief xcb_input_device_ctl_iterator_t + **/ +typedef struct xcb_input_device_ctl_iterator_t { + xcb_input_device_ctl_t *data; + int rem; + int index; +} xcb_input_device_ctl_iterator_t; + +/** + * @brief xcb_input_change_device_control_cookie_t + **/ +typedef struct xcb_input_change_device_control_cookie_t { + unsigned int sequence; +} xcb_input_change_device_control_cookie_t; + +/** Opcode for xcb_input_change_device_control. */ +#define XCB_INPUT_CHANGE_DEVICE_CONTROL 35 + +/** + * @brief xcb_input_change_device_control_request_t + **/ +typedef struct xcb_input_change_device_control_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + uint16_t control_id; + uint8_t device_id; + uint8_t pad0; +} xcb_input_change_device_control_request_t; + +/** + * @brief xcb_input_change_device_control_reply_t + **/ +typedef struct xcb_input_change_device_control_reply_t { + uint8_t response_type; + uint8_t xi_reply_type; + uint16_t sequence; + uint32_t length; + uint8_t status; + uint8_t pad0[23]; +} xcb_input_change_device_control_reply_t; + +/** + * @brief xcb_input_list_device_properties_cookie_t + **/ +typedef struct xcb_input_list_device_properties_cookie_t { + unsigned int sequence; +} xcb_input_list_device_properties_cookie_t; + +/** Opcode for xcb_input_list_device_properties. */ +#define XCB_INPUT_LIST_DEVICE_PROPERTIES 36 + +/** + * @brief xcb_input_list_device_properties_request_t + **/ +typedef struct xcb_input_list_device_properties_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + uint8_t device_id; + uint8_t pad0[3]; +} xcb_input_list_device_properties_request_t; + +/** + * @brief xcb_input_list_device_properties_reply_t + **/ +typedef struct xcb_input_list_device_properties_reply_t { + uint8_t response_type; + uint8_t xi_reply_type; + uint16_t sequence; + uint32_t length; + uint16_t num_atoms; + uint8_t pad0[22]; +} xcb_input_list_device_properties_reply_t; + +typedef enum xcb_input_property_format_t { + XCB_INPUT_PROPERTY_FORMAT_8_BITS = 8, + XCB_INPUT_PROPERTY_FORMAT_16_BITS = 16, + XCB_INPUT_PROPERTY_FORMAT_32_BITS = 32 +} xcb_input_property_format_t; + +/** + * @brief xcb_input_change_device_property_items_t + **/ +typedef struct xcb_input_change_device_property_items_t { + uint8_t *data8; + uint16_t *data16; + uint32_t *data32; +} xcb_input_change_device_property_items_t; + +/** Opcode for xcb_input_change_device_property. */ +#define XCB_INPUT_CHANGE_DEVICE_PROPERTY 37 + +/** + * @brief xcb_input_change_device_property_request_t + **/ +typedef struct xcb_input_change_device_property_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + xcb_atom_t property; + xcb_atom_t type; + uint8_t device_id; + uint8_t format; + uint8_t mode; + uint8_t pad0; + uint32_t num_items; +} xcb_input_change_device_property_request_t; + +/** Opcode for xcb_input_delete_device_property. */ +#define XCB_INPUT_DELETE_DEVICE_PROPERTY 38 + +/** + * @brief xcb_input_delete_device_property_request_t + **/ +typedef struct xcb_input_delete_device_property_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + xcb_atom_t property; + uint8_t device_id; + uint8_t pad0[3]; +} xcb_input_delete_device_property_request_t; + +/** + * @brief xcb_input_get_device_property_cookie_t + **/ +typedef struct xcb_input_get_device_property_cookie_t { + unsigned int sequence; +} xcb_input_get_device_property_cookie_t; + +/** Opcode for xcb_input_get_device_property. */ +#define XCB_INPUT_GET_DEVICE_PROPERTY 39 + +/** + * @brief xcb_input_get_device_property_request_t + **/ +typedef struct xcb_input_get_device_property_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + xcb_atom_t property; + xcb_atom_t type; + uint32_t offset; + uint32_t len; + uint8_t device_id; + uint8_t _delete; + uint8_t pad0[2]; +} xcb_input_get_device_property_request_t; + +/** + * @brief xcb_input_get_device_property_items_t + **/ +typedef struct xcb_input_get_device_property_items_t { + uint8_t *data8; + uint16_t *data16; + uint32_t *data32; +} xcb_input_get_device_property_items_t; + +/** + * @brief xcb_input_get_device_property_reply_t + **/ +typedef struct xcb_input_get_device_property_reply_t { + uint8_t response_type; + uint8_t xi_reply_type; + uint16_t sequence; + uint32_t length; + xcb_atom_t type; + uint32_t bytes_after; + uint32_t num_items; + uint8_t format; + uint8_t device_id; + uint8_t pad0[10]; +} xcb_input_get_device_property_reply_t; + +typedef enum xcb_input_device_t { + XCB_INPUT_DEVICE_ALL = 0, + XCB_INPUT_DEVICE_ALL_MASTER = 1 +} xcb_input_device_t; + +/** + * @brief xcb_input_group_info_t + **/ +typedef struct xcb_input_group_info_t { + uint8_t base; + uint8_t latched; + uint8_t locked; + uint8_t effective; +} xcb_input_group_info_t; + +/** + * @brief xcb_input_group_info_iterator_t + **/ +typedef struct xcb_input_group_info_iterator_t { + xcb_input_group_info_t *data; + int rem; + int index; +} xcb_input_group_info_iterator_t; + +/** + * @brief xcb_input_modifier_info_t + **/ +typedef struct xcb_input_modifier_info_t { + uint32_t base; + uint32_t latched; + uint32_t locked; + uint32_t effective; +} xcb_input_modifier_info_t; + +/** + * @brief xcb_input_modifier_info_iterator_t + **/ +typedef struct xcb_input_modifier_info_iterator_t { + xcb_input_modifier_info_t *data; + int rem; + int index; +} xcb_input_modifier_info_iterator_t; + +/** + * @brief xcb_input_xi_query_pointer_cookie_t + **/ +typedef struct xcb_input_xi_query_pointer_cookie_t { + unsigned int sequence; +} xcb_input_xi_query_pointer_cookie_t; + +/** Opcode for xcb_input_xi_query_pointer. */ +#define XCB_INPUT_XI_QUERY_POINTER 40 + +/** + * @brief xcb_input_xi_query_pointer_request_t + **/ +typedef struct xcb_input_xi_query_pointer_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + xcb_window_t window; + xcb_input_device_id_t deviceid; + uint8_t pad0[2]; +} xcb_input_xi_query_pointer_request_t; + +/** + * @brief xcb_input_xi_query_pointer_reply_t + **/ +typedef struct xcb_input_xi_query_pointer_reply_t { + uint8_t response_type; + uint8_t pad0; + uint16_t sequence; + uint32_t length; + xcb_window_t root; + xcb_window_t child; + xcb_input_fp1616_t root_x; + xcb_input_fp1616_t root_y; + xcb_input_fp1616_t win_x; + xcb_input_fp1616_t win_y; + uint8_t same_screen; + uint8_t pad1; + uint16_t buttons_len; + xcb_input_modifier_info_t mods; + xcb_input_group_info_t group; +} xcb_input_xi_query_pointer_reply_t; + +/** Opcode for xcb_input_xi_warp_pointer. */ +#define XCB_INPUT_XI_WARP_POINTER 41 + +/** + * @brief xcb_input_xi_warp_pointer_request_t + **/ +typedef struct xcb_input_xi_warp_pointer_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + xcb_window_t src_win; + xcb_window_t dst_win; + xcb_input_fp1616_t src_x; + xcb_input_fp1616_t src_y; + uint16_t src_width; + uint16_t src_height; + xcb_input_fp1616_t dst_x; + xcb_input_fp1616_t dst_y; + xcb_input_device_id_t deviceid; + uint8_t pad0[2]; +} xcb_input_xi_warp_pointer_request_t; + +/** Opcode for xcb_input_xi_change_cursor. */ +#define XCB_INPUT_XI_CHANGE_CURSOR 42 + +/** + * @brief xcb_input_xi_change_cursor_request_t + **/ +typedef struct xcb_input_xi_change_cursor_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + xcb_window_t window; + xcb_cursor_t cursor; + xcb_input_device_id_t deviceid; + uint8_t pad0[2]; +} xcb_input_xi_change_cursor_request_t; + +typedef enum xcb_input_hierarchy_change_type_t { + XCB_INPUT_HIERARCHY_CHANGE_TYPE_ADD_MASTER = 1, + XCB_INPUT_HIERARCHY_CHANGE_TYPE_REMOVE_MASTER = 2, + XCB_INPUT_HIERARCHY_CHANGE_TYPE_ATTACH_SLAVE = 3, + XCB_INPUT_HIERARCHY_CHANGE_TYPE_DETACH_SLAVE = 4 +} xcb_input_hierarchy_change_type_t; + +typedef enum xcb_input_change_mode_t { + XCB_INPUT_CHANGE_MODE_ATTACH = 1, + XCB_INPUT_CHANGE_MODE_FLOAT = 2 +} xcb_input_change_mode_t; + +/** + * @brief xcb_input_add_master_t + **/ +typedef struct xcb_input_add_master_t { + uint16_t type; + uint16_t len; + uint16_t name_len; + uint8_t send_core; + uint8_t enable; +} xcb_input_add_master_t; + +/** + * @brief xcb_input_add_master_iterator_t + **/ +typedef struct xcb_input_add_master_iterator_t { + xcb_input_add_master_t *data; + int rem; + int index; +} xcb_input_add_master_iterator_t; + +/** + * @brief xcb_input_remove_master_t + **/ +typedef struct xcb_input_remove_master_t { + uint16_t type; + uint16_t len; + xcb_input_device_id_t deviceid; + uint8_t return_mode; + uint8_t pad0; + xcb_input_device_id_t return_pointer; + xcb_input_device_id_t return_keyboard; +} xcb_input_remove_master_t; + +/** + * @brief xcb_input_remove_master_iterator_t + **/ +typedef struct xcb_input_remove_master_iterator_t { + xcb_input_remove_master_t *data; + int rem; + int index; +} xcb_input_remove_master_iterator_t; + +/** + * @brief xcb_input_attach_slave_t + **/ +typedef struct xcb_input_attach_slave_t { + uint16_t type; + uint16_t len; + xcb_input_device_id_t deviceid; + xcb_input_device_id_t master; +} xcb_input_attach_slave_t; + +/** + * @brief xcb_input_attach_slave_iterator_t + **/ +typedef struct xcb_input_attach_slave_iterator_t { + xcb_input_attach_slave_t *data; + int rem; + int index; +} xcb_input_attach_slave_iterator_t; + +/** + * @brief xcb_input_detach_slave_t + **/ +typedef struct xcb_input_detach_slave_t { + uint16_t type; + uint16_t len; + xcb_input_device_id_t deviceid; + uint8_t pad0[2]; +} xcb_input_detach_slave_t; + +/** + * @brief xcb_input_detach_slave_iterator_t + **/ +typedef struct xcb_input_detach_slave_iterator_t { + xcb_input_detach_slave_t *data; + int rem; + int index; +} xcb_input_detach_slave_iterator_t; + +/** + * @brief xcb_input_hierarchy_change_data_t + **/ +typedef struct xcb_input_hierarchy_change_data_t { + struct { + uint16_t name_len; + uint8_t send_core; + uint8_t enable; + char *name; + } add_master; + struct { + xcb_input_device_id_t deviceid; + uint8_t return_mode; + uint8_t pad1; + xcb_input_device_id_t return_pointer; + xcb_input_device_id_t return_keyboard; + } remove_master; + struct { + xcb_input_device_id_t deviceid; + xcb_input_device_id_t master; + } attach_slave; + struct { + xcb_input_device_id_t deviceid; + uint8_t pad2[2]; + } detach_slave; +} xcb_input_hierarchy_change_data_t; + +/** + * @brief xcb_input_hierarchy_change_t + **/ +typedef struct xcb_input_hierarchy_change_t { + uint16_t type; + uint16_t len; +} xcb_input_hierarchy_change_t; + +void * +xcb_input_hierarchy_change_data (const xcb_input_hierarchy_change_t *R); + +/** + * @brief xcb_input_hierarchy_change_iterator_t + **/ +typedef struct xcb_input_hierarchy_change_iterator_t { + xcb_input_hierarchy_change_t *data; + int rem; + int index; +} xcb_input_hierarchy_change_iterator_t; + +/** Opcode for xcb_input_xi_change_hierarchy. */ +#define XCB_INPUT_XI_CHANGE_HIERARCHY 43 + +/** + * @brief xcb_input_xi_change_hierarchy_request_t + **/ +typedef struct xcb_input_xi_change_hierarchy_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + uint8_t num_changes; + uint8_t pad0[3]; +} xcb_input_xi_change_hierarchy_request_t; + +/** Opcode for xcb_input_xi_set_client_pointer. */ +#define XCB_INPUT_XI_SET_CLIENT_POINTER 44 + +/** + * @brief xcb_input_xi_set_client_pointer_request_t + **/ +typedef struct xcb_input_xi_set_client_pointer_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + xcb_window_t window; + xcb_input_device_id_t deviceid; + uint8_t pad0[2]; +} xcb_input_xi_set_client_pointer_request_t; + +/** + * @brief xcb_input_xi_get_client_pointer_cookie_t + **/ +typedef struct xcb_input_xi_get_client_pointer_cookie_t { + unsigned int sequence; +} xcb_input_xi_get_client_pointer_cookie_t; + +/** Opcode for xcb_input_xi_get_client_pointer. */ +#define XCB_INPUT_XI_GET_CLIENT_POINTER 45 + +/** + * @brief xcb_input_xi_get_client_pointer_request_t + **/ +typedef struct xcb_input_xi_get_client_pointer_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + xcb_window_t window; +} xcb_input_xi_get_client_pointer_request_t; + +/** + * @brief xcb_input_xi_get_client_pointer_reply_t + **/ +typedef struct xcb_input_xi_get_client_pointer_reply_t { + uint8_t response_type; + uint8_t pad0; + uint16_t sequence; + uint32_t length; + uint8_t set; + uint8_t pad1; + xcb_input_device_id_t deviceid; + uint8_t pad2[20]; +} xcb_input_xi_get_client_pointer_reply_t; + +typedef enum xcb_input_xi_event_mask_t { + XCB_INPUT_XI_EVENT_MASK_DEVICE_CHANGED = 2, + XCB_INPUT_XI_EVENT_MASK_KEY_PRESS = 4, + XCB_INPUT_XI_EVENT_MASK_KEY_RELEASE = 8, + XCB_INPUT_XI_EVENT_MASK_BUTTON_PRESS = 16, + XCB_INPUT_XI_EVENT_MASK_BUTTON_RELEASE = 32, + XCB_INPUT_XI_EVENT_MASK_MOTION = 64, + XCB_INPUT_XI_EVENT_MASK_ENTER = 128, + XCB_INPUT_XI_EVENT_MASK_LEAVE = 256, + XCB_INPUT_XI_EVENT_MASK_FOCUS_IN = 512, + XCB_INPUT_XI_EVENT_MASK_FOCUS_OUT = 1024, + XCB_INPUT_XI_EVENT_MASK_HIERARCHY = 2048, + XCB_INPUT_XI_EVENT_MASK_PROPERTY = 4096, + XCB_INPUT_XI_EVENT_MASK_RAW_KEY_PRESS = 8192, + XCB_INPUT_XI_EVENT_MASK_RAW_KEY_RELEASE = 16384, + XCB_INPUT_XI_EVENT_MASK_RAW_BUTTON_PRESS = 32768, + XCB_INPUT_XI_EVENT_MASK_RAW_BUTTON_RELEASE = 65536, + XCB_INPUT_XI_EVENT_MASK_RAW_MOTION = 131072, + XCB_INPUT_XI_EVENT_MASK_TOUCH_BEGIN = 262144, + XCB_INPUT_XI_EVENT_MASK_TOUCH_UPDATE = 524288, + XCB_INPUT_XI_EVENT_MASK_TOUCH_END = 1048576, + XCB_INPUT_XI_EVENT_MASK_TOUCH_OWNERSHIP = 2097152, + XCB_INPUT_XI_EVENT_MASK_RAW_TOUCH_BEGIN = 4194304, + XCB_INPUT_XI_EVENT_MASK_RAW_TOUCH_UPDATE = 8388608, + XCB_INPUT_XI_EVENT_MASK_RAW_TOUCH_END = 16777216, + XCB_INPUT_XI_EVENT_MASK_BARRIER_HIT = 33554432, + XCB_INPUT_XI_EVENT_MASK_BARRIER_LEAVE = 67108864 +} xcb_input_xi_event_mask_t; + +/** + * @brief xcb_input_event_mask_t + **/ +typedef struct xcb_input_event_mask_t { + xcb_input_device_id_t deviceid; + uint16_t mask_len; +} xcb_input_event_mask_t; + +/** + * @brief xcb_input_event_mask_iterator_t + **/ +typedef struct xcb_input_event_mask_iterator_t { + xcb_input_event_mask_t *data; + int rem; + int index; +} xcb_input_event_mask_iterator_t; + +/** Opcode for xcb_input_xi_select_events. */ +#define XCB_INPUT_XI_SELECT_EVENTS 46 + +/** + * @brief xcb_input_xi_select_events_request_t + **/ +typedef struct xcb_input_xi_select_events_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + xcb_window_t window; + uint16_t num_mask; + uint8_t pad0[2]; +} xcb_input_xi_select_events_request_t; + +/** + * @brief xcb_input_xi_query_version_cookie_t + **/ +typedef struct xcb_input_xi_query_version_cookie_t { + unsigned int sequence; +} xcb_input_xi_query_version_cookie_t; + +/** Opcode for xcb_input_xi_query_version. */ +#define XCB_INPUT_XI_QUERY_VERSION 47 + +/** + * @brief xcb_input_xi_query_version_request_t + **/ +typedef struct xcb_input_xi_query_version_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + uint16_t major_version; + uint16_t minor_version; +} xcb_input_xi_query_version_request_t; + +/** + * @brief xcb_input_xi_query_version_reply_t + **/ +typedef struct xcb_input_xi_query_version_reply_t { + uint8_t response_type; + uint8_t pad0; + uint16_t sequence; + uint32_t length; + uint16_t major_version; + uint16_t minor_version; + uint8_t pad1[20]; +} xcb_input_xi_query_version_reply_t; + +typedef enum xcb_input_device_class_type_t { + XCB_INPUT_DEVICE_CLASS_TYPE_KEY = 0, + XCB_INPUT_DEVICE_CLASS_TYPE_BUTTON = 1, + XCB_INPUT_DEVICE_CLASS_TYPE_VALUATOR = 2, + XCB_INPUT_DEVICE_CLASS_TYPE_SCROLL = 3, + XCB_INPUT_DEVICE_CLASS_TYPE_TOUCH = 8 +} xcb_input_device_class_type_t; + +typedef enum xcb_input_device_type_t { + XCB_INPUT_DEVICE_TYPE_MASTER_POINTER = 1, + XCB_INPUT_DEVICE_TYPE_MASTER_KEYBOARD = 2, + XCB_INPUT_DEVICE_TYPE_SLAVE_POINTER = 3, + XCB_INPUT_DEVICE_TYPE_SLAVE_KEYBOARD = 4, + XCB_INPUT_DEVICE_TYPE_FLOATING_SLAVE = 5 +} xcb_input_device_type_t; + +typedef enum xcb_input_scroll_flags_t { + XCB_INPUT_SCROLL_FLAGS_NO_EMULATION = 1, + XCB_INPUT_SCROLL_FLAGS_PREFERRED = 2 +} xcb_input_scroll_flags_t; + +typedef enum xcb_input_scroll_type_t { + XCB_INPUT_SCROLL_TYPE_VERTICAL = 1, + XCB_INPUT_SCROLL_TYPE_HORIZONTAL = 2 +} xcb_input_scroll_type_t; + +typedef enum xcb_input_touch_mode_t { + XCB_INPUT_TOUCH_MODE_DIRECT = 1, + XCB_INPUT_TOUCH_MODE_DEPENDENT = 2 +} xcb_input_touch_mode_t; + +/** + * @brief xcb_input_button_class_t + **/ +typedef struct xcb_input_button_class_t { + uint16_t type; + uint16_t len; + xcb_input_device_id_t sourceid; + uint16_t num_buttons; +} xcb_input_button_class_t; + +/** + * @brief xcb_input_button_class_iterator_t + **/ +typedef struct xcb_input_button_class_iterator_t { + xcb_input_button_class_t *data; + int rem; + int index; +} xcb_input_button_class_iterator_t; + +/** + * @brief xcb_input_key_class_t + **/ +typedef struct xcb_input_key_class_t { + uint16_t type; + uint16_t len; + xcb_input_device_id_t sourceid; + uint16_t num_keys; +} xcb_input_key_class_t; + +/** + * @brief xcb_input_key_class_iterator_t + **/ +typedef struct xcb_input_key_class_iterator_t { + xcb_input_key_class_t *data; + int rem; + int index; +} xcb_input_key_class_iterator_t; + +/** + * @brief xcb_input_scroll_class_t + **/ +typedef struct xcb_input_scroll_class_t { + uint16_t type; + uint16_t len; + xcb_input_device_id_t sourceid; + uint16_t number; + uint16_t scroll_type; + uint8_t pad0[2]; + uint32_t flags; + xcb_input_fp3232_t increment; +} xcb_input_scroll_class_t; + +/** + * @brief xcb_input_scroll_class_iterator_t + **/ +typedef struct xcb_input_scroll_class_iterator_t { + xcb_input_scroll_class_t *data; + int rem; + int index; +} xcb_input_scroll_class_iterator_t; + +/** + * @brief xcb_input_touch_class_t + **/ +typedef struct xcb_input_touch_class_t { + uint16_t type; + uint16_t len; + xcb_input_device_id_t sourceid; + uint8_t mode; + uint8_t num_touches; +} xcb_input_touch_class_t; + +/** + * @brief xcb_input_touch_class_iterator_t + **/ +typedef struct xcb_input_touch_class_iterator_t { + xcb_input_touch_class_t *data; + int rem; + int index; +} xcb_input_touch_class_iterator_t; + +/** + * @brief xcb_input_valuator_class_t + **/ +typedef struct xcb_input_valuator_class_t { + uint16_t type; + uint16_t len; + xcb_input_device_id_t sourceid; + uint16_t number; + xcb_atom_t label; + xcb_input_fp3232_t min; + xcb_input_fp3232_t max; + xcb_input_fp3232_t value; + uint32_t resolution; + uint8_t mode; + uint8_t pad0[3]; +} xcb_input_valuator_class_t; + +/** + * @brief xcb_input_valuator_class_iterator_t + **/ +typedef struct xcb_input_valuator_class_iterator_t { + xcb_input_valuator_class_t *data; + int rem; + int index; +} xcb_input_valuator_class_iterator_t; + +/** + * @brief xcb_input_device_class_data_t + **/ +typedef struct xcb_input_device_class_data_t { + struct { + uint16_t num_keys; + uint32_t *keys; + } key; + struct { + uint16_t num_buttons; + uint32_t *state; + xcb_atom_t *labels; + } button; + struct { + uint16_t number; + xcb_atom_t label; + xcb_input_fp3232_t min; + xcb_input_fp3232_t max; + xcb_input_fp3232_t value; + uint32_t resolution; + uint8_t mode; + uint8_t pad0[3]; + } valuator; + struct { + uint16_t number; + uint16_t scroll_type; + uint8_t pad1[2]; + uint32_t flags; + xcb_input_fp3232_t increment; + } scroll; + struct { + uint8_t mode; + uint8_t num_touches; + } touch; +} xcb_input_device_class_data_t; + +/** + * @brief xcb_input_device_class_t + **/ +typedef struct xcb_input_device_class_t { + uint16_t type; + uint16_t len; + xcb_input_device_id_t sourceid; +} xcb_input_device_class_t; + +void * +xcb_input_device_class_data (const xcb_input_device_class_t *R); + +/** + * @brief xcb_input_device_class_iterator_t + **/ +typedef struct xcb_input_device_class_iterator_t { + xcb_input_device_class_t *data; + int rem; + int index; +} xcb_input_device_class_iterator_t; + +/** + * @brief xcb_input_xi_device_info_t + **/ +typedef struct xcb_input_xi_device_info_t { + xcb_input_device_id_t deviceid; + uint16_t type; + xcb_input_device_id_t attachment; + uint16_t num_classes; + uint16_t name_len; + uint8_t enabled; + uint8_t pad0; +} xcb_input_xi_device_info_t; + +/** + * @brief xcb_input_xi_device_info_iterator_t + **/ +typedef struct xcb_input_xi_device_info_iterator_t { + xcb_input_xi_device_info_t *data; + int rem; + int index; +} xcb_input_xi_device_info_iterator_t; + +/** + * @brief xcb_input_xi_query_device_cookie_t + **/ +typedef struct xcb_input_xi_query_device_cookie_t { + unsigned int sequence; +} xcb_input_xi_query_device_cookie_t; + +/** Opcode for xcb_input_xi_query_device. */ +#define XCB_INPUT_XI_QUERY_DEVICE 48 + +/** + * @brief xcb_input_xi_query_device_request_t + **/ +typedef struct xcb_input_xi_query_device_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + xcb_input_device_id_t deviceid; + uint8_t pad0[2]; +} xcb_input_xi_query_device_request_t; + +/** + * @brief xcb_input_xi_query_device_reply_t + **/ +typedef struct xcb_input_xi_query_device_reply_t { + uint8_t response_type; + uint8_t pad0; + uint16_t sequence; + uint32_t length; + uint16_t num_infos; + uint8_t pad1[22]; +} xcb_input_xi_query_device_reply_t; + +/** Opcode for xcb_input_xi_set_focus. */ +#define XCB_INPUT_XI_SET_FOCUS 49 + +/** + * @brief xcb_input_xi_set_focus_request_t + **/ +typedef struct xcb_input_xi_set_focus_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + xcb_window_t window; + xcb_timestamp_t time; + xcb_input_device_id_t deviceid; + uint8_t pad0[2]; +} xcb_input_xi_set_focus_request_t; + +/** + * @brief xcb_input_xi_get_focus_cookie_t + **/ +typedef struct xcb_input_xi_get_focus_cookie_t { + unsigned int sequence; +} xcb_input_xi_get_focus_cookie_t; + +/** Opcode for xcb_input_xi_get_focus. */ +#define XCB_INPUT_XI_GET_FOCUS 50 + +/** + * @brief xcb_input_xi_get_focus_request_t + **/ +typedef struct xcb_input_xi_get_focus_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + xcb_input_device_id_t deviceid; + uint8_t pad0[2]; +} xcb_input_xi_get_focus_request_t; + +/** + * @brief xcb_input_xi_get_focus_reply_t + **/ +typedef struct xcb_input_xi_get_focus_reply_t { + uint8_t response_type; + uint8_t pad0; + uint16_t sequence; + uint32_t length; + xcb_window_t focus; + uint8_t pad1[20]; +} xcb_input_xi_get_focus_reply_t; + +typedef enum xcb_input_grab_owner_t { + XCB_INPUT_GRAB_OWNER_NO_OWNER = 0, + XCB_INPUT_GRAB_OWNER_OWNER = 1 +} xcb_input_grab_owner_t; + +/** + * @brief xcb_input_xi_grab_device_cookie_t + **/ +typedef struct xcb_input_xi_grab_device_cookie_t { + unsigned int sequence; +} xcb_input_xi_grab_device_cookie_t; + +/** Opcode for xcb_input_xi_grab_device. */ +#define XCB_INPUT_XI_GRAB_DEVICE 51 + +/** + * @brief xcb_input_xi_grab_device_request_t + **/ +typedef struct xcb_input_xi_grab_device_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + xcb_window_t window; + xcb_timestamp_t time; + xcb_cursor_t cursor; + xcb_input_device_id_t deviceid; + uint8_t mode; + uint8_t paired_device_mode; + uint8_t owner_events; + uint8_t pad0; + uint16_t mask_len; +} xcb_input_xi_grab_device_request_t; + +/** + * @brief xcb_input_xi_grab_device_reply_t + **/ +typedef struct xcb_input_xi_grab_device_reply_t { + uint8_t response_type; + uint8_t pad0; + uint16_t sequence; + uint32_t length; + uint8_t status; + uint8_t pad1[23]; +} xcb_input_xi_grab_device_reply_t; + +/** Opcode for xcb_input_xi_ungrab_device. */ +#define XCB_INPUT_XI_UNGRAB_DEVICE 52 + +/** + * @brief xcb_input_xi_ungrab_device_request_t + **/ +typedef struct xcb_input_xi_ungrab_device_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + xcb_timestamp_t time; + xcb_input_device_id_t deviceid; + uint8_t pad0[2]; +} xcb_input_xi_ungrab_device_request_t; + +typedef enum xcb_input_event_mode_t { + XCB_INPUT_EVENT_MODE_ASYNC_DEVICE = 0, + XCB_INPUT_EVENT_MODE_SYNC_DEVICE = 1, + XCB_INPUT_EVENT_MODE_REPLAY_DEVICE = 2, + XCB_INPUT_EVENT_MODE_ASYNC_PAIRED_DEVICE = 3, + XCB_INPUT_EVENT_MODE_ASYNC_PAIR = 4, + XCB_INPUT_EVENT_MODE_SYNC_PAIR = 5, + XCB_INPUT_EVENT_MODE_ACCEPT_TOUCH = 6, + XCB_INPUT_EVENT_MODE_REJECT_TOUCH = 7 +} xcb_input_event_mode_t; + +/** Opcode for xcb_input_xi_allow_events. */ +#define XCB_INPUT_XI_ALLOW_EVENTS 53 + +/** + * @brief xcb_input_xi_allow_events_request_t + **/ +typedef struct xcb_input_xi_allow_events_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + xcb_timestamp_t time; + xcb_input_device_id_t deviceid; + uint8_t event_mode; + uint8_t pad0; + uint32_t touchid; + xcb_window_t grab_window; +} xcb_input_xi_allow_events_request_t; + +typedef enum xcb_input_grab_mode_22_t { + XCB_INPUT_GRAB_MODE_22_SYNC = 0, + XCB_INPUT_GRAB_MODE_22_ASYNC = 1, + XCB_INPUT_GRAB_MODE_22_TOUCH = 2 +} xcb_input_grab_mode_22_t; + +typedef enum xcb_input_grab_type_t { + XCB_INPUT_GRAB_TYPE_BUTTON = 0, + XCB_INPUT_GRAB_TYPE_KEYCODE = 1, + XCB_INPUT_GRAB_TYPE_ENTER = 2, + XCB_INPUT_GRAB_TYPE_FOCUS_IN = 3, + XCB_INPUT_GRAB_TYPE_TOUCH_BEGIN = 4 +} xcb_input_grab_type_t; + +typedef enum xcb_input_modifier_mask_t { + XCB_INPUT_MODIFIER_MASK_ANY = 2147483648 +} xcb_input_modifier_mask_t; + +/** + * @brief xcb_input_grab_modifier_info_t + **/ +typedef struct xcb_input_grab_modifier_info_t { + uint32_t modifiers; + uint8_t status; + uint8_t pad0[3]; +} xcb_input_grab_modifier_info_t; + +/** + * @brief xcb_input_grab_modifier_info_iterator_t + **/ +typedef struct xcb_input_grab_modifier_info_iterator_t { + xcb_input_grab_modifier_info_t *data; + int rem; + int index; +} xcb_input_grab_modifier_info_iterator_t; + +/** + * @brief xcb_input_xi_passive_grab_device_cookie_t + **/ +typedef struct xcb_input_xi_passive_grab_device_cookie_t { + unsigned int sequence; +} xcb_input_xi_passive_grab_device_cookie_t; + +/** Opcode for xcb_input_xi_passive_grab_device. */ +#define XCB_INPUT_XI_PASSIVE_GRAB_DEVICE 54 + +/** + * @brief xcb_input_xi_passive_grab_device_request_t + **/ +typedef struct xcb_input_xi_passive_grab_device_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + xcb_timestamp_t time; + xcb_window_t grab_window; + xcb_cursor_t cursor; + uint32_t detail; + xcb_input_device_id_t deviceid; + uint16_t num_modifiers; + uint16_t mask_len; + uint8_t grab_type; + uint8_t grab_mode; + uint8_t paired_device_mode; + uint8_t owner_events; + uint8_t pad0[2]; +} xcb_input_xi_passive_grab_device_request_t; + +/** + * @brief xcb_input_xi_passive_grab_device_reply_t + **/ +typedef struct xcb_input_xi_passive_grab_device_reply_t { + uint8_t response_type; + uint8_t pad0; + uint16_t sequence; + uint32_t length; + uint16_t num_modifiers; + uint8_t pad1[22]; +} xcb_input_xi_passive_grab_device_reply_t; + +/** Opcode for xcb_input_xi_passive_ungrab_device. */ +#define XCB_INPUT_XI_PASSIVE_UNGRAB_DEVICE 55 + +/** + * @brief xcb_input_xi_passive_ungrab_device_request_t + **/ +typedef struct xcb_input_xi_passive_ungrab_device_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + xcb_window_t grab_window; + uint32_t detail; + xcb_input_device_id_t deviceid; + uint16_t num_modifiers; + uint8_t grab_type; + uint8_t pad0[3]; +} xcb_input_xi_passive_ungrab_device_request_t; + +/** + * @brief xcb_input_xi_list_properties_cookie_t + **/ +typedef struct xcb_input_xi_list_properties_cookie_t { + unsigned int sequence; +} xcb_input_xi_list_properties_cookie_t; + +/** Opcode for xcb_input_xi_list_properties. */ +#define XCB_INPUT_XI_LIST_PROPERTIES 56 + +/** + * @brief xcb_input_xi_list_properties_request_t + **/ +typedef struct xcb_input_xi_list_properties_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + xcb_input_device_id_t deviceid; + uint8_t pad0[2]; +} xcb_input_xi_list_properties_request_t; + +/** + * @brief xcb_input_xi_list_properties_reply_t + **/ +typedef struct xcb_input_xi_list_properties_reply_t { + uint8_t response_type; + uint8_t pad0; + uint16_t sequence; + uint32_t length; + uint16_t num_properties; + uint8_t pad1[22]; +} xcb_input_xi_list_properties_reply_t; + +/** + * @brief xcb_input_xi_change_property_items_t + **/ +typedef struct xcb_input_xi_change_property_items_t { + uint8_t *data8; + uint16_t *data16; + uint32_t *data32; +} xcb_input_xi_change_property_items_t; + +/** Opcode for xcb_input_xi_change_property. */ +#define XCB_INPUT_XI_CHANGE_PROPERTY 57 + +/** + * @brief xcb_input_xi_change_property_request_t + **/ +typedef struct xcb_input_xi_change_property_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + xcb_input_device_id_t deviceid; + uint8_t mode; + uint8_t format; + xcb_atom_t property; + xcb_atom_t type; + uint32_t num_items; +} xcb_input_xi_change_property_request_t; + +/** Opcode for xcb_input_xi_delete_property. */ +#define XCB_INPUT_XI_DELETE_PROPERTY 58 + +/** + * @brief xcb_input_xi_delete_property_request_t + **/ +typedef struct xcb_input_xi_delete_property_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + xcb_input_device_id_t deviceid; + uint8_t pad0[2]; + xcb_atom_t property; +} xcb_input_xi_delete_property_request_t; + +/** + * @brief xcb_input_xi_get_property_cookie_t + **/ +typedef struct xcb_input_xi_get_property_cookie_t { + unsigned int sequence; +} xcb_input_xi_get_property_cookie_t; + +/** Opcode for xcb_input_xi_get_property. */ +#define XCB_INPUT_XI_GET_PROPERTY 59 + +/** + * @brief xcb_input_xi_get_property_request_t + **/ +typedef struct xcb_input_xi_get_property_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + xcb_input_device_id_t deviceid; + uint8_t _delete; + uint8_t pad0; + xcb_atom_t property; + xcb_atom_t type; + uint32_t offset; + uint32_t len; +} xcb_input_xi_get_property_request_t; + +/** + * @brief xcb_input_xi_get_property_items_t + **/ +typedef struct xcb_input_xi_get_property_items_t { + uint8_t *data8; + uint16_t *data16; + uint32_t *data32; +} xcb_input_xi_get_property_items_t; + +/** + * @brief xcb_input_xi_get_property_reply_t + **/ +typedef struct xcb_input_xi_get_property_reply_t { + uint8_t response_type; + uint8_t pad0; + uint16_t sequence; + uint32_t length; + xcb_atom_t type; + uint32_t bytes_after; + uint32_t num_items; + uint8_t format; + uint8_t pad1[11]; +} xcb_input_xi_get_property_reply_t; + +/** + * @brief xcb_input_xi_get_selected_events_cookie_t + **/ +typedef struct xcb_input_xi_get_selected_events_cookie_t { + unsigned int sequence; +} xcb_input_xi_get_selected_events_cookie_t; + +/** Opcode for xcb_input_xi_get_selected_events. */ +#define XCB_INPUT_XI_GET_SELECTED_EVENTS 60 + +/** + * @brief xcb_input_xi_get_selected_events_request_t + **/ +typedef struct xcb_input_xi_get_selected_events_request_t { + uint8_t major_opcode; + uint8_t minor_opcode; + uint16_t length; + xcb_window_t window; +} xcb_input_xi_get_selected_events_request_t; + +/** + * @brief xcb_input_xi_get_selected_events_reply_t + **/ +typedef struct xcb_input_xi_get_selected_events_reply_t { + uint8_t response_type; + uint8_t pad0; + uint16_t sequence; + uint32_t length; + uint16_t num_masks; + uint8_t pad1[22]; +} xcb_input_xi_get_selected_events_reply_t; + +/** Opcode for xcb_input_device_valuator. */ +#define XCB_INPUT_DEVICE_VALUATOR 0 + +/** + * @brief xcb_input_device_valuator_event_t + **/ +typedef struct xcb_input_device_valuator_event_t { + uint8_t response_type; + uint8_t device_id; + uint16_t sequence; + uint16_t device_state; + uint8_t num_valuators; + uint8_t first_valuator; + int32_t valuators[6]; +} xcb_input_device_valuator_event_t; + +typedef enum xcb_input_more_events_mask_t { + XCB_INPUT_MORE_EVENTS_MASK_MORE_EVENTS = 128 +} xcb_input_more_events_mask_t; + +/** Opcode for xcb_input_device_key_press. */ +#define XCB_INPUT_DEVICE_KEY_PRESS 1 + +/** + * @brief xcb_input_device_key_press_event_t + **/ +typedef struct xcb_input_device_key_press_event_t { + uint8_t response_type; + uint8_t detail; + uint16_t sequence; + xcb_timestamp_t time; + xcb_window_t root; + xcb_window_t event; + xcb_window_t child; + int16_t root_x; + int16_t root_y; + int16_t event_x; + int16_t event_y; + uint16_t state; + uint8_t same_screen; + uint8_t device_id; +} xcb_input_device_key_press_event_t; + +/** Opcode for xcb_input_device_key_release. */ +#define XCB_INPUT_DEVICE_KEY_RELEASE 2 + +typedef xcb_input_device_key_press_event_t xcb_input_device_key_release_event_t; + +/** Opcode for xcb_input_device_button_press. */ +#define XCB_INPUT_DEVICE_BUTTON_PRESS 3 + +typedef xcb_input_device_key_press_event_t xcb_input_device_button_press_event_t; + +/** Opcode for xcb_input_device_button_release. */ +#define XCB_INPUT_DEVICE_BUTTON_RELEASE 4 + +typedef xcb_input_device_key_press_event_t xcb_input_device_button_release_event_t; + +/** Opcode for xcb_input_device_motion_notify. */ +#define XCB_INPUT_DEVICE_MOTION_NOTIFY 5 + +typedef xcb_input_device_key_press_event_t xcb_input_device_motion_notify_event_t; + +/** Opcode for xcb_input_device_focus_in. */ +#define XCB_INPUT_DEVICE_FOCUS_IN 6 + +/** + * @brief xcb_input_device_focus_in_event_t + **/ +typedef struct xcb_input_device_focus_in_event_t { + uint8_t response_type; + uint8_t detail; + uint16_t sequence; + xcb_timestamp_t time; + xcb_window_t window; + uint8_t mode; + uint8_t device_id; + uint8_t pad0[18]; +} xcb_input_device_focus_in_event_t; + +/** Opcode for xcb_input_device_focus_out. */ +#define XCB_INPUT_DEVICE_FOCUS_OUT 7 + +typedef xcb_input_device_focus_in_event_t xcb_input_device_focus_out_event_t; + +/** Opcode for xcb_input_proximity_in. */ +#define XCB_INPUT_PROXIMITY_IN 8 + +typedef xcb_input_device_key_press_event_t xcb_input_proximity_in_event_t; + +/** Opcode for xcb_input_proximity_out. */ +#define XCB_INPUT_PROXIMITY_OUT 9 + +typedef xcb_input_device_key_press_event_t xcb_input_proximity_out_event_t; + +typedef enum xcb_input_classes_reported_mask_t { + XCB_INPUT_CLASSES_REPORTED_MASK_OUT_OF_PROXIMITY = 128, + XCB_INPUT_CLASSES_REPORTED_MASK_DEVICE_MODE_ABSOLUTE = 64, + XCB_INPUT_CLASSES_REPORTED_MASK_REPORTING_VALUATORS = 4, + XCB_INPUT_CLASSES_REPORTED_MASK_REPORTING_BUTTONS = 2, + XCB_INPUT_CLASSES_REPORTED_MASK_REPORTING_KEYS = 1 +} xcb_input_classes_reported_mask_t; + +/** Opcode for xcb_input_device_state_notify. */ +#define XCB_INPUT_DEVICE_STATE_NOTIFY 10 + +/** + * @brief xcb_input_device_state_notify_event_t + **/ +typedef struct xcb_input_device_state_notify_event_t { + uint8_t response_type; + uint8_t device_id; + uint16_t sequence; + xcb_timestamp_t time; + uint8_t num_keys; + uint8_t num_buttons; + uint8_t num_valuators; + uint8_t classes_reported; + uint8_t buttons[4]; + uint8_t keys[4]; + uint32_t valuators[3]; +} xcb_input_device_state_notify_event_t; + +/** Opcode for xcb_input_device_mapping_notify. */ +#define XCB_INPUT_DEVICE_MAPPING_NOTIFY 11 + +/** + * @brief xcb_input_device_mapping_notify_event_t + **/ +typedef struct xcb_input_device_mapping_notify_event_t { + uint8_t response_type; + uint8_t device_id; + uint16_t sequence; + uint8_t request; + xcb_input_key_code_t first_keycode; + uint8_t count; + uint8_t pad0; + xcb_timestamp_t time; + uint8_t pad1[20]; +} xcb_input_device_mapping_notify_event_t; + +typedef enum xcb_input_change_device_t { + XCB_INPUT_CHANGE_DEVICE_NEW_POINTER = 0, + XCB_INPUT_CHANGE_DEVICE_NEW_KEYBOARD = 1 +} xcb_input_change_device_t; + +/** Opcode for xcb_input_change_device_notify. */ +#define XCB_INPUT_CHANGE_DEVICE_NOTIFY 12 + +/** + * @brief xcb_input_change_device_notify_event_t + **/ +typedef struct xcb_input_change_device_notify_event_t { + uint8_t response_type; + uint8_t device_id; + uint16_t sequence; + xcb_timestamp_t time; + uint8_t request; + uint8_t pad0[23]; +} xcb_input_change_device_notify_event_t; + +/** Opcode for xcb_input_device_key_state_notify. */ +#define XCB_INPUT_DEVICE_KEY_STATE_NOTIFY 13 + +/** + * @brief xcb_input_device_key_state_notify_event_t + **/ +typedef struct xcb_input_device_key_state_notify_event_t { + uint8_t response_type; + uint8_t device_id; + uint16_t sequence; + uint8_t keys[28]; +} xcb_input_device_key_state_notify_event_t; + +/** Opcode for xcb_input_device_button_state_notify. */ +#define XCB_INPUT_DEVICE_BUTTON_STATE_NOTIFY 14 + +/** + * @brief xcb_input_device_button_state_notify_event_t + **/ +typedef struct xcb_input_device_button_state_notify_event_t { + uint8_t response_type; + uint8_t device_id; + uint16_t sequence; + uint8_t buttons[28]; +} xcb_input_device_button_state_notify_event_t; + +typedef enum xcb_input_device_change_t { + XCB_INPUT_DEVICE_CHANGE_ADDED = 0, + XCB_INPUT_DEVICE_CHANGE_REMOVED = 1, + XCB_INPUT_DEVICE_CHANGE_ENABLED = 2, + XCB_INPUT_DEVICE_CHANGE_DISABLED = 3, + XCB_INPUT_DEVICE_CHANGE_UNRECOVERABLE = 4, + XCB_INPUT_DEVICE_CHANGE_CONTROL_CHANGED = 5 +} xcb_input_device_change_t; + +/** Opcode for xcb_input_device_presence_notify. */ +#define XCB_INPUT_DEVICE_PRESENCE_NOTIFY 15 + +/** + * @brief xcb_input_device_presence_notify_event_t + **/ +typedef struct xcb_input_device_presence_notify_event_t { + uint8_t response_type; + uint8_t pad0; + uint16_t sequence; + xcb_timestamp_t time; + uint8_t devchange; + uint8_t device_id; + uint16_t control; + uint8_t pad1[20]; +} xcb_input_device_presence_notify_event_t; + +/** Opcode for xcb_input_device_property_notify. */ +#define XCB_INPUT_DEVICE_PROPERTY_NOTIFY 16 + +/** + * @brief xcb_input_device_property_notify_event_t + **/ +typedef struct xcb_input_device_property_notify_event_t { + uint8_t response_type; + uint8_t state; + uint16_t sequence; + xcb_timestamp_t time; + xcb_atom_t property; + uint8_t pad0[19]; + uint8_t device_id; +} xcb_input_device_property_notify_event_t; + +typedef enum xcb_input_change_reason_t { + XCB_INPUT_CHANGE_REASON_SLAVE_SWITCH = 1, + XCB_INPUT_CHANGE_REASON_DEVICE_CHANGE = 2 +} xcb_input_change_reason_t; + +/** Opcode for xcb_input_device_changed. */ +#define XCB_INPUT_DEVICE_CHANGED 1 + +/** + * @brief xcb_input_device_changed_event_t + **/ +typedef struct xcb_input_device_changed_event_t { + uint8_t response_type; + uint8_t extension; + uint16_t sequence; + uint32_t length; + uint16_t event_type; + xcb_input_device_id_t deviceid; + xcb_timestamp_t time; + uint16_t num_classes; + xcb_input_device_id_t sourceid; + uint8_t reason; + uint8_t pad0[11]; + uint32_t full_sequence; +} xcb_input_device_changed_event_t; + +typedef enum xcb_input_key_event_flags_t { + XCB_INPUT_KEY_EVENT_FLAGS_KEY_REPEAT = 65536 +} xcb_input_key_event_flags_t; + +/** Opcode for xcb_input_key_press. */ +#define XCB_INPUT_KEY_PRESS 2 + +/** + * @brief xcb_input_key_press_event_t + **/ +typedef struct xcb_input_key_press_event_t { + uint8_t response_type; + uint8_t extension; + uint16_t sequence; + uint32_t length; + uint16_t event_type; + xcb_input_device_id_t deviceid; + xcb_timestamp_t time; + uint32_t detail; + xcb_window_t root; + xcb_window_t event; + xcb_window_t child; + uint32_t full_sequence; + xcb_input_fp1616_t root_x; + xcb_input_fp1616_t root_y; + xcb_input_fp1616_t event_x; + xcb_input_fp1616_t event_y; + uint16_t buttons_len; + uint16_t valuators_len; + xcb_input_device_id_t sourceid; + uint8_t pad0[2]; + uint32_t flags; + xcb_input_modifier_info_t mods; + xcb_input_group_info_t group; +} xcb_input_key_press_event_t; + +/** Opcode for xcb_input_key_release. */ +#define XCB_INPUT_KEY_RELEASE 3 + +typedef xcb_input_key_press_event_t xcb_input_key_release_event_t; + +typedef enum xcb_input_pointer_event_flags_t { + XCB_INPUT_POINTER_EVENT_FLAGS_POINTER_EMULATED = 65536 +} xcb_input_pointer_event_flags_t; + +/** Opcode for xcb_input_button_press. */ +#define XCB_INPUT_BUTTON_PRESS 4 + +/** + * @brief xcb_input_button_press_event_t + **/ +typedef struct xcb_input_button_press_event_t { + uint8_t response_type; + uint8_t extension; + uint16_t sequence; + uint32_t length; + uint16_t event_type; + xcb_input_device_id_t deviceid; + xcb_timestamp_t time; + uint32_t detail; + xcb_window_t root; + xcb_window_t event; + xcb_window_t child; + uint32_t full_sequence; + xcb_input_fp1616_t root_x; + xcb_input_fp1616_t root_y; + xcb_input_fp1616_t event_x; + xcb_input_fp1616_t event_y; + uint16_t buttons_len; + uint16_t valuators_len; + xcb_input_device_id_t sourceid; + uint8_t pad0[2]; + uint32_t flags; + xcb_input_modifier_info_t mods; + xcb_input_group_info_t group; +} xcb_input_button_press_event_t; + +/** Opcode for xcb_input_button_release. */ +#define XCB_INPUT_BUTTON_RELEASE 5 + +typedef xcb_input_button_press_event_t xcb_input_button_release_event_t; + +/** Opcode for xcb_input_motion. */ +#define XCB_INPUT_MOTION 6 + +typedef xcb_input_button_press_event_t xcb_input_motion_event_t; + +typedef enum xcb_input_notify_mode_t { + XCB_INPUT_NOTIFY_MODE_NORMAL = 0, + XCB_INPUT_NOTIFY_MODE_GRAB = 1, + XCB_INPUT_NOTIFY_MODE_UNGRAB = 2, + XCB_INPUT_NOTIFY_MODE_WHILE_GRABBED = 3, + XCB_INPUT_NOTIFY_MODE_PASSIVE_GRAB = 4, + XCB_INPUT_NOTIFY_MODE_PASSIVE_UNGRAB = 5 +} xcb_input_notify_mode_t; + +typedef enum xcb_input_notify_detail_t { + XCB_INPUT_NOTIFY_DETAIL_ANCESTOR = 0, + XCB_INPUT_NOTIFY_DETAIL_VIRTUAL = 1, + XCB_INPUT_NOTIFY_DETAIL_INFERIOR = 2, + XCB_INPUT_NOTIFY_DETAIL_NONLINEAR = 3, + XCB_INPUT_NOTIFY_DETAIL_NONLINEAR_VIRTUAL = 4, + XCB_INPUT_NOTIFY_DETAIL_POINTER = 5, + XCB_INPUT_NOTIFY_DETAIL_POINTER_ROOT = 6, + XCB_INPUT_NOTIFY_DETAIL_NONE = 7 +} xcb_input_notify_detail_t; + +/** Opcode for xcb_input_enter. */ +#define XCB_INPUT_ENTER 7 + +/** + * @brief xcb_input_enter_event_t + **/ +typedef struct xcb_input_enter_event_t { + uint8_t response_type; + uint8_t extension; + uint16_t sequence; + uint32_t length; + uint16_t event_type; + xcb_input_device_id_t deviceid; + xcb_timestamp_t time; + xcb_input_device_id_t sourceid; + uint8_t mode; + uint8_t detail; + xcb_window_t root; + xcb_window_t event; + xcb_window_t child; + uint32_t full_sequence; + xcb_input_fp1616_t root_x; + xcb_input_fp1616_t root_y; + xcb_input_fp1616_t event_x; + xcb_input_fp1616_t event_y; + uint8_t same_screen; + uint8_t focus; + uint16_t buttons_len; + xcb_input_modifier_info_t mods; + xcb_input_group_info_t group; +} xcb_input_enter_event_t; + +/** Opcode for xcb_input_leave. */ +#define XCB_INPUT_LEAVE 8 + +typedef xcb_input_enter_event_t xcb_input_leave_event_t; + +/** Opcode for xcb_input_focus_in. */ +#define XCB_INPUT_FOCUS_IN 9 + +typedef xcb_input_enter_event_t xcb_input_focus_in_event_t; + +/** Opcode for xcb_input_focus_out. */ +#define XCB_INPUT_FOCUS_OUT 10 + +typedef xcb_input_enter_event_t xcb_input_focus_out_event_t; + +typedef enum xcb_input_hierarchy_mask_t { + XCB_INPUT_HIERARCHY_MASK_MASTER_ADDED = 1, + XCB_INPUT_HIERARCHY_MASK_MASTER_REMOVED = 2, + XCB_INPUT_HIERARCHY_MASK_SLAVE_ADDED = 4, + XCB_INPUT_HIERARCHY_MASK_SLAVE_REMOVED = 8, + XCB_INPUT_HIERARCHY_MASK_SLAVE_ATTACHED = 16, + XCB_INPUT_HIERARCHY_MASK_SLAVE_DETACHED = 32, + XCB_INPUT_HIERARCHY_MASK_DEVICE_ENABLED = 64, + XCB_INPUT_HIERARCHY_MASK_DEVICE_DISABLED = 128 +} xcb_input_hierarchy_mask_t; + +/** + * @brief xcb_input_hierarchy_info_t + **/ +typedef struct xcb_input_hierarchy_info_t { + xcb_input_device_id_t deviceid; + xcb_input_device_id_t attachment; + uint8_t type; + uint8_t enabled; + uint8_t pad0[2]; + uint32_t flags; +} xcb_input_hierarchy_info_t; + +/** + * @brief xcb_input_hierarchy_info_iterator_t + **/ +typedef struct xcb_input_hierarchy_info_iterator_t { + xcb_input_hierarchy_info_t *data; + int rem; + int index; +} xcb_input_hierarchy_info_iterator_t; + +/** Opcode for xcb_input_hierarchy. */ +#define XCB_INPUT_HIERARCHY 11 + +/** + * @brief xcb_input_hierarchy_event_t + **/ +typedef struct xcb_input_hierarchy_event_t { + uint8_t response_type; + uint8_t extension; + uint16_t sequence; + uint32_t length; + uint16_t event_type; + xcb_input_device_id_t deviceid; + xcb_timestamp_t time; + uint32_t flags; + uint16_t num_infos; + uint8_t pad0[10]; + uint32_t full_sequence; +} xcb_input_hierarchy_event_t; + +typedef enum xcb_input_property_flag_t { + XCB_INPUT_PROPERTY_FLAG_DELETED = 0, + XCB_INPUT_PROPERTY_FLAG_CREATED = 1, + XCB_INPUT_PROPERTY_FLAG_MODIFIED = 2 +} xcb_input_property_flag_t; + +/** Opcode for xcb_input_property. */ +#define XCB_INPUT_PROPERTY 12 + +/** + * @brief xcb_input_property_event_t + **/ +typedef struct xcb_input_property_event_t { + uint8_t response_type; + uint8_t extension; + uint16_t sequence; + uint32_t length; + uint16_t event_type; + xcb_input_device_id_t deviceid; + xcb_timestamp_t time; + xcb_atom_t property; + uint8_t what; + uint8_t pad0[11]; + uint32_t full_sequence; +} xcb_input_property_event_t; + +/** Opcode for xcb_input_raw_key_press. */ +#define XCB_INPUT_RAW_KEY_PRESS 13 + +/** + * @brief xcb_input_raw_key_press_event_t + **/ +typedef struct xcb_input_raw_key_press_event_t { + uint8_t response_type; + uint8_t extension; + uint16_t sequence; + uint32_t length; + uint16_t event_type; + xcb_input_device_id_t deviceid; + xcb_timestamp_t time; + uint32_t detail; + xcb_input_device_id_t sourceid; + uint16_t valuators_len; + uint32_t flags; + uint8_t pad0[4]; + uint32_t full_sequence; +} xcb_input_raw_key_press_event_t; + +/** Opcode for xcb_input_raw_key_release. */ +#define XCB_INPUT_RAW_KEY_RELEASE 14 + +typedef xcb_input_raw_key_press_event_t xcb_input_raw_key_release_event_t; + +/** Opcode for xcb_input_raw_button_press. */ +#define XCB_INPUT_RAW_BUTTON_PRESS 15 + +/** + * @brief xcb_input_raw_button_press_event_t + **/ +typedef struct xcb_input_raw_button_press_event_t { + uint8_t response_type; + uint8_t extension; + uint16_t sequence; + uint32_t length; + uint16_t event_type; + xcb_input_device_id_t deviceid; + xcb_timestamp_t time; + uint32_t detail; + xcb_input_device_id_t sourceid; + uint16_t valuators_len; + uint32_t flags; + uint8_t pad0[4]; + uint32_t full_sequence; +} xcb_input_raw_button_press_event_t; + +/** Opcode for xcb_input_raw_button_release. */ +#define XCB_INPUT_RAW_BUTTON_RELEASE 16 + +typedef xcb_input_raw_button_press_event_t xcb_input_raw_button_release_event_t; + +/** Opcode for xcb_input_raw_motion. */ +#define XCB_INPUT_RAW_MOTION 17 + +typedef xcb_input_raw_button_press_event_t xcb_input_raw_motion_event_t; + +typedef enum xcb_input_touch_event_flags_t { + XCB_INPUT_TOUCH_EVENT_FLAGS_TOUCH_PENDING_END = 65536, + XCB_INPUT_TOUCH_EVENT_FLAGS_TOUCH_EMULATING_POINTER = 131072 +} xcb_input_touch_event_flags_t; + +/** Opcode for xcb_input_touch_begin. */ +#define XCB_INPUT_TOUCH_BEGIN 18 + +/** + * @brief xcb_input_touch_begin_event_t + **/ +typedef struct xcb_input_touch_begin_event_t { + uint8_t response_type; + uint8_t extension; + uint16_t sequence; + uint32_t length; + uint16_t event_type; + xcb_input_device_id_t deviceid; + xcb_timestamp_t time; + uint32_t detail; + xcb_window_t root; + xcb_window_t event; + xcb_window_t child; + uint32_t full_sequence; + xcb_input_fp1616_t root_x; + xcb_input_fp1616_t root_y; + xcb_input_fp1616_t event_x; + xcb_input_fp1616_t event_y; + uint16_t buttons_len; + uint16_t valuators_len; + xcb_input_device_id_t sourceid; + uint8_t pad0[2]; + uint32_t flags; + xcb_input_modifier_info_t mods; + xcb_input_group_info_t group; +} xcb_input_touch_begin_event_t; + +/** Opcode for xcb_input_touch_update. */ +#define XCB_INPUT_TOUCH_UPDATE 19 + +typedef xcb_input_touch_begin_event_t xcb_input_touch_update_event_t; + +/** Opcode for xcb_input_touch_end. */ +#define XCB_INPUT_TOUCH_END 20 + +typedef xcb_input_touch_begin_event_t xcb_input_touch_end_event_t; + +typedef enum xcb_input_touch_ownership_flags_t { + XCB_INPUT_TOUCH_OWNERSHIP_FLAGS_NONE = 0 +} xcb_input_touch_ownership_flags_t; + +/** Opcode for xcb_input_touch_ownership. */ +#define XCB_INPUT_TOUCH_OWNERSHIP 21 + +/** + * @brief xcb_input_touch_ownership_event_t + **/ +typedef struct xcb_input_touch_ownership_event_t { + uint8_t response_type; + uint8_t extension; + uint16_t sequence; + uint32_t length; + uint16_t event_type; + xcb_input_device_id_t deviceid; + xcb_timestamp_t time; + uint32_t touchid; + xcb_window_t root; + xcb_window_t event; + xcb_window_t child; + uint32_t full_sequence; + xcb_input_device_id_t sourceid; + uint8_t pad0[2]; + uint32_t flags; + uint8_t pad1[8]; +} xcb_input_touch_ownership_event_t; + +/** Opcode for xcb_input_raw_touch_begin. */ +#define XCB_INPUT_RAW_TOUCH_BEGIN 22 + +/** + * @brief xcb_input_raw_touch_begin_event_t + **/ +typedef struct xcb_input_raw_touch_begin_event_t { + uint8_t response_type; + uint8_t extension; + uint16_t sequence; + uint32_t length; + uint16_t event_type; + xcb_input_device_id_t deviceid; + xcb_timestamp_t time; + uint32_t detail; + xcb_input_device_id_t sourceid; + uint16_t valuators_len; + uint32_t flags; + uint8_t pad0[4]; + uint32_t full_sequence; +} xcb_input_raw_touch_begin_event_t; + +/** Opcode for xcb_input_raw_touch_update. */ +#define XCB_INPUT_RAW_TOUCH_UPDATE 23 + +typedef xcb_input_raw_touch_begin_event_t xcb_input_raw_touch_update_event_t; + +/** Opcode for xcb_input_raw_touch_end. */ +#define XCB_INPUT_RAW_TOUCH_END 24 + +typedef xcb_input_raw_touch_begin_event_t xcb_input_raw_touch_end_event_t; + +/** Opcode for xcb_input_barrier_hit. */ +#define XCB_INPUT_BARRIER_HIT 25 + +/** Opcode for xcb_input_barrier_leave. */ +#define XCB_INPUT_BARRIER_LEAVE 26 + +/** Opcode for xcb_input_device. */ +#define XCB_INPUT_DEVICE 0 + +/** + * @brief xcb_input_device_error_t + **/ +typedef struct xcb_input_device_error_t { + uint8_t response_type; + uint8_t error_code; + uint16_t sequence; +} xcb_input_device_error_t; + +/** Opcode for xcb_input_event. */ +#define XCB_INPUT_EVENT 1 + +/** + * @brief xcb_input_event_error_t + **/ +typedef struct xcb_input_event_error_t { + uint8_t response_type; + uint8_t error_code; + uint16_t sequence; +} xcb_input_event_error_t; + +/** Opcode for xcb_input_mode. */ +#define XCB_INPUT_MODE 2 + +/** + * @brief xcb_input_mode_error_t + **/ +typedef struct xcb_input_mode_error_t { + uint8_t response_type; + uint8_t error_code; + uint16_t sequence; +} xcb_input_mode_error_t; + +/** Opcode for xcb_input_device_busy. */ +#define XCB_INPUT_DEVICE_BUSY 3 + +/** + * @brief xcb_input_device_busy_error_t + **/ +typedef struct xcb_input_device_busy_error_t { + uint8_t response_type; + uint8_t error_code; + uint16_t sequence; +} xcb_input_device_busy_error_t; + +/** Opcode for xcb_input_class. */ +#define XCB_INPUT_CLASS 4 + +/** + * @brief xcb_input_class_error_t + **/ +typedef struct xcb_input_class_error_t { + uint8_t response_type; + uint8_t error_code; + uint16_t sequence; +} xcb_input_class_error_t; + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_event_class_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_event_class_t) + */ +void +xcb_input_event_class_next (xcb_input_event_class_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_event_class_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_event_class_end (xcb_input_event_class_iterator_t i); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_key_code_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_key_code_t) + */ +void +xcb_input_key_code_next (xcb_input_key_code_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_key_code_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_key_code_end (xcb_input_key_code_iterator_t i); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_device_id_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_device_id_t) + */ +void +xcb_input_device_id_next (xcb_input_device_id_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_device_id_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_device_id_end (xcb_input_device_id_iterator_t i); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_fp1616_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_fp1616_t) + */ +void +xcb_input_fp1616_next (xcb_input_fp1616_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_fp1616_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_fp1616_end (xcb_input_fp1616_iterator_t i); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_fp3232_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_fp3232_t) + */ +void +xcb_input_fp3232_next (xcb_input_fp3232_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_fp3232_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_fp3232_end (xcb_input_fp3232_iterator_t i); + +int +xcb_input_get_extension_version_sizeof (const void *_buffer); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_input_get_extension_version_cookie_t +xcb_input_get_extension_version (xcb_connection_t *c, + uint16_t name_len, + const char *name); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will cause + * a reply to be generated. Any returned error will be + * placed in the event queue. + */ +xcb_input_get_extension_version_cookie_t +xcb_input_get_extension_version_unchecked (xcb_connection_t *c, + uint16_t name_len, + const char *name); + +/** + * Return the reply + * @param c The connection + * @param cookie The cookie + * @param e The xcb_generic_error_t supplied + * + * Returns the reply of the request asked by + * + * The parameter @p e supplied to this function must be NULL if + * xcb_input_get_extension_version_unchecked(). is used. + * Otherwise, it stores the error if any. + * + * The returned value must be freed by the caller using free(). + */ +xcb_input_get_extension_version_reply_t * +xcb_input_get_extension_version_reply (xcb_connection_t *c, + xcb_input_get_extension_version_cookie_t cookie /**< */, + xcb_generic_error_t **e); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_device_info_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_device_info_t) + */ +void +xcb_input_device_info_next (xcb_input_device_info_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_device_info_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_device_info_end (xcb_input_device_info_iterator_t i); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_key_info_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_key_info_t) + */ +void +xcb_input_key_info_next (xcb_input_key_info_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_key_info_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_key_info_end (xcb_input_key_info_iterator_t i); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_button_info_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_button_info_t) + */ +void +xcb_input_button_info_next (xcb_input_button_info_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_button_info_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_button_info_end (xcb_input_button_info_iterator_t i); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_axis_info_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_axis_info_t) + */ +void +xcb_input_axis_info_next (xcb_input_axis_info_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_axis_info_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_axis_info_end (xcb_input_axis_info_iterator_t i); + +int +xcb_input_valuator_info_sizeof (const void *_buffer); + +xcb_input_axis_info_t * +xcb_input_valuator_info_axes (const xcb_input_valuator_info_t *R); + +int +xcb_input_valuator_info_axes_length (const xcb_input_valuator_info_t *R); + +xcb_input_axis_info_iterator_t +xcb_input_valuator_info_axes_iterator (const xcb_input_valuator_info_t *R); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_valuator_info_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_valuator_info_t) + */ +void +xcb_input_valuator_info_next (xcb_input_valuator_info_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_valuator_info_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_valuator_info_end (xcb_input_valuator_info_iterator_t i); + +xcb_input_axis_info_t * +xcb_input_input_info_info_valuator_axes (const xcb_input_input_info_info_t *S); + +int +xcb_input_input_info_info_valuator_axes_length (const xcb_input_input_info_t *R, + const xcb_input_input_info_info_t *S); + +xcb_input_axis_info_iterator_t +xcb_input_input_info_info_valuator_axes_iterator (const xcb_input_input_info_t *R, + const xcb_input_input_info_info_t *S); + +int +xcb_input_input_info_info_serialize (void **_buffer, + uint8_t class_id, + const xcb_input_input_info_info_t *_aux); + +int +xcb_input_input_info_info_unpack (const void *_buffer, + uint8_t class_id, + xcb_input_input_info_info_t *_aux); + +int +xcb_input_input_info_info_sizeof (const void *_buffer, + uint8_t class_id); + +int +xcb_input_input_info_sizeof (const void *_buffer); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_input_info_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_input_info_t) + */ +void +xcb_input_input_info_next (xcb_input_input_info_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_input_info_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_input_info_end (xcb_input_input_info_iterator_t i); + +int +xcb_input_device_name_sizeof (const void *_buffer); + +char * +xcb_input_device_name_string (const xcb_input_device_name_t *R); + +int +xcb_input_device_name_string_length (const xcb_input_device_name_t *R); + +xcb_generic_iterator_t +xcb_input_device_name_string_end (const xcb_input_device_name_t *R); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_device_name_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_device_name_t) + */ +void +xcb_input_device_name_next (xcb_input_device_name_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_device_name_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_device_name_end (xcb_input_device_name_iterator_t i); + +int +xcb_input_list_input_devices_sizeof (const void *_buffer); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_input_list_input_devices_cookie_t +xcb_input_list_input_devices (xcb_connection_t *c); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will cause + * a reply to be generated. Any returned error will be + * placed in the event queue. + */ +xcb_input_list_input_devices_cookie_t +xcb_input_list_input_devices_unchecked (xcb_connection_t *c); + +xcb_input_device_info_t * +xcb_input_list_input_devices_devices (const xcb_input_list_input_devices_reply_t *R); + +int +xcb_input_list_input_devices_devices_length (const xcb_input_list_input_devices_reply_t *R); + +xcb_input_device_info_iterator_t +xcb_input_list_input_devices_devices_iterator (const xcb_input_list_input_devices_reply_t *R); + +int +xcb_input_list_input_devices_infos_length (const xcb_input_list_input_devices_reply_t *R); + +xcb_input_input_info_iterator_t +xcb_input_list_input_devices_infos_iterator (const xcb_input_list_input_devices_reply_t *R); + +int +xcb_input_list_input_devices_names_length (const xcb_input_list_input_devices_reply_t *R); + +xcb_str_iterator_t +xcb_input_list_input_devices_names_iterator (const xcb_input_list_input_devices_reply_t *R); + +/** + * Return the reply + * @param c The connection + * @param cookie The cookie + * @param e The xcb_generic_error_t supplied + * + * Returns the reply of the request asked by + * + * The parameter @p e supplied to this function must be NULL if + * xcb_input_list_input_devices_unchecked(). is used. + * Otherwise, it stores the error if any. + * + * The returned value must be freed by the caller using free(). + */ +xcb_input_list_input_devices_reply_t * +xcb_input_list_input_devices_reply (xcb_connection_t *c, + xcb_input_list_input_devices_cookie_t cookie /**< */, + xcb_generic_error_t **e); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_event_type_base_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_event_type_base_t) + */ +void +xcb_input_event_type_base_next (xcb_input_event_type_base_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_event_type_base_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_event_type_base_end (xcb_input_event_type_base_iterator_t i); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_input_class_info_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_input_class_info_t) + */ +void +xcb_input_input_class_info_next (xcb_input_input_class_info_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_input_class_info_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_input_class_info_end (xcb_input_input_class_info_iterator_t i); + +int +xcb_input_open_device_sizeof (const void *_buffer); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_input_open_device_cookie_t +xcb_input_open_device (xcb_connection_t *c, + uint8_t device_id); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will cause + * a reply to be generated. Any returned error will be + * placed in the event queue. + */ +xcb_input_open_device_cookie_t +xcb_input_open_device_unchecked (xcb_connection_t *c, + uint8_t device_id); + +xcb_input_input_class_info_t * +xcb_input_open_device_class_info (const xcb_input_open_device_reply_t *R); + +int +xcb_input_open_device_class_info_length (const xcb_input_open_device_reply_t *R); + +xcb_input_input_class_info_iterator_t +xcb_input_open_device_class_info_iterator (const xcb_input_open_device_reply_t *R); + +/** + * Return the reply + * @param c The connection + * @param cookie The cookie + * @param e The xcb_generic_error_t supplied + * + * Returns the reply of the request asked by + * + * The parameter @p e supplied to this function must be NULL if + * xcb_input_open_device_unchecked(). is used. + * Otherwise, it stores the error if any. + * + * The returned value must be freed by the caller using free(). + */ +xcb_input_open_device_reply_t * +xcb_input_open_device_reply (xcb_connection_t *c, + xcb_input_open_device_cookie_t cookie /**< */, + xcb_generic_error_t **e); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will not cause + * a reply to be generated. Any returned error will be + * saved for handling by xcb_request_check(). + */ +xcb_void_cookie_t +xcb_input_close_device_checked (xcb_connection_t *c, + uint8_t device_id); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_void_cookie_t +xcb_input_close_device (xcb_connection_t *c, + uint8_t device_id); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_input_set_device_mode_cookie_t +xcb_input_set_device_mode (xcb_connection_t *c, + uint8_t device_id, + uint8_t mode); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will cause + * a reply to be generated. Any returned error will be + * placed in the event queue. + */ +xcb_input_set_device_mode_cookie_t +xcb_input_set_device_mode_unchecked (xcb_connection_t *c, + uint8_t device_id, + uint8_t mode); + +/** + * Return the reply + * @param c The connection + * @param cookie The cookie + * @param e The xcb_generic_error_t supplied + * + * Returns the reply of the request asked by + * + * The parameter @p e supplied to this function must be NULL if + * xcb_input_set_device_mode_unchecked(). is used. + * Otherwise, it stores the error if any. + * + * The returned value must be freed by the caller using free(). + */ +xcb_input_set_device_mode_reply_t * +xcb_input_set_device_mode_reply (xcb_connection_t *c, + xcb_input_set_device_mode_cookie_t cookie /**< */, + xcb_generic_error_t **e); + +int +xcb_input_select_extension_event_sizeof (const void *_buffer); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will not cause + * a reply to be generated. Any returned error will be + * saved for handling by xcb_request_check(). + */ +xcb_void_cookie_t +xcb_input_select_extension_event_checked (xcb_connection_t *c, + xcb_window_t window, + uint16_t num_classes, + const xcb_input_event_class_t *classes); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_void_cookie_t +xcb_input_select_extension_event (xcb_connection_t *c, + xcb_window_t window, + uint16_t num_classes, + const xcb_input_event_class_t *classes); + +xcb_input_event_class_t * +xcb_input_select_extension_event_classes (const xcb_input_select_extension_event_request_t *R); + +int +xcb_input_select_extension_event_classes_length (const xcb_input_select_extension_event_request_t *R); + +xcb_generic_iterator_t +xcb_input_select_extension_event_classes_end (const xcb_input_select_extension_event_request_t *R); + +int +xcb_input_get_selected_extension_events_sizeof (const void *_buffer); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_input_get_selected_extension_events_cookie_t +xcb_input_get_selected_extension_events (xcb_connection_t *c, + xcb_window_t window); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will cause + * a reply to be generated. Any returned error will be + * placed in the event queue. + */ +xcb_input_get_selected_extension_events_cookie_t +xcb_input_get_selected_extension_events_unchecked (xcb_connection_t *c, + xcb_window_t window); + +xcb_input_event_class_t * +xcb_input_get_selected_extension_events_this_classes (const xcb_input_get_selected_extension_events_reply_t *R); + +int +xcb_input_get_selected_extension_events_this_classes_length (const xcb_input_get_selected_extension_events_reply_t *R); + +xcb_generic_iterator_t +xcb_input_get_selected_extension_events_this_classes_end (const xcb_input_get_selected_extension_events_reply_t *R); + +xcb_input_event_class_t * +xcb_input_get_selected_extension_events_all_classes (const xcb_input_get_selected_extension_events_reply_t *R); + +int +xcb_input_get_selected_extension_events_all_classes_length (const xcb_input_get_selected_extension_events_reply_t *R); + +xcb_generic_iterator_t +xcb_input_get_selected_extension_events_all_classes_end (const xcb_input_get_selected_extension_events_reply_t *R); + +/** + * Return the reply + * @param c The connection + * @param cookie The cookie + * @param e The xcb_generic_error_t supplied + * + * Returns the reply of the request asked by + * + * The parameter @p e supplied to this function must be NULL if + * xcb_input_get_selected_extension_events_unchecked(). is used. + * Otherwise, it stores the error if any. + * + * The returned value must be freed by the caller using free(). + */ +xcb_input_get_selected_extension_events_reply_t * +xcb_input_get_selected_extension_events_reply (xcb_connection_t *c, + xcb_input_get_selected_extension_events_cookie_t cookie /**< */, + xcb_generic_error_t **e); + +int +xcb_input_change_device_dont_propagate_list_sizeof (const void *_buffer); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will not cause + * a reply to be generated. Any returned error will be + * saved for handling by xcb_request_check(). + */ +xcb_void_cookie_t +xcb_input_change_device_dont_propagate_list_checked (xcb_connection_t *c, + xcb_window_t window, + uint16_t num_classes, + uint8_t mode, + const xcb_input_event_class_t *classes); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_void_cookie_t +xcb_input_change_device_dont_propagate_list (xcb_connection_t *c, + xcb_window_t window, + uint16_t num_classes, + uint8_t mode, + const xcb_input_event_class_t *classes); + +xcb_input_event_class_t * +xcb_input_change_device_dont_propagate_list_classes (const xcb_input_change_device_dont_propagate_list_request_t *R); + +int +xcb_input_change_device_dont_propagate_list_classes_length (const xcb_input_change_device_dont_propagate_list_request_t *R); + +xcb_generic_iterator_t +xcb_input_change_device_dont_propagate_list_classes_end (const xcb_input_change_device_dont_propagate_list_request_t *R); + +int +xcb_input_get_device_dont_propagate_list_sizeof (const void *_buffer); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_input_get_device_dont_propagate_list_cookie_t +xcb_input_get_device_dont_propagate_list (xcb_connection_t *c, + xcb_window_t window); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will cause + * a reply to be generated. Any returned error will be + * placed in the event queue. + */ +xcb_input_get_device_dont_propagate_list_cookie_t +xcb_input_get_device_dont_propagate_list_unchecked (xcb_connection_t *c, + xcb_window_t window); + +xcb_input_event_class_t * +xcb_input_get_device_dont_propagate_list_classes (const xcb_input_get_device_dont_propagate_list_reply_t *R); + +int +xcb_input_get_device_dont_propagate_list_classes_length (const xcb_input_get_device_dont_propagate_list_reply_t *R); + +xcb_generic_iterator_t +xcb_input_get_device_dont_propagate_list_classes_end (const xcb_input_get_device_dont_propagate_list_reply_t *R); + +/** + * Return the reply + * @param c The connection + * @param cookie The cookie + * @param e The xcb_generic_error_t supplied + * + * Returns the reply of the request asked by + * + * The parameter @p e supplied to this function must be NULL if + * xcb_input_get_device_dont_propagate_list_unchecked(). is used. + * Otherwise, it stores the error if any. + * + * The returned value must be freed by the caller using free(). + */ +xcb_input_get_device_dont_propagate_list_reply_t * +xcb_input_get_device_dont_propagate_list_reply (xcb_connection_t *c, + xcb_input_get_device_dont_propagate_list_cookie_t cookie /**< */, + xcb_generic_error_t **e); + +int +xcb_input_device_time_coord_sizeof (const void *_buffer, + uint8_t num_axes); + +int32_t * +xcb_input_device_time_coord_axisvalues (const xcb_input_device_time_coord_t *R); + +int +xcb_input_device_time_coord_axisvalues_length (const xcb_input_device_time_coord_t *R, + uint8_t num_axes); + +xcb_generic_iterator_t +xcb_input_device_time_coord_axisvalues_end (const xcb_input_device_time_coord_t *R, + uint8_t num_axes); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_device_time_coord_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_device_time_coord_t) + */ +void +xcb_input_device_time_coord_next (xcb_input_device_time_coord_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_device_time_coord_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_device_time_coord_end (xcb_input_device_time_coord_iterator_t i); + +int +xcb_input_get_device_motion_events_sizeof (const void *_buffer); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_input_get_device_motion_events_cookie_t +xcb_input_get_device_motion_events (xcb_connection_t *c, + xcb_timestamp_t start, + xcb_timestamp_t stop, + uint8_t device_id); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will cause + * a reply to be generated. Any returned error will be + * placed in the event queue. + */ +xcb_input_get_device_motion_events_cookie_t +xcb_input_get_device_motion_events_unchecked (xcb_connection_t *c, + xcb_timestamp_t start, + xcb_timestamp_t stop, + uint8_t device_id); + +int +xcb_input_get_device_motion_events_events_length (const xcb_input_get_device_motion_events_reply_t *R); + +xcb_input_device_time_coord_iterator_t +xcb_input_get_device_motion_events_events_iterator (const xcb_input_get_device_motion_events_reply_t *R); + +/** + * Return the reply + * @param c The connection + * @param cookie The cookie + * @param e The xcb_generic_error_t supplied + * + * Returns the reply of the request asked by + * + * The parameter @p e supplied to this function must be NULL if + * xcb_input_get_device_motion_events_unchecked(). is used. + * Otherwise, it stores the error if any. + * + * The returned value must be freed by the caller using free(). + */ +xcb_input_get_device_motion_events_reply_t * +xcb_input_get_device_motion_events_reply (xcb_connection_t *c, + xcb_input_get_device_motion_events_cookie_t cookie /**< */, + xcb_generic_error_t **e); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_input_change_keyboard_device_cookie_t +xcb_input_change_keyboard_device (xcb_connection_t *c, + uint8_t device_id); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will cause + * a reply to be generated. Any returned error will be + * placed in the event queue. + */ +xcb_input_change_keyboard_device_cookie_t +xcb_input_change_keyboard_device_unchecked (xcb_connection_t *c, + uint8_t device_id); + +/** + * Return the reply + * @param c The connection + * @param cookie The cookie + * @param e The xcb_generic_error_t supplied + * + * Returns the reply of the request asked by + * + * The parameter @p e supplied to this function must be NULL if + * xcb_input_change_keyboard_device_unchecked(). is used. + * Otherwise, it stores the error if any. + * + * The returned value must be freed by the caller using free(). + */ +xcb_input_change_keyboard_device_reply_t * +xcb_input_change_keyboard_device_reply (xcb_connection_t *c, + xcb_input_change_keyboard_device_cookie_t cookie /**< */, + xcb_generic_error_t **e); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_input_change_pointer_device_cookie_t +xcb_input_change_pointer_device (xcb_connection_t *c, + uint8_t x_axis, + uint8_t y_axis, + uint8_t device_id); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will cause + * a reply to be generated. Any returned error will be + * placed in the event queue. + */ +xcb_input_change_pointer_device_cookie_t +xcb_input_change_pointer_device_unchecked (xcb_connection_t *c, + uint8_t x_axis, + uint8_t y_axis, + uint8_t device_id); + +/** + * Return the reply + * @param c The connection + * @param cookie The cookie + * @param e The xcb_generic_error_t supplied + * + * Returns the reply of the request asked by + * + * The parameter @p e supplied to this function must be NULL if + * xcb_input_change_pointer_device_unchecked(). is used. + * Otherwise, it stores the error if any. + * + * The returned value must be freed by the caller using free(). + */ +xcb_input_change_pointer_device_reply_t * +xcb_input_change_pointer_device_reply (xcb_connection_t *c, + xcb_input_change_pointer_device_cookie_t cookie /**< */, + xcb_generic_error_t **e); + +int +xcb_input_grab_device_sizeof (const void *_buffer); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_input_grab_device_cookie_t +xcb_input_grab_device (xcb_connection_t *c, + xcb_window_t grab_window, + xcb_timestamp_t time, + uint16_t num_classes, + uint8_t this_device_mode, + uint8_t other_device_mode, + uint8_t owner_events, + uint8_t device_id, + const xcb_input_event_class_t *classes); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will cause + * a reply to be generated. Any returned error will be + * placed in the event queue. + */ +xcb_input_grab_device_cookie_t +xcb_input_grab_device_unchecked (xcb_connection_t *c, + xcb_window_t grab_window, + xcb_timestamp_t time, + uint16_t num_classes, + uint8_t this_device_mode, + uint8_t other_device_mode, + uint8_t owner_events, + uint8_t device_id, + const xcb_input_event_class_t *classes); + +/** + * Return the reply + * @param c The connection + * @param cookie The cookie + * @param e The xcb_generic_error_t supplied + * + * Returns the reply of the request asked by + * + * The parameter @p e supplied to this function must be NULL if + * xcb_input_grab_device_unchecked(). is used. + * Otherwise, it stores the error if any. + * + * The returned value must be freed by the caller using free(). + */ +xcb_input_grab_device_reply_t * +xcb_input_grab_device_reply (xcb_connection_t *c, + xcb_input_grab_device_cookie_t cookie /**< */, + xcb_generic_error_t **e); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will not cause + * a reply to be generated. Any returned error will be + * saved for handling by xcb_request_check(). + */ +xcb_void_cookie_t +xcb_input_ungrab_device_checked (xcb_connection_t *c, + xcb_timestamp_t time, + uint8_t device_id); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_void_cookie_t +xcb_input_ungrab_device (xcb_connection_t *c, + xcb_timestamp_t time, + uint8_t device_id); + +int +xcb_input_grab_device_key_sizeof (const void *_buffer); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will not cause + * a reply to be generated. Any returned error will be + * saved for handling by xcb_request_check(). + */ +xcb_void_cookie_t +xcb_input_grab_device_key_checked (xcb_connection_t *c, + xcb_window_t grab_window, + uint16_t num_classes, + uint16_t modifiers, + uint8_t modifier_device, + uint8_t grabbed_device, + uint8_t key, + uint8_t this_device_mode, + uint8_t other_device_mode, + uint8_t owner_events, + const xcb_input_event_class_t *classes); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_void_cookie_t +xcb_input_grab_device_key (xcb_connection_t *c, + xcb_window_t grab_window, + uint16_t num_classes, + uint16_t modifiers, + uint8_t modifier_device, + uint8_t grabbed_device, + uint8_t key, + uint8_t this_device_mode, + uint8_t other_device_mode, + uint8_t owner_events, + const xcb_input_event_class_t *classes); + +xcb_input_event_class_t * +xcb_input_grab_device_key_classes (const xcb_input_grab_device_key_request_t *R); + +int +xcb_input_grab_device_key_classes_length (const xcb_input_grab_device_key_request_t *R); + +xcb_generic_iterator_t +xcb_input_grab_device_key_classes_end (const xcb_input_grab_device_key_request_t *R); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will not cause + * a reply to be generated. Any returned error will be + * saved for handling by xcb_request_check(). + */ +xcb_void_cookie_t +xcb_input_ungrab_device_key_checked (xcb_connection_t *c, + xcb_window_t grabWindow, + uint16_t modifiers, + uint8_t modifier_device, + uint8_t key, + uint8_t grabbed_device); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_void_cookie_t +xcb_input_ungrab_device_key (xcb_connection_t *c, + xcb_window_t grabWindow, + uint16_t modifiers, + uint8_t modifier_device, + uint8_t key, + uint8_t grabbed_device); + +int +xcb_input_grab_device_button_sizeof (const void *_buffer); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will not cause + * a reply to be generated. Any returned error will be + * saved for handling by xcb_request_check(). + */ +xcb_void_cookie_t +xcb_input_grab_device_button_checked (xcb_connection_t *c, + xcb_window_t grab_window, + uint8_t grabbed_device, + uint8_t modifier_device, + uint16_t num_classes, + uint16_t modifiers, + uint8_t this_device_mode, + uint8_t other_device_mode, + uint8_t button, + uint8_t owner_events, + const xcb_input_event_class_t *classes); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_void_cookie_t +xcb_input_grab_device_button (xcb_connection_t *c, + xcb_window_t grab_window, + uint8_t grabbed_device, + uint8_t modifier_device, + uint16_t num_classes, + uint16_t modifiers, + uint8_t this_device_mode, + uint8_t other_device_mode, + uint8_t button, + uint8_t owner_events, + const xcb_input_event_class_t *classes); + +xcb_input_event_class_t * +xcb_input_grab_device_button_classes (const xcb_input_grab_device_button_request_t *R); + +int +xcb_input_grab_device_button_classes_length (const xcb_input_grab_device_button_request_t *R); + +xcb_generic_iterator_t +xcb_input_grab_device_button_classes_end (const xcb_input_grab_device_button_request_t *R); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will not cause + * a reply to be generated. Any returned error will be + * saved for handling by xcb_request_check(). + */ +xcb_void_cookie_t +xcb_input_ungrab_device_button_checked (xcb_connection_t *c, + xcb_window_t grab_window, + uint16_t modifiers, + uint8_t modifier_device, + uint8_t button, + uint8_t grabbed_device); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_void_cookie_t +xcb_input_ungrab_device_button (xcb_connection_t *c, + xcb_window_t grab_window, + uint16_t modifiers, + uint8_t modifier_device, + uint8_t button, + uint8_t grabbed_device); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will not cause + * a reply to be generated. Any returned error will be + * saved for handling by xcb_request_check(). + */ +xcb_void_cookie_t +xcb_input_allow_device_events_checked (xcb_connection_t *c, + xcb_timestamp_t time, + uint8_t mode, + uint8_t device_id); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_void_cookie_t +xcb_input_allow_device_events (xcb_connection_t *c, + xcb_timestamp_t time, + uint8_t mode, + uint8_t device_id); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_input_get_device_focus_cookie_t +xcb_input_get_device_focus (xcb_connection_t *c, + uint8_t device_id); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will cause + * a reply to be generated. Any returned error will be + * placed in the event queue. + */ +xcb_input_get_device_focus_cookie_t +xcb_input_get_device_focus_unchecked (xcb_connection_t *c, + uint8_t device_id); + +/** + * Return the reply + * @param c The connection + * @param cookie The cookie + * @param e The xcb_generic_error_t supplied + * + * Returns the reply of the request asked by + * + * The parameter @p e supplied to this function must be NULL if + * xcb_input_get_device_focus_unchecked(). is used. + * Otherwise, it stores the error if any. + * + * The returned value must be freed by the caller using free(). + */ +xcb_input_get_device_focus_reply_t * +xcb_input_get_device_focus_reply (xcb_connection_t *c, + xcb_input_get_device_focus_cookie_t cookie /**< */, + xcb_generic_error_t **e); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will not cause + * a reply to be generated. Any returned error will be + * saved for handling by xcb_request_check(). + */ +xcb_void_cookie_t +xcb_input_set_device_focus_checked (xcb_connection_t *c, + xcb_window_t focus, + xcb_timestamp_t time, + uint8_t revert_to, + uint8_t device_id); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_void_cookie_t +xcb_input_set_device_focus (xcb_connection_t *c, + xcb_window_t focus, + xcb_timestamp_t time, + uint8_t revert_to, + uint8_t device_id); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_kbd_feedback_state_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_kbd_feedback_state_t) + */ +void +xcb_input_kbd_feedback_state_next (xcb_input_kbd_feedback_state_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_kbd_feedback_state_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_kbd_feedback_state_end (xcb_input_kbd_feedback_state_iterator_t i); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_ptr_feedback_state_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_ptr_feedback_state_t) + */ +void +xcb_input_ptr_feedback_state_next (xcb_input_ptr_feedback_state_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_ptr_feedback_state_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_ptr_feedback_state_end (xcb_input_ptr_feedback_state_iterator_t i); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_integer_feedback_state_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_integer_feedback_state_t) + */ +void +xcb_input_integer_feedback_state_next (xcb_input_integer_feedback_state_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_integer_feedback_state_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_integer_feedback_state_end (xcb_input_integer_feedback_state_iterator_t i); + +int +xcb_input_string_feedback_state_sizeof (const void *_buffer); + +xcb_keysym_t * +xcb_input_string_feedback_state_keysyms (const xcb_input_string_feedback_state_t *R); + +int +xcb_input_string_feedback_state_keysyms_length (const xcb_input_string_feedback_state_t *R); + +xcb_generic_iterator_t +xcb_input_string_feedback_state_keysyms_end (const xcb_input_string_feedback_state_t *R); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_string_feedback_state_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_string_feedback_state_t) + */ +void +xcb_input_string_feedback_state_next (xcb_input_string_feedback_state_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_string_feedback_state_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_string_feedback_state_end (xcb_input_string_feedback_state_iterator_t i); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_bell_feedback_state_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_bell_feedback_state_t) + */ +void +xcb_input_bell_feedback_state_next (xcb_input_bell_feedback_state_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_bell_feedback_state_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_bell_feedback_state_end (xcb_input_bell_feedback_state_iterator_t i); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_led_feedback_state_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_led_feedback_state_t) + */ +void +xcb_input_led_feedback_state_next (xcb_input_led_feedback_state_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_led_feedback_state_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_led_feedback_state_end (xcb_input_led_feedback_state_iterator_t i); + +xcb_keysym_t * +xcb_input_feedback_state_data_string_keysyms (const xcb_input_feedback_state_data_t *S); + +int +xcb_input_feedback_state_data_string_keysyms_length (const xcb_input_feedback_state_t *R, + const xcb_input_feedback_state_data_t *S); + +xcb_generic_iterator_t +xcb_input_feedback_state_data_string_keysyms_end (const xcb_input_feedback_state_t *R, + const xcb_input_feedback_state_data_t *S); + +int +xcb_input_feedback_state_data_serialize (void **_buffer, + uint8_t class_id, + const xcb_input_feedback_state_data_t *_aux); + +int +xcb_input_feedback_state_data_unpack (const void *_buffer, + uint8_t class_id, + xcb_input_feedback_state_data_t *_aux); + +int +xcb_input_feedback_state_data_sizeof (const void *_buffer, + uint8_t class_id); + +int +xcb_input_feedback_state_sizeof (const void *_buffer); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_feedback_state_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_feedback_state_t) + */ +void +xcb_input_feedback_state_next (xcb_input_feedback_state_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_feedback_state_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_feedback_state_end (xcb_input_feedback_state_iterator_t i); + +int +xcb_input_get_feedback_control_sizeof (const void *_buffer); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_input_get_feedback_control_cookie_t +xcb_input_get_feedback_control (xcb_connection_t *c, + uint8_t device_id); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will cause + * a reply to be generated. Any returned error will be + * placed in the event queue. + */ +xcb_input_get_feedback_control_cookie_t +xcb_input_get_feedback_control_unchecked (xcb_connection_t *c, + uint8_t device_id); + +int +xcb_input_get_feedback_control_feedbacks_length (const xcb_input_get_feedback_control_reply_t *R); + +xcb_input_feedback_state_iterator_t +xcb_input_get_feedback_control_feedbacks_iterator (const xcb_input_get_feedback_control_reply_t *R); + +/** + * Return the reply + * @param c The connection + * @param cookie The cookie + * @param e The xcb_generic_error_t supplied + * + * Returns the reply of the request asked by + * + * The parameter @p e supplied to this function must be NULL if + * xcb_input_get_feedback_control_unchecked(). is used. + * Otherwise, it stores the error if any. + * + * The returned value must be freed by the caller using free(). + */ +xcb_input_get_feedback_control_reply_t * +xcb_input_get_feedback_control_reply (xcb_connection_t *c, + xcb_input_get_feedback_control_cookie_t cookie /**< */, + xcb_generic_error_t **e); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_kbd_feedback_ctl_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_kbd_feedback_ctl_t) + */ +void +xcb_input_kbd_feedback_ctl_next (xcb_input_kbd_feedback_ctl_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_kbd_feedback_ctl_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_kbd_feedback_ctl_end (xcb_input_kbd_feedback_ctl_iterator_t i); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_ptr_feedback_ctl_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_ptr_feedback_ctl_t) + */ +void +xcb_input_ptr_feedback_ctl_next (xcb_input_ptr_feedback_ctl_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_ptr_feedback_ctl_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_ptr_feedback_ctl_end (xcb_input_ptr_feedback_ctl_iterator_t i); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_integer_feedback_ctl_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_integer_feedback_ctl_t) + */ +void +xcb_input_integer_feedback_ctl_next (xcb_input_integer_feedback_ctl_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_integer_feedback_ctl_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_integer_feedback_ctl_end (xcb_input_integer_feedback_ctl_iterator_t i); + +int +xcb_input_string_feedback_ctl_sizeof (const void *_buffer); + +xcb_keysym_t * +xcb_input_string_feedback_ctl_keysyms (const xcb_input_string_feedback_ctl_t *R); + +int +xcb_input_string_feedback_ctl_keysyms_length (const xcb_input_string_feedback_ctl_t *R); + +xcb_generic_iterator_t +xcb_input_string_feedback_ctl_keysyms_end (const xcb_input_string_feedback_ctl_t *R); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_string_feedback_ctl_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_string_feedback_ctl_t) + */ +void +xcb_input_string_feedback_ctl_next (xcb_input_string_feedback_ctl_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_string_feedback_ctl_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_string_feedback_ctl_end (xcb_input_string_feedback_ctl_iterator_t i); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_bell_feedback_ctl_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_bell_feedback_ctl_t) + */ +void +xcb_input_bell_feedback_ctl_next (xcb_input_bell_feedback_ctl_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_bell_feedback_ctl_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_bell_feedback_ctl_end (xcb_input_bell_feedback_ctl_iterator_t i); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_led_feedback_ctl_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_led_feedback_ctl_t) + */ +void +xcb_input_led_feedback_ctl_next (xcb_input_led_feedback_ctl_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_led_feedback_ctl_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_led_feedback_ctl_end (xcb_input_led_feedback_ctl_iterator_t i); + +xcb_keysym_t * +xcb_input_feedback_ctl_data_string_keysyms (const xcb_input_feedback_ctl_data_t *S); + +int +xcb_input_feedback_ctl_data_string_keysyms_length (const xcb_input_feedback_ctl_t *R, + const xcb_input_feedback_ctl_data_t *S); + +xcb_generic_iterator_t +xcb_input_feedback_ctl_data_string_keysyms_end (const xcb_input_feedback_ctl_t *R, + const xcb_input_feedback_ctl_data_t *S); + +int +xcb_input_feedback_ctl_data_serialize (void **_buffer, + uint8_t class_id, + const xcb_input_feedback_ctl_data_t *_aux); + +int +xcb_input_feedback_ctl_data_unpack (const void *_buffer, + uint8_t class_id, + xcb_input_feedback_ctl_data_t *_aux); + +int +xcb_input_feedback_ctl_data_sizeof (const void *_buffer, + uint8_t class_id); + +int +xcb_input_feedback_ctl_sizeof (const void *_buffer); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_feedback_ctl_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_feedback_ctl_t) + */ +void +xcb_input_feedback_ctl_next (xcb_input_feedback_ctl_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_feedback_ctl_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_feedback_ctl_end (xcb_input_feedback_ctl_iterator_t i); + +int +xcb_input_change_feedback_control_sizeof (const void *_buffer); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will not cause + * a reply to be generated. Any returned error will be + * saved for handling by xcb_request_check(). + */ +xcb_void_cookie_t +xcb_input_change_feedback_control_checked (xcb_connection_t *c, + uint32_t mask, + uint8_t device_id, + uint8_t feedback_id, + xcb_input_feedback_ctl_t *feedback); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_void_cookie_t +xcb_input_change_feedback_control (xcb_connection_t *c, + uint32_t mask, + uint8_t device_id, + uint8_t feedback_id, + xcb_input_feedback_ctl_t *feedback); + +xcb_input_feedback_ctl_t * +xcb_input_change_feedback_control_feedback (const xcb_input_change_feedback_control_request_t *R); + +int +xcb_input_get_device_key_mapping_sizeof (const void *_buffer); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_input_get_device_key_mapping_cookie_t +xcb_input_get_device_key_mapping (xcb_connection_t *c, + uint8_t device_id, + xcb_input_key_code_t first_keycode, + uint8_t count); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will cause + * a reply to be generated. Any returned error will be + * placed in the event queue. + */ +xcb_input_get_device_key_mapping_cookie_t +xcb_input_get_device_key_mapping_unchecked (xcb_connection_t *c, + uint8_t device_id, + xcb_input_key_code_t first_keycode, + uint8_t count); + +xcb_keysym_t * +xcb_input_get_device_key_mapping_keysyms (const xcb_input_get_device_key_mapping_reply_t *R); + +int +xcb_input_get_device_key_mapping_keysyms_length (const xcb_input_get_device_key_mapping_reply_t *R); + +xcb_generic_iterator_t +xcb_input_get_device_key_mapping_keysyms_end (const xcb_input_get_device_key_mapping_reply_t *R); + +/** + * Return the reply + * @param c The connection + * @param cookie The cookie + * @param e The xcb_generic_error_t supplied + * + * Returns the reply of the request asked by + * + * The parameter @p e supplied to this function must be NULL if + * xcb_input_get_device_key_mapping_unchecked(). is used. + * Otherwise, it stores the error if any. + * + * The returned value must be freed by the caller using free(). + */ +xcb_input_get_device_key_mapping_reply_t * +xcb_input_get_device_key_mapping_reply (xcb_connection_t *c, + xcb_input_get_device_key_mapping_cookie_t cookie /**< */, + xcb_generic_error_t **e); + +int +xcb_input_change_device_key_mapping_sizeof (const void *_buffer); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will not cause + * a reply to be generated. Any returned error will be + * saved for handling by xcb_request_check(). + */ +xcb_void_cookie_t +xcb_input_change_device_key_mapping_checked (xcb_connection_t *c, + uint8_t device_id, + xcb_input_key_code_t first_keycode, + uint8_t keysyms_per_keycode, + uint8_t keycode_count, + const xcb_keysym_t *keysyms); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_void_cookie_t +xcb_input_change_device_key_mapping (xcb_connection_t *c, + uint8_t device_id, + xcb_input_key_code_t first_keycode, + uint8_t keysyms_per_keycode, + uint8_t keycode_count, + const xcb_keysym_t *keysyms); + +xcb_keysym_t * +xcb_input_change_device_key_mapping_keysyms (const xcb_input_change_device_key_mapping_request_t *R); + +int +xcb_input_change_device_key_mapping_keysyms_length (const xcb_input_change_device_key_mapping_request_t *R); + +xcb_generic_iterator_t +xcb_input_change_device_key_mapping_keysyms_end (const xcb_input_change_device_key_mapping_request_t *R); + +int +xcb_input_get_device_modifier_mapping_sizeof (const void *_buffer); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_input_get_device_modifier_mapping_cookie_t +xcb_input_get_device_modifier_mapping (xcb_connection_t *c, + uint8_t device_id); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will cause + * a reply to be generated. Any returned error will be + * placed in the event queue. + */ +xcb_input_get_device_modifier_mapping_cookie_t +xcb_input_get_device_modifier_mapping_unchecked (xcb_connection_t *c, + uint8_t device_id); + +uint8_t * +xcb_input_get_device_modifier_mapping_keymaps (const xcb_input_get_device_modifier_mapping_reply_t *R); + +int +xcb_input_get_device_modifier_mapping_keymaps_length (const xcb_input_get_device_modifier_mapping_reply_t *R); + +xcb_generic_iterator_t +xcb_input_get_device_modifier_mapping_keymaps_end (const xcb_input_get_device_modifier_mapping_reply_t *R); + +/** + * Return the reply + * @param c The connection + * @param cookie The cookie + * @param e The xcb_generic_error_t supplied + * + * Returns the reply of the request asked by + * + * The parameter @p e supplied to this function must be NULL if + * xcb_input_get_device_modifier_mapping_unchecked(). is used. + * Otherwise, it stores the error if any. + * + * The returned value must be freed by the caller using free(). + */ +xcb_input_get_device_modifier_mapping_reply_t * +xcb_input_get_device_modifier_mapping_reply (xcb_connection_t *c, + xcb_input_get_device_modifier_mapping_cookie_t cookie /**< */, + xcb_generic_error_t **e); + +int +xcb_input_set_device_modifier_mapping_sizeof (const void *_buffer); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_input_set_device_modifier_mapping_cookie_t +xcb_input_set_device_modifier_mapping (xcb_connection_t *c, + uint8_t device_id, + uint8_t keycodes_per_modifier, + const uint8_t *keymaps); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will cause + * a reply to be generated. Any returned error will be + * placed in the event queue. + */ +xcb_input_set_device_modifier_mapping_cookie_t +xcb_input_set_device_modifier_mapping_unchecked (xcb_connection_t *c, + uint8_t device_id, + uint8_t keycodes_per_modifier, + const uint8_t *keymaps); + +/** + * Return the reply + * @param c The connection + * @param cookie The cookie + * @param e The xcb_generic_error_t supplied + * + * Returns the reply of the request asked by + * + * The parameter @p e supplied to this function must be NULL if + * xcb_input_set_device_modifier_mapping_unchecked(). is used. + * Otherwise, it stores the error if any. + * + * The returned value must be freed by the caller using free(). + */ +xcb_input_set_device_modifier_mapping_reply_t * +xcb_input_set_device_modifier_mapping_reply (xcb_connection_t *c, + xcb_input_set_device_modifier_mapping_cookie_t cookie /**< */, + xcb_generic_error_t **e); + +int +xcb_input_get_device_button_mapping_sizeof (const void *_buffer); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_input_get_device_button_mapping_cookie_t +xcb_input_get_device_button_mapping (xcb_connection_t *c, + uint8_t device_id); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will cause + * a reply to be generated. Any returned error will be + * placed in the event queue. + */ +xcb_input_get_device_button_mapping_cookie_t +xcb_input_get_device_button_mapping_unchecked (xcb_connection_t *c, + uint8_t device_id); + +uint8_t * +xcb_input_get_device_button_mapping_map (const xcb_input_get_device_button_mapping_reply_t *R); + +int +xcb_input_get_device_button_mapping_map_length (const xcb_input_get_device_button_mapping_reply_t *R); + +xcb_generic_iterator_t +xcb_input_get_device_button_mapping_map_end (const xcb_input_get_device_button_mapping_reply_t *R); + +/** + * Return the reply + * @param c The connection + * @param cookie The cookie + * @param e The xcb_generic_error_t supplied + * + * Returns the reply of the request asked by + * + * The parameter @p e supplied to this function must be NULL if + * xcb_input_get_device_button_mapping_unchecked(). is used. + * Otherwise, it stores the error if any. + * + * The returned value must be freed by the caller using free(). + */ +xcb_input_get_device_button_mapping_reply_t * +xcb_input_get_device_button_mapping_reply (xcb_connection_t *c, + xcb_input_get_device_button_mapping_cookie_t cookie /**< */, + xcb_generic_error_t **e); + +int +xcb_input_set_device_button_mapping_sizeof (const void *_buffer); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_input_set_device_button_mapping_cookie_t +xcb_input_set_device_button_mapping (xcb_connection_t *c, + uint8_t device_id, + uint8_t map_size, + const uint8_t *map); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will cause + * a reply to be generated. Any returned error will be + * placed in the event queue. + */ +xcb_input_set_device_button_mapping_cookie_t +xcb_input_set_device_button_mapping_unchecked (xcb_connection_t *c, + uint8_t device_id, + uint8_t map_size, + const uint8_t *map); + +/** + * Return the reply + * @param c The connection + * @param cookie The cookie + * @param e The xcb_generic_error_t supplied + * + * Returns the reply of the request asked by + * + * The parameter @p e supplied to this function must be NULL if + * xcb_input_set_device_button_mapping_unchecked(). is used. + * Otherwise, it stores the error if any. + * + * The returned value must be freed by the caller using free(). + */ +xcb_input_set_device_button_mapping_reply_t * +xcb_input_set_device_button_mapping_reply (xcb_connection_t *c, + xcb_input_set_device_button_mapping_cookie_t cookie /**< */, + xcb_generic_error_t **e); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_key_state_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_key_state_t) + */ +void +xcb_input_key_state_next (xcb_input_key_state_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_key_state_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_key_state_end (xcb_input_key_state_iterator_t i); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_button_state_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_button_state_t) + */ +void +xcb_input_button_state_next (xcb_input_button_state_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_button_state_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_button_state_end (xcb_input_button_state_iterator_t i); + +int +xcb_input_valuator_state_sizeof (const void *_buffer); + +int32_t * +xcb_input_valuator_state_valuators (const xcb_input_valuator_state_t *R); + +int +xcb_input_valuator_state_valuators_length (const xcb_input_valuator_state_t *R); + +xcb_generic_iterator_t +xcb_input_valuator_state_valuators_end (const xcb_input_valuator_state_t *R); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_valuator_state_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_valuator_state_t) + */ +void +xcb_input_valuator_state_next (xcb_input_valuator_state_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_valuator_state_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_valuator_state_end (xcb_input_valuator_state_iterator_t i); + +int32_t * +xcb_input_input_state_data_valuator_valuators (const xcb_input_input_state_data_t *S); + +int +xcb_input_input_state_data_valuator_valuators_length (const xcb_input_input_state_t *R, + const xcb_input_input_state_data_t *S); + +xcb_generic_iterator_t +xcb_input_input_state_data_valuator_valuators_end (const xcb_input_input_state_t *R, + const xcb_input_input_state_data_t *S); + +int +xcb_input_input_state_data_serialize (void **_buffer, + uint8_t class_id, + const xcb_input_input_state_data_t *_aux); + +int +xcb_input_input_state_data_unpack (const void *_buffer, + uint8_t class_id, + xcb_input_input_state_data_t *_aux); + +int +xcb_input_input_state_data_sizeof (const void *_buffer, + uint8_t class_id); + +int +xcb_input_input_state_sizeof (const void *_buffer); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_input_state_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_input_state_t) + */ +void +xcb_input_input_state_next (xcb_input_input_state_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_input_state_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_input_state_end (xcb_input_input_state_iterator_t i); + +int +xcb_input_query_device_state_sizeof (const void *_buffer); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_input_query_device_state_cookie_t +xcb_input_query_device_state (xcb_connection_t *c, + uint8_t device_id); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will cause + * a reply to be generated. Any returned error will be + * placed in the event queue. + */ +xcb_input_query_device_state_cookie_t +xcb_input_query_device_state_unchecked (xcb_connection_t *c, + uint8_t device_id); + +int +xcb_input_query_device_state_classes_length (const xcb_input_query_device_state_reply_t *R); + +xcb_input_input_state_iterator_t +xcb_input_query_device_state_classes_iterator (const xcb_input_query_device_state_reply_t *R); + +/** + * Return the reply + * @param c The connection + * @param cookie The cookie + * @param e The xcb_generic_error_t supplied + * + * Returns the reply of the request asked by + * + * The parameter @p e supplied to this function must be NULL if + * xcb_input_query_device_state_unchecked(). is used. + * Otherwise, it stores the error if any. + * + * The returned value must be freed by the caller using free(). + */ +xcb_input_query_device_state_reply_t * +xcb_input_query_device_state_reply (xcb_connection_t *c, + xcb_input_query_device_state_cookie_t cookie /**< */, + xcb_generic_error_t **e); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will not cause + * a reply to be generated. Any returned error will be + * saved for handling by xcb_request_check(). + */ +xcb_void_cookie_t +xcb_input_device_bell_checked (xcb_connection_t *c, + uint8_t device_id, + uint8_t feedback_id, + uint8_t feedback_class, + int8_t percent); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_void_cookie_t +xcb_input_device_bell (xcb_connection_t *c, + uint8_t device_id, + uint8_t feedback_id, + uint8_t feedback_class, + int8_t percent); + +int +xcb_input_set_device_valuators_sizeof (const void *_buffer); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_input_set_device_valuators_cookie_t +xcb_input_set_device_valuators (xcb_connection_t *c, + uint8_t device_id, + uint8_t first_valuator, + uint8_t num_valuators, + const int32_t *valuators); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will cause + * a reply to be generated. Any returned error will be + * placed in the event queue. + */ +xcb_input_set_device_valuators_cookie_t +xcb_input_set_device_valuators_unchecked (xcb_connection_t *c, + uint8_t device_id, + uint8_t first_valuator, + uint8_t num_valuators, + const int32_t *valuators); + +/** + * Return the reply + * @param c The connection + * @param cookie The cookie + * @param e The xcb_generic_error_t supplied + * + * Returns the reply of the request asked by + * + * The parameter @p e supplied to this function must be NULL if + * xcb_input_set_device_valuators_unchecked(). is used. + * Otherwise, it stores the error if any. + * + * The returned value must be freed by the caller using free(). + */ +xcb_input_set_device_valuators_reply_t * +xcb_input_set_device_valuators_reply (xcb_connection_t *c, + xcb_input_set_device_valuators_cookie_t cookie /**< */, + xcb_generic_error_t **e); + +int +xcb_input_device_resolution_state_sizeof (const void *_buffer); + +uint32_t * +xcb_input_device_resolution_state_resolution_values (const xcb_input_device_resolution_state_t *R); + +int +xcb_input_device_resolution_state_resolution_values_length (const xcb_input_device_resolution_state_t *R); + +xcb_generic_iterator_t +xcb_input_device_resolution_state_resolution_values_end (const xcb_input_device_resolution_state_t *R); + +uint32_t * +xcb_input_device_resolution_state_resolution_min (const xcb_input_device_resolution_state_t *R); + +int +xcb_input_device_resolution_state_resolution_min_length (const xcb_input_device_resolution_state_t *R); + +xcb_generic_iterator_t +xcb_input_device_resolution_state_resolution_min_end (const xcb_input_device_resolution_state_t *R); + +uint32_t * +xcb_input_device_resolution_state_resolution_max (const xcb_input_device_resolution_state_t *R); + +int +xcb_input_device_resolution_state_resolution_max_length (const xcb_input_device_resolution_state_t *R); + +xcb_generic_iterator_t +xcb_input_device_resolution_state_resolution_max_end (const xcb_input_device_resolution_state_t *R); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_device_resolution_state_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_device_resolution_state_t) + */ +void +xcb_input_device_resolution_state_next (xcb_input_device_resolution_state_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_device_resolution_state_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_device_resolution_state_end (xcb_input_device_resolution_state_iterator_t i); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_device_abs_calib_state_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_device_abs_calib_state_t) + */ +void +xcb_input_device_abs_calib_state_next (xcb_input_device_abs_calib_state_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_device_abs_calib_state_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_device_abs_calib_state_end (xcb_input_device_abs_calib_state_iterator_t i); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_device_abs_area_state_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_device_abs_area_state_t) + */ +void +xcb_input_device_abs_area_state_next (xcb_input_device_abs_area_state_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_device_abs_area_state_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_device_abs_area_state_end (xcb_input_device_abs_area_state_iterator_t i); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_device_core_state_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_device_core_state_t) + */ +void +xcb_input_device_core_state_next (xcb_input_device_core_state_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_device_core_state_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_device_core_state_end (xcb_input_device_core_state_iterator_t i); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_device_enable_state_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_device_enable_state_t) + */ +void +xcb_input_device_enable_state_next (xcb_input_device_enable_state_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_device_enable_state_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_device_enable_state_end (xcb_input_device_enable_state_iterator_t i); + +uint32_t * +xcb_input_device_state_data_resolution_resolution_values (const xcb_input_device_state_data_t *S); + +int +xcb_input_device_state_data_resolution_resolution_values_length (const xcb_input_device_state_t *R, + const xcb_input_device_state_data_t *S); + +xcb_generic_iterator_t +xcb_input_device_state_data_resolution_resolution_values_end (const xcb_input_device_state_t *R, + const xcb_input_device_state_data_t *S); + +uint32_t * +xcb_input_device_state_data_resolution_resolution_min (const xcb_input_device_state_data_t *S); + +int +xcb_input_device_state_data_resolution_resolution_min_length (const xcb_input_device_state_t *R, + const xcb_input_device_state_data_t *S); + +xcb_generic_iterator_t +xcb_input_device_state_data_resolution_resolution_min_end (const xcb_input_device_state_t *R, + const xcb_input_device_state_data_t *S); + +uint32_t * +xcb_input_device_state_data_resolution_resolution_max (const xcb_input_device_state_data_t *S); + +int +xcb_input_device_state_data_resolution_resolution_max_length (const xcb_input_device_state_t *R, + const xcb_input_device_state_data_t *S); + +xcb_generic_iterator_t +xcb_input_device_state_data_resolution_resolution_max_end (const xcb_input_device_state_t *R, + const xcb_input_device_state_data_t *S); + +int +xcb_input_device_state_data_serialize (void **_buffer, + uint16_t control_id, + const xcb_input_device_state_data_t *_aux); + +int +xcb_input_device_state_data_unpack (const void *_buffer, + uint16_t control_id, + xcb_input_device_state_data_t *_aux); + +int +xcb_input_device_state_data_sizeof (const void *_buffer, + uint16_t control_id); + +int +xcb_input_device_state_sizeof (const void *_buffer); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_device_state_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_device_state_t) + */ +void +xcb_input_device_state_next (xcb_input_device_state_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_device_state_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_device_state_end (xcb_input_device_state_iterator_t i); + +int +xcb_input_get_device_control_sizeof (const void *_buffer); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_input_get_device_control_cookie_t +xcb_input_get_device_control (xcb_connection_t *c, + uint16_t control_id, + uint8_t device_id); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will cause + * a reply to be generated. Any returned error will be + * placed in the event queue. + */ +xcb_input_get_device_control_cookie_t +xcb_input_get_device_control_unchecked (xcb_connection_t *c, + uint16_t control_id, + uint8_t device_id); + +xcb_input_device_state_t * +xcb_input_get_device_control_control (const xcb_input_get_device_control_reply_t *R); + +/** + * Return the reply + * @param c The connection + * @param cookie The cookie + * @param e The xcb_generic_error_t supplied + * + * Returns the reply of the request asked by + * + * The parameter @p e supplied to this function must be NULL if + * xcb_input_get_device_control_unchecked(). is used. + * Otherwise, it stores the error if any. + * + * The returned value must be freed by the caller using free(). + */ +xcb_input_get_device_control_reply_t * +xcb_input_get_device_control_reply (xcb_connection_t *c, + xcb_input_get_device_control_cookie_t cookie /**< */, + xcb_generic_error_t **e); + +int +xcb_input_device_resolution_ctl_sizeof (const void *_buffer); + +uint32_t * +xcb_input_device_resolution_ctl_resolution_values (const xcb_input_device_resolution_ctl_t *R); + +int +xcb_input_device_resolution_ctl_resolution_values_length (const xcb_input_device_resolution_ctl_t *R); + +xcb_generic_iterator_t +xcb_input_device_resolution_ctl_resolution_values_end (const xcb_input_device_resolution_ctl_t *R); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_device_resolution_ctl_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_device_resolution_ctl_t) + */ +void +xcb_input_device_resolution_ctl_next (xcb_input_device_resolution_ctl_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_device_resolution_ctl_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_device_resolution_ctl_end (xcb_input_device_resolution_ctl_iterator_t i); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_device_abs_calib_ctl_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_device_abs_calib_ctl_t) + */ +void +xcb_input_device_abs_calib_ctl_next (xcb_input_device_abs_calib_ctl_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_device_abs_calib_ctl_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_device_abs_calib_ctl_end (xcb_input_device_abs_calib_ctl_iterator_t i); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_device_abs_area_ctrl_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_device_abs_area_ctrl_t) + */ +void +xcb_input_device_abs_area_ctrl_next (xcb_input_device_abs_area_ctrl_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_device_abs_area_ctrl_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_device_abs_area_ctrl_end (xcb_input_device_abs_area_ctrl_iterator_t i); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_device_core_ctrl_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_device_core_ctrl_t) + */ +void +xcb_input_device_core_ctrl_next (xcb_input_device_core_ctrl_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_device_core_ctrl_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_device_core_ctrl_end (xcb_input_device_core_ctrl_iterator_t i); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_device_enable_ctrl_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_device_enable_ctrl_t) + */ +void +xcb_input_device_enable_ctrl_next (xcb_input_device_enable_ctrl_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_device_enable_ctrl_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_device_enable_ctrl_end (xcb_input_device_enable_ctrl_iterator_t i); + +uint32_t * +xcb_input_device_ctl_data_resolution_resolution_values (const xcb_input_device_ctl_data_t *S); + +int +xcb_input_device_ctl_data_resolution_resolution_values_length (const xcb_input_device_ctl_t *R, + const xcb_input_device_ctl_data_t *S); + +xcb_generic_iterator_t +xcb_input_device_ctl_data_resolution_resolution_values_end (const xcb_input_device_ctl_t *R, + const xcb_input_device_ctl_data_t *S); + +int +xcb_input_device_ctl_data_serialize (void **_buffer, + uint16_t control_id, + const xcb_input_device_ctl_data_t *_aux); + +int +xcb_input_device_ctl_data_unpack (const void *_buffer, + uint16_t control_id, + xcb_input_device_ctl_data_t *_aux); + +int +xcb_input_device_ctl_data_sizeof (const void *_buffer, + uint16_t control_id); + +int +xcb_input_device_ctl_sizeof (const void *_buffer); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_device_ctl_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_device_ctl_t) + */ +void +xcb_input_device_ctl_next (xcb_input_device_ctl_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_device_ctl_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_device_ctl_end (xcb_input_device_ctl_iterator_t i); + +int +xcb_input_change_device_control_sizeof (const void *_buffer); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_input_change_device_control_cookie_t +xcb_input_change_device_control (xcb_connection_t *c, + uint16_t control_id, + uint8_t device_id, + xcb_input_device_ctl_t *control); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will cause + * a reply to be generated. Any returned error will be + * placed in the event queue. + */ +xcb_input_change_device_control_cookie_t +xcb_input_change_device_control_unchecked (xcb_connection_t *c, + uint16_t control_id, + uint8_t device_id, + xcb_input_device_ctl_t *control); + +/** + * Return the reply + * @param c The connection + * @param cookie The cookie + * @param e The xcb_generic_error_t supplied + * + * Returns the reply of the request asked by + * + * The parameter @p e supplied to this function must be NULL if + * xcb_input_change_device_control_unchecked(). is used. + * Otherwise, it stores the error if any. + * + * The returned value must be freed by the caller using free(). + */ +xcb_input_change_device_control_reply_t * +xcb_input_change_device_control_reply (xcb_connection_t *c, + xcb_input_change_device_control_cookie_t cookie /**< */, + xcb_generic_error_t **e); + +int +xcb_input_list_device_properties_sizeof (const void *_buffer); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_input_list_device_properties_cookie_t +xcb_input_list_device_properties (xcb_connection_t *c, + uint8_t device_id); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will cause + * a reply to be generated. Any returned error will be + * placed in the event queue. + */ +xcb_input_list_device_properties_cookie_t +xcb_input_list_device_properties_unchecked (xcb_connection_t *c, + uint8_t device_id); + +xcb_atom_t * +xcb_input_list_device_properties_atoms (const xcb_input_list_device_properties_reply_t *R); + +int +xcb_input_list_device_properties_atoms_length (const xcb_input_list_device_properties_reply_t *R); + +xcb_generic_iterator_t +xcb_input_list_device_properties_atoms_end (const xcb_input_list_device_properties_reply_t *R); + +/** + * Return the reply + * @param c The connection + * @param cookie The cookie + * @param e The xcb_generic_error_t supplied + * + * Returns the reply of the request asked by + * + * The parameter @p e supplied to this function must be NULL if + * xcb_input_list_device_properties_unchecked(). is used. + * Otherwise, it stores the error if any. + * + * The returned value must be freed by the caller using free(). + */ +xcb_input_list_device_properties_reply_t * +xcb_input_list_device_properties_reply (xcb_connection_t *c, + xcb_input_list_device_properties_cookie_t cookie /**< */, + xcb_generic_error_t **e); + +uint8_t * +xcb_input_change_device_property_items_data_8 (const xcb_input_change_device_property_items_t *S); + +int +xcb_input_change_device_property_items_data_8_length (const xcb_input_change_device_property_request_t *R, + const xcb_input_change_device_property_items_t *S); + +xcb_generic_iterator_t +xcb_input_change_device_property_items_data_8_end (const xcb_input_change_device_property_request_t *R, + const xcb_input_change_device_property_items_t *S); + +uint16_t * +xcb_input_change_device_property_items_data_16 (const xcb_input_change_device_property_items_t *S); + +int +xcb_input_change_device_property_items_data_16_length (const xcb_input_change_device_property_request_t *R, + const xcb_input_change_device_property_items_t *S); + +xcb_generic_iterator_t +xcb_input_change_device_property_items_data_16_end (const xcb_input_change_device_property_request_t *R, + const xcb_input_change_device_property_items_t *S); + +uint32_t * +xcb_input_change_device_property_items_data_32 (const xcb_input_change_device_property_items_t *S); + +int +xcb_input_change_device_property_items_data_32_length (const xcb_input_change_device_property_request_t *R, + const xcb_input_change_device_property_items_t *S); + +xcb_generic_iterator_t +xcb_input_change_device_property_items_data_32_end (const xcb_input_change_device_property_request_t *R, + const xcb_input_change_device_property_items_t *S); + +int +xcb_input_change_device_property_items_serialize (void **_buffer, + uint32_t num_items, + uint8_t format, + const xcb_input_change_device_property_items_t *_aux); + +int +xcb_input_change_device_property_items_unpack (const void *_buffer, + uint32_t num_items, + uint8_t format, + xcb_input_change_device_property_items_t *_aux); + +int +xcb_input_change_device_property_items_sizeof (const void *_buffer, + uint32_t num_items, + uint8_t format); + +int +xcb_input_change_device_property_sizeof (const void *_buffer); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will not cause + * a reply to be generated. Any returned error will be + * saved for handling by xcb_request_check(). + */ +xcb_void_cookie_t +xcb_input_change_device_property_checked (xcb_connection_t *c, + xcb_atom_t property, + xcb_atom_t type, + uint8_t device_id, + uint8_t format, + uint8_t mode, + uint32_t num_items, + const void *items); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_void_cookie_t +xcb_input_change_device_property (xcb_connection_t *c, + xcb_atom_t property, + xcb_atom_t type, + uint8_t device_id, + uint8_t format, + uint8_t mode, + uint32_t num_items, + const void *items); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will not cause + * a reply to be generated. Any returned error will be + * saved for handling by xcb_request_check(). + */ +xcb_void_cookie_t +xcb_input_change_device_property_aux_checked (xcb_connection_t *c, + xcb_atom_t property, + xcb_atom_t type, + uint8_t device_id, + uint8_t format, + uint8_t mode, + uint32_t num_items, + const xcb_input_change_device_property_items_t *items); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_void_cookie_t +xcb_input_change_device_property_aux (xcb_connection_t *c, + xcb_atom_t property, + xcb_atom_t type, + uint8_t device_id, + uint8_t format, + uint8_t mode, + uint32_t num_items, + const xcb_input_change_device_property_items_t *items); + +void * +xcb_input_change_device_property_items (const xcb_input_change_device_property_request_t *R); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will not cause + * a reply to be generated. Any returned error will be + * saved for handling by xcb_request_check(). + */ +xcb_void_cookie_t +xcb_input_delete_device_property_checked (xcb_connection_t *c, + xcb_atom_t property, + uint8_t device_id); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_void_cookie_t +xcb_input_delete_device_property (xcb_connection_t *c, + xcb_atom_t property, + uint8_t device_id); + +uint8_t * +xcb_input_get_device_property_items_data_8 (const xcb_input_get_device_property_items_t *S); + +int +xcb_input_get_device_property_items_data_8_length (const xcb_input_get_device_property_reply_t *R, + const xcb_input_get_device_property_items_t *S); + +xcb_generic_iterator_t +xcb_input_get_device_property_items_data_8_end (const xcb_input_get_device_property_reply_t *R, + const xcb_input_get_device_property_items_t *S); + +uint16_t * +xcb_input_get_device_property_items_data_16 (const xcb_input_get_device_property_items_t *S); + +int +xcb_input_get_device_property_items_data_16_length (const xcb_input_get_device_property_reply_t *R, + const xcb_input_get_device_property_items_t *S); + +xcb_generic_iterator_t +xcb_input_get_device_property_items_data_16_end (const xcb_input_get_device_property_reply_t *R, + const xcb_input_get_device_property_items_t *S); + +uint32_t * +xcb_input_get_device_property_items_data_32 (const xcb_input_get_device_property_items_t *S); + +int +xcb_input_get_device_property_items_data_32_length (const xcb_input_get_device_property_reply_t *R, + const xcb_input_get_device_property_items_t *S); + +xcb_generic_iterator_t +xcb_input_get_device_property_items_data_32_end (const xcb_input_get_device_property_reply_t *R, + const xcb_input_get_device_property_items_t *S); + +int +xcb_input_get_device_property_items_serialize (void **_buffer, + uint32_t num_items, + uint8_t format, + const xcb_input_get_device_property_items_t *_aux); + +int +xcb_input_get_device_property_items_unpack (const void *_buffer, + uint32_t num_items, + uint8_t format, + xcb_input_get_device_property_items_t *_aux); + +int +xcb_input_get_device_property_items_sizeof (const void *_buffer, + uint32_t num_items, + uint8_t format); + +int +xcb_input_get_device_property_sizeof (const void *_buffer); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_input_get_device_property_cookie_t +xcb_input_get_device_property (xcb_connection_t *c, + xcb_atom_t property, + xcb_atom_t type, + uint32_t offset, + uint32_t len, + uint8_t device_id, + uint8_t _delete); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will cause + * a reply to be generated. Any returned error will be + * placed in the event queue. + */ +xcb_input_get_device_property_cookie_t +xcb_input_get_device_property_unchecked (xcb_connection_t *c, + xcb_atom_t property, + xcb_atom_t type, + uint32_t offset, + uint32_t len, + uint8_t device_id, + uint8_t _delete); + +void * +xcb_input_get_device_property_items (const xcb_input_get_device_property_reply_t *R); + +/** + * Return the reply + * @param c The connection + * @param cookie The cookie + * @param e The xcb_generic_error_t supplied + * + * Returns the reply of the request asked by + * + * The parameter @p e supplied to this function must be NULL if + * xcb_input_get_device_property_unchecked(). is used. + * Otherwise, it stores the error if any. + * + * The returned value must be freed by the caller using free(). + */ +xcb_input_get_device_property_reply_t * +xcb_input_get_device_property_reply (xcb_connection_t *c, + xcb_input_get_device_property_cookie_t cookie /**< */, + xcb_generic_error_t **e); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_group_info_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_group_info_t) + */ +void +xcb_input_group_info_next (xcb_input_group_info_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_group_info_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_group_info_end (xcb_input_group_info_iterator_t i); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_modifier_info_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_modifier_info_t) + */ +void +xcb_input_modifier_info_next (xcb_input_modifier_info_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_modifier_info_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_modifier_info_end (xcb_input_modifier_info_iterator_t i); + +int +xcb_input_xi_query_pointer_sizeof (const void *_buffer); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_input_xi_query_pointer_cookie_t +xcb_input_xi_query_pointer (xcb_connection_t *c, + xcb_window_t window, + xcb_input_device_id_t deviceid); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will cause + * a reply to be generated. Any returned error will be + * placed in the event queue. + */ +xcb_input_xi_query_pointer_cookie_t +xcb_input_xi_query_pointer_unchecked (xcb_connection_t *c, + xcb_window_t window, + xcb_input_device_id_t deviceid); + +uint32_t * +xcb_input_xi_query_pointer_buttons (const xcb_input_xi_query_pointer_reply_t *R); + +int +xcb_input_xi_query_pointer_buttons_length (const xcb_input_xi_query_pointer_reply_t *R); + +xcb_generic_iterator_t +xcb_input_xi_query_pointer_buttons_end (const xcb_input_xi_query_pointer_reply_t *R); + +/** + * Return the reply + * @param c The connection + * @param cookie The cookie + * @param e The xcb_generic_error_t supplied + * + * Returns the reply of the request asked by + * + * The parameter @p e supplied to this function must be NULL if + * xcb_input_xi_query_pointer_unchecked(). is used. + * Otherwise, it stores the error if any. + * + * The returned value must be freed by the caller using free(). + */ +xcb_input_xi_query_pointer_reply_t * +xcb_input_xi_query_pointer_reply (xcb_connection_t *c, + xcb_input_xi_query_pointer_cookie_t cookie /**< */, + xcb_generic_error_t **e); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will not cause + * a reply to be generated. Any returned error will be + * saved for handling by xcb_request_check(). + */ +xcb_void_cookie_t +xcb_input_xi_warp_pointer_checked (xcb_connection_t *c, + xcb_window_t src_win, + xcb_window_t dst_win, + xcb_input_fp1616_t src_x, + xcb_input_fp1616_t src_y, + uint16_t src_width, + uint16_t src_height, + xcb_input_fp1616_t dst_x, + xcb_input_fp1616_t dst_y, + xcb_input_device_id_t deviceid); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_void_cookie_t +xcb_input_xi_warp_pointer (xcb_connection_t *c, + xcb_window_t src_win, + xcb_window_t dst_win, + xcb_input_fp1616_t src_x, + xcb_input_fp1616_t src_y, + uint16_t src_width, + uint16_t src_height, + xcb_input_fp1616_t dst_x, + xcb_input_fp1616_t dst_y, + xcb_input_device_id_t deviceid); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will not cause + * a reply to be generated. Any returned error will be + * saved for handling by xcb_request_check(). + */ +xcb_void_cookie_t +xcb_input_xi_change_cursor_checked (xcb_connection_t *c, + xcb_window_t window, + xcb_cursor_t cursor, + xcb_input_device_id_t deviceid); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_void_cookie_t +xcb_input_xi_change_cursor (xcb_connection_t *c, + xcb_window_t window, + xcb_cursor_t cursor, + xcb_input_device_id_t deviceid); + +int +xcb_input_add_master_sizeof (const void *_buffer); + +char * +xcb_input_add_master_name (const xcb_input_add_master_t *R); + +int +xcb_input_add_master_name_length (const xcb_input_add_master_t *R); + +xcb_generic_iterator_t +xcb_input_add_master_name_end (const xcb_input_add_master_t *R); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_add_master_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_add_master_t) + */ +void +xcb_input_add_master_next (xcb_input_add_master_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_add_master_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_add_master_end (xcb_input_add_master_iterator_t i); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_remove_master_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_remove_master_t) + */ +void +xcb_input_remove_master_next (xcb_input_remove_master_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_remove_master_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_remove_master_end (xcb_input_remove_master_iterator_t i); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_attach_slave_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_attach_slave_t) + */ +void +xcb_input_attach_slave_next (xcb_input_attach_slave_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_attach_slave_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_attach_slave_end (xcb_input_attach_slave_iterator_t i); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_detach_slave_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_detach_slave_t) + */ +void +xcb_input_detach_slave_next (xcb_input_detach_slave_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_detach_slave_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_detach_slave_end (xcb_input_detach_slave_iterator_t i); + +char * +xcb_input_hierarchy_change_data_add_master_name (const xcb_input_hierarchy_change_data_t *S); + +int +xcb_input_hierarchy_change_data_add_master_name_length (const xcb_input_hierarchy_change_t *R, + const xcb_input_hierarchy_change_data_t *S); + +xcb_generic_iterator_t +xcb_input_hierarchy_change_data_add_master_name_end (const xcb_input_hierarchy_change_t *R, + const xcb_input_hierarchy_change_data_t *S); + +int +xcb_input_hierarchy_change_data_serialize (void **_buffer, + uint16_t type, + const xcb_input_hierarchy_change_data_t *_aux); + +int +xcb_input_hierarchy_change_data_unpack (const void *_buffer, + uint16_t type, + xcb_input_hierarchy_change_data_t *_aux); + +int +xcb_input_hierarchy_change_data_sizeof (const void *_buffer, + uint16_t type); + +int +xcb_input_hierarchy_change_sizeof (const void *_buffer); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_hierarchy_change_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_hierarchy_change_t) + */ +void +xcb_input_hierarchy_change_next (xcb_input_hierarchy_change_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_hierarchy_change_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_hierarchy_change_end (xcb_input_hierarchy_change_iterator_t i); + +int +xcb_input_xi_change_hierarchy_sizeof (const void *_buffer); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will not cause + * a reply to be generated. Any returned error will be + * saved for handling by xcb_request_check(). + */ +xcb_void_cookie_t +xcb_input_xi_change_hierarchy_checked (xcb_connection_t *c, + uint8_t num_changes, + const xcb_input_hierarchy_change_t *changes); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_void_cookie_t +xcb_input_xi_change_hierarchy (xcb_connection_t *c, + uint8_t num_changes, + const xcb_input_hierarchy_change_t *changes); + +int +xcb_input_xi_change_hierarchy_changes_length (const xcb_input_xi_change_hierarchy_request_t *R); + +xcb_input_hierarchy_change_iterator_t +xcb_input_xi_change_hierarchy_changes_iterator (const xcb_input_xi_change_hierarchy_request_t *R); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will not cause + * a reply to be generated. Any returned error will be + * saved for handling by xcb_request_check(). + */ +xcb_void_cookie_t +xcb_input_xi_set_client_pointer_checked (xcb_connection_t *c, + xcb_window_t window, + xcb_input_device_id_t deviceid); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_void_cookie_t +xcb_input_xi_set_client_pointer (xcb_connection_t *c, + xcb_window_t window, + xcb_input_device_id_t deviceid); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_input_xi_get_client_pointer_cookie_t +xcb_input_xi_get_client_pointer (xcb_connection_t *c, + xcb_window_t window); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will cause + * a reply to be generated. Any returned error will be + * placed in the event queue. + */ +xcb_input_xi_get_client_pointer_cookie_t +xcb_input_xi_get_client_pointer_unchecked (xcb_connection_t *c, + xcb_window_t window); + +/** + * Return the reply + * @param c The connection + * @param cookie The cookie + * @param e The xcb_generic_error_t supplied + * + * Returns the reply of the request asked by + * + * The parameter @p e supplied to this function must be NULL if + * xcb_input_xi_get_client_pointer_unchecked(). is used. + * Otherwise, it stores the error if any. + * + * The returned value must be freed by the caller using free(). + */ +xcb_input_xi_get_client_pointer_reply_t * +xcb_input_xi_get_client_pointer_reply (xcb_connection_t *c, + xcb_input_xi_get_client_pointer_cookie_t cookie /**< */, + xcb_generic_error_t **e); + +int +xcb_input_event_mask_sizeof (const void *_buffer); + +uint32_t * +xcb_input_event_mask_mask (const xcb_input_event_mask_t *R); + +int +xcb_input_event_mask_mask_length (const xcb_input_event_mask_t *R); + +xcb_generic_iterator_t +xcb_input_event_mask_mask_end (const xcb_input_event_mask_t *R); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_event_mask_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_event_mask_t) + */ +void +xcb_input_event_mask_next (xcb_input_event_mask_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_event_mask_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_event_mask_end (xcb_input_event_mask_iterator_t i); + +int +xcb_input_xi_select_events_sizeof (const void *_buffer); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will not cause + * a reply to be generated. Any returned error will be + * saved for handling by xcb_request_check(). + */ +xcb_void_cookie_t +xcb_input_xi_select_events_checked (xcb_connection_t *c, + xcb_window_t window, + uint16_t num_mask, + const xcb_input_event_mask_t *masks); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_void_cookie_t +xcb_input_xi_select_events (xcb_connection_t *c, + xcb_window_t window, + uint16_t num_mask, + const xcb_input_event_mask_t *masks); + +int +xcb_input_xi_select_events_masks_length (const xcb_input_xi_select_events_request_t *R); + +xcb_input_event_mask_iterator_t +xcb_input_xi_select_events_masks_iterator (const xcb_input_xi_select_events_request_t *R); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_input_xi_query_version_cookie_t +xcb_input_xi_query_version (xcb_connection_t *c, + uint16_t major_version, + uint16_t minor_version); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will cause + * a reply to be generated. Any returned error will be + * placed in the event queue. + */ +xcb_input_xi_query_version_cookie_t +xcb_input_xi_query_version_unchecked (xcb_connection_t *c, + uint16_t major_version, + uint16_t minor_version); + +/** + * Return the reply + * @param c The connection + * @param cookie The cookie + * @param e The xcb_generic_error_t supplied + * + * Returns the reply of the request asked by + * + * The parameter @p e supplied to this function must be NULL if + * xcb_input_xi_query_version_unchecked(). is used. + * Otherwise, it stores the error if any. + * + * The returned value must be freed by the caller using free(). + */ +xcb_input_xi_query_version_reply_t * +xcb_input_xi_query_version_reply (xcb_connection_t *c, + xcb_input_xi_query_version_cookie_t cookie /**< */, + xcb_generic_error_t **e); + +int +xcb_input_button_class_sizeof (const void *_buffer); + +uint32_t * +xcb_input_button_class_state (const xcb_input_button_class_t *R); + +int +xcb_input_button_class_state_length (const xcb_input_button_class_t *R); + +xcb_generic_iterator_t +xcb_input_button_class_state_end (const xcb_input_button_class_t *R); + +xcb_atom_t * +xcb_input_button_class_labels (const xcb_input_button_class_t *R); + +int +xcb_input_button_class_labels_length (const xcb_input_button_class_t *R); + +xcb_generic_iterator_t +xcb_input_button_class_labels_end (const xcb_input_button_class_t *R); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_button_class_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_button_class_t) + */ +void +xcb_input_button_class_next (xcb_input_button_class_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_button_class_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_button_class_end (xcb_input_button_class_iterator_t i); + +int +xcb_input_key_class_sizeof (const void *_buffer); + +uint32_t * +xcb_input_key_class_keys (const xcb_input_key_class_t *R); + +int +xcb_input_key_class_keys_length (const xcb_input_key_class_t *R); + +xcb_generic_iterator_t +xcb_input_key_class_keys_end (const xcb_input_key_class_t *R); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_key_class_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_key_class_t) + */ +void +xcb_input_key_class_next (xcb_input_key_class_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_key_class_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_key_class_end (xcb_input_key_class_iterator_t i); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_scroll_class_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_scroll_class_t) + */ +void +xcb_input_scroll_class_next (xcb_input_scroll_class_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_scroll_class_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_scroll_class_end (xcb_input_scroll_class_iterator_t i); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_touch_class_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_touch_class_t) + */ +void +xcb_input_touch_class_next (xcb_input_touch_class_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_touch_class_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_touch_class_end (xcb_input_touch_class_iterator_t i); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_valuator_class_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_valuator_class_t) + */ +void +xcb_input_valuator_class_next (xcb_input_valuator_class_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_valuator_class_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_valuator_class_end (xcb_input_valuator_class_iterator_t i); + +uint32_t * +xcb_input_device_class_data_key_keys (const xcb_input_device_class_data_t *S); + +int +xcb_input_device_class_data_key_keys_length (const xcb_input_device_class_t *R, + const xcb_input_device_class_data_t *S); + +xcb_generic_iterator_t +xcb_input_device_class_data_key_keys_end (const xcb_input_device_class_t *R, + const xcb_input_device_class_data_t *S); + +uint32_t * +xcb_input_device_class_data_button_state (const xcb_input_device_class_data_t *S); + +int +xcb_input_device_class_data_button_state_length (const xcb_input_device_class_t *R, + const xcb_input_device_class_data_t *S); + +xcb_generic_iterator_t +xcb_input_device_class_data_button_state_end (const xcb_input_device_class_t *R, + const xcb_input_device_class_data_t *S); + +xcb_atom_t * +xcb_input_device_class_data_button_labels (const xcb_input_device_class_data_t *S); + +int +xcb_input_device_class_data_button_labels_length (const xcb_input_device_class_t *R, + const xcb_input_device_class_data_t *S); + +xcb_generic_iterator_t +xcb_input_device_class_data_button_labels_end (const xcb_input_device_class_t *R, + const xcb_input_device_class_data_t *S); + +int +xcb_input_device_class_data_serialize (void **_buffer, + uint16_t type, + const xcb_input_device_class_data_t *_aux); + +int +xcb_input_device_class_data_unpack (const void *_buffer, + uint16_t type, + xcb_input_device_class_data_t *_aux); + +int +xcb_input_device_class_data_sizeof (const void *_buffer, + uint16_t type); + +int +xcb_input_device_class_sizeof (const void *_buffer); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_device_class_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_device_class_t) + */ +void +xcb_input_device_class_next (xcb_input_device_class_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_device_class_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_device_class_end (xcb_input_device_class_iterator_t i); + +int +xcb_input_xi_device_info_sizeof (const void *_buffer); + +char * +xcb_input_xi_device_info_name (const xcb_input_xi_device_info_t *R); + +int +xcb_input_xi_device_info_name_length (const xcb_input_xi_device_info_t *R); + +xcb_generic_iterator_t +xcb_input_xi_device_info_name_end (const xcb_input_xi_device_info_t *R); + +int +xcb_input_xi_device_info_classes_length (const xcb_input_xi_device_info_t *R); + +xcb_input_device_class_iterator_t +xcb_input_xi_device_info_classes_iterator (const xcb_input_xi_device_info_t *R); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_xi_device_info_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_xi_device_info_t) + */ +void +xcb_input_xi_device_info_next (xcb_input_xi_device_info_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_xi_device_info_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_xi_device_info_end (xcb_input_xi_device_info_iterator_t i); + +int +xcb_input_xi_query_device_sizeof (const void *_buffer); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_input_xi_query_device_cookie_t +xcb_input_xi_query_device (xcb_connection_t *c, + xcb_input_device_id_t deviceid); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will cause + * a reply to be generated. Any returned error will be + * placed in the event queue. + */ +xcb_input_xi_query_device_cookie_t +xcb_input_xi_query_device_unchecked (xcb_connection_t *c, + xcb_input_device_id_t deviceid); + +int +xcb_input_xi_query_device_infos_length (const xcb_input_xi_query_device_reply_t *R); + +xcb_input_xi_device_info_iterator_t +xcb_input_xi_query_device_infos_iterator (const xcb_input_xi_query_device_reply_t *R); + +/** + * Return the reply + * @param c The connection + * @param cookie The cookie + * @param e The xcb_generic_error_t supplied + * + * Returns the reply of the request asked by + * + * The parameter @p e supplied to this function must be NULL if + * xcb_input_xi_query_device_unchecked(). is used. + * Otherwise, it stores the error if any. + * + * The returned value must be freed by the caller using free(). + */ +xcb_input_xi_query_device_reply_t * +xcb_input_xi_query_device_reply (xcb_connection_t *c, + xcb_input_xi_query_device_cookie_t cookie /**< */, + xcb_generic_error_t **e); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will not cause + * a reply to be generated. Any returned error will be + * saved for handling by xcb_request_check(). + */ +xcb_void_cookie_t +xcb_input_xi_set_focus_checked (xcb_connection_t *c, + xcb_window_t window, + xcb_timestamp_t time, + xcb_input_device_id_t deviceid); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_void_cookie_t +xcb_input_xi_set_focus (xcb_connection_t *c, + xcb_window_t window, + xcb_timestamp_t time, + xcb_input_device_id_t deviceid); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_input_xi_get_focus_cookie_t +xcb_input_xi_get_focus (xcb_connection_t *c, + xcb_input_device_id_t deviceid); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will cause + * a reply to be generated. Any returned error will be + * placed in the event queue. + */ +xcb_input_xi_get_focus_cookie_t +xcb_input_xi_get_focus_unchecked (xcb_connection_t *c, + xcb_input_device_id_t deviceid); + +/** + * Return the reply + * @param c The connection + * @param cookie The cookie + * @param e The xcb_generic_error_t supplied + * + * Returns the reply of the request asked by + * + * The parameter @p e supplied to this function must be NULL if + * xcb_input_xi_get_focus_unchecked(). is used. + * Otherwise, it stores the error if any. + * + * The returned value must be freed by the caller using free(). + */ +xcb_input_xi_get_focus_reply_t * +xcb_input_xi_get_focus_reply (xcb_connection_t *c, + xcb_input_xi_get_focus_cookie_t cookie /**< */, + xcb_generic_error_t **e); + +int +xcb_input_xi_grab_device_sizeof (const void *_buffer); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_input_xi_grab_device_cookie_t +xcb_input_xi_grab_device (xcb_connection_t *c, + xcb_window_t window, + xcb_timestamp_t time, + xcb_cursor_t cursor, + xcb_input_device_id_t deviceid, + uint8_t mode, + uint8_t paired_device_mode, + uint8_t owner_events, + uint16_t mask_len, + const uint32_t *mask); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will cause + * a reply to be generated. Any returned error will be + * placed in the event queue. + */ +xcb_input_xi_grab_device_cookie_t +xcb_input_xi_grab_device_unchecked (xcb_connection_t *c, + xcb_window_t window, + xcb_timestamp_t time, + xcb_cursor_t cursor, + xcb_input_device_id_t deviceid, + uint8_t mode, + uint8_t paired_device_mode, + uint8_t owner_events, + uint16_t mask_len, + const uint32_t *mask); + +/** + * Return the reply + * @param c The connection + * @param cookie The cookie + * @param e The xcb_generic_error_t supplied + * + * Returns the reply of the request asked by + * + * The parameter @p e supplied to this function must be NULL if + * xcb_input_xi_grab_device_unchecked(). is used. + * Otherwise, it stores the error if any. + * + * The returned value must be freed by the caller using free(). + */ +xcb_input_xi_grab_device_reply_t * +xcb_input_xi_grab_device_reply (xcb_connection_t *c, + xcb_input_xi_grab_device_cookie_t cookie /**< */, + xcb_generic_error_t **e); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will not cause + * a reply to be generated. Any returned error will be + * saved for handling by xcb_request_check(). + */ +xcb_void_cookie_t +xcb_input_xi_ungrab_device_checked (xcb_connection_t *c, + xcb_timestamp_t time, + xcb_input_device_id_t deviceid); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_void_cookie_t +xcb_input_xi_ungrab_device (xcb_connection_t *c, + xcb_timestamp_t time, + xcb_input_device_id_t deviceid); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will not cause + * a reply to be generated. Any returned error will be + * saved for handling by xcb_request_check(). + */ +xcb_void_cookie_t +xcb_input_xi_allow_events_checked (xcb_connection_t *c, + xcb_timestamp_t time, + xcb_input_device_id_t deviceid, + uint8_t event_mode, + uint32_t touchid, + xcb_window_t grab_window); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_void_cookie_t +xcb_input_xi_allow_events (xcb_connection_t *c, + xcb_timestamp_t time, + xcb_input_device_id_t deviceid, + uint8_t event_mode, + uint32_t touchid, + xcb_window_t grab_window); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_grab_modifier_info_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_grab_modifier_info_t) + */ +void +xcb_input_grab_modifier_info_next (xcb_input_grab_modifier_info_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_grab_modifier_info_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_grab_modifier_info_end (xcb_input_grab_modifier_info_iterator_t i); + +int +xcb_input_xi_passive_grab_device_sizeof (const void *_buffer); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_input_xi_passive_grab_device_cookie_t +xcb_input_xi_passive_grab_device (xcb_connection_t *c, + xcb_timestamp_t time, + xcb_window_t grab_window, + xcb_cursor_t cursor, + uint32_t detail, + xcb_input_device_id_t deviceid, + uint16_t num_modifiers, + uint16_t mask_len, + uint8_t grab_type, + uint8_t grab_mode, + uint8_t paired_device_mode, + uint8_t owner_events, + const uint32_t *mask, + const uint32_t *modifiers); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will cause + * a reply to be generated. Any returned error will be + * placed in the event queue. + */ +xcb_input_xi_passive_grab_device_cookie_t +xcb_input_xi_passive_grab_device_unchecked (xcb_connection_t *c, + xcb_timestamp_t time, + xcb_window_t grab_window, + xcb_cursor_t cursor, + uint32_t detail, + xcb_input_device_id_t deviceid, + uint16_t num_modifiers, + uint16_t mask_len, + uint8_t grab_type, + uint8_t grab_mode, + uint8_t paired_device_mode, + uint8_t owner_events, + const uint32_t *mask, + const uint32_t *modifiers); + +xcb_input_grab_modifier_info_t * +xcb_input_xi_passive_grab_device_modifiers (const xcb_input_xi_passive_grab_device_reply_t *R); + +int +xcb_input_xi_passive_grab_device_modifiers_length (const xcb_input_xi_passive_grab_device_reply_t *R); + +xcb_input_grab_modifier_info_iterator_t +xcb_input_xi_passive_grab_device_modifiers_iterator (const xcb_input_xi_passive_grab_device_reply_t *R); + +/** + * Return the reply + * @param c The connection + * @param cookie The cookie + * @param e The xcb_generic_error_t supplied + * + * Returns the reply of the request asked by + * + * The parameter @p e supplied to this function must be NULL if + * xcb_input_xi_passive_grab_device_unchecked(). is used. + * Otherwise, it stores the error if any. + * + * The returned value must be freed by the caller using free(). + */ +xcb_input_xi_passive_grab_device_reply_t * +xcb_input_xi_passive_grab_device_reply (xcb_connection_t *c, + xcb_input_xi_passive_grab_device_cookie_t cookie /**< */, + xcb_generic_error_t **e); + +int +xcb_input_xi_passive_ungrab_device_sizeof (const void *_buffer); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will not cause + * a reply to be generated. Any returned error will be + * saved for handling by xcb_request_check(). + */ +xcb_void_cookie_t +xcb_input_xi_passive_ungrab_device_checked (xcb_connection_t *c, + xcb_window_t grab_window, + uint32_t detail, + xcb_input_device_id_t deviceid, + uint16_t num_modifiers, + uint8_t grab_type, + const uint32_t *modifiers); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_void_cookie_t +xcb_input_xi_passive_ungrab_device (xcb_connection_t *c, + xcb_window_t grab_window, + uint32_t detail, + xcb_input_device_id_t deviceid, + uint16_t num_modifiers, + uint8_t grab_type, + const uint32_t *modifiers); + +uint32_t * +xcb_input_xi_passive_ungrab_device_modifiers (const xcb_input_xi_passive_ungrab_device_request_t *R); + +int +xcb_input_xi_passive_ungrab_device_modifiers_length (const xcb_input_xi_passive_ungrab_device_request_t *R); + +xcb_generic_iterator_t +xcb_input_xi_passive_ungrab_device_modifiers_end (const xcb_input_xi_passive_ungrab_device_request_t *R); + +int +xcb_input_xi_list_properties_sizeof (const void *_buffer); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_input_xi_list_properties_cookie_t +xcb_input_xi_list_properties (xcb_connection_t *c, + xcb_input_device_id_t deviceid); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will cause + * a reply to be generated. Any returned error will be + * placed in the event queue. + */ +xcb_input_xi_list_properties_cookie_t +xcb_input_xi_list_properties_unchecked (xcb_connection_t *c, + xcb_input_device_id_t deviceid); + +xcb_atom_t * +xcb_input_xi_list_properties_properties (const xcb_input_xi_list_properties_reply_t *R); + +int +xcb_input_xi_list_properties_properties_length (const xcb_input_xi_list_properties_reply_t *R); + +xcb_generic_iterator_t +xcb_input_xi_list_properties_properties_end (const xcb_input_xi_list_properties_reply_t *R); + +/** + * Return the reply + * @param c The connection + * @param cookie The cookie + * @param e The xcb_generic_error_t supplied + * + * Returns the reply of the request asked by + * + * The parameter @p e supplied to this function must be NULL if + * xcb_input_xi_list_properties_unchecked(). is used. + * Otherwise, it stores the error if any. + * + * The returned value must be freed by the caller using free(). + */ +xcb_input_xi_list_properties_reply_t * +xcb_input_xi_list_properties_reply (xcb_connection_t *c, + xcb_input_xi_list_properties_cookie_t cookie /**< */, + xcb_generic_error_t **e); + +uint8_t * +xcb_input_xi_change_property_items_data_8 (const xcb_input_xi_change_property_items_t *S); + +int +xcb_input_xi_change_property_items_data_8_length (const xcb_input_xi_change_property_request_t *R, + const xcb_input_xi_change_property_items_t *S); + +xcb_generic_iterator_t +xcb_input_xi_change_property_items_data_8_end (const xcb_input_xi_change_property_request_t *R, + const xcb_input_xi_change_property_items_t *S); + +uint16_t * +xcb_input_xi_change_property_items_data_16 (const xcb_input_xi_change_property_items_t *S); + +int +xcb_input_xi_change_property_items_data_16_length (const xcb_input_xi_change_property_request_t *R, + const xcb_input_xi_change_property_items_t *S); + +xcb_generic_iterator_t +xcb_input_xi_change_property_items_data_16_end (const xcb_input_xi_change_property_request_t *R, + const xcb_input_xi_change_property_items_t *S); + +uint32_t * +xcb_input_xi_change_property_items_data_32 (const xcb_input_xi_change_property_items_t *S); + +int +xcb_input_xi_change_property_items_data_32_length (const xcb_input_xi_change_property_request_t *R, + const xcb_input_xi_change_property_items_t *S); + +xcb_generic_iterator_t +xcb_input_xi_change_property_items_data_32_end (const xcb_input_xi_change_property_request_t *R, + const xcb_input_xi_change_property_items_t *S); + +int +xcb_input_xi_change_property_items_serialize (void **_buffer, + uint32_t num_items, + uint8_t format, + const xcb_input_xi_change_property_items_t *_aux); + +int +xcb_input_xi_change_property_items_unpack (const void *_buffer, + uint32_t num_items, + uint8_t format, + xcb_input_xi_change_property_items_t *_aux); + +int +xcb_input_xi_change_property_items_sizeof (const void *_buffer, + uint32_t num_items, + uint8_t format); + +int +xcb_input_xi_change_property_sizeof (const void *_buffer); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will not cause + * a reply to be generated. Any returned error will be + * saved for handling by xcb_request_check(). + */ +xcb_void_cookie_t +xcb_input_xi_change_property_checked (xcb_connection_t *c, + xcb_input_device_id_t deviceid, + uint8_t mode, + uint8_t format, + xcb_atom_t property, + xcb_atom_t type, + uint32_t num_items, + const void *items); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_void_cookie_t +xcb_input_xi_change_property (xcb_connection_t *c, + xcb_input_device_id_t deviceid, + uint8_t mode, + uint8_t format, + xcb_atom_t property, + xcb_atom_t type, + uint32_t num_items, + const void *items); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will not cause + * a reply to be generated. Any returned error will be + * saved for handling by xcb_request_check(). + */ +xcb_void_cookie_t +xcb_input_xi_change_property_aux_checked (xcb_connection_t *c, + xcb_input_device_id_t deviceid, + uint8_t mode, + uint8_t format, + xcb_atom_t property, + xcb_atom_t type, + uint32_t num_items, + const xcb_input_xi_change_property_items_t *items); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_void_cookie_t +xcb_input_xi_change_property_aux (xcb_connection_t *c, + xcb_input_device_id_t deviceid, + uint8_t mode, + uint8_t format, + xcb_atom_t property, + xcb_atom_t type, + uint32_t num_items, + const xcb_input_xi_change_property_items_t *items); + +void * +xcb_input_xi_change_property_items (const xcb_input_xi_change_property_request_t *R); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will not cause + * a reply to be generated. Any returned error will be + * saved for handling by xcb_request_check(). + */ +xcb_void_cookie_t +xcb_input_xi_delete_property_checked (xcb_connection_t *c, + xcb_input_device_id_t deviceid, + xcb_atom_t property); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_void_cookie_t +xcb_input_xi_delete_property (xcb_connection_t *c, + xcb_input_device_id_t deviceid, + xcb_atom_t property); + +uint8_t * +xcb_input_xi_get_property_items_data_8 (const xcb_input_xi_get_property_items_t *S); + +int +xcb_input_xi_get_property_items_data_8_length (const xcb_input_xi_get_property_reply_t *R, + const xcb_input_xi_get_property_items_t *S); + +xcb_generic_iterator_t +xcb_input_xi_get_property_items_data_8_end (const xcb_input_xi_get_property_reply_t *R, + const xcb_input_xi_get_property_items_t *S); + +uint16_t * +xcb_input_xi_get_property_items_data_16 (const xcb_input_xi_get_property_items_t *S); + +int +xcb_input_xi_get_property_items_data_16_length (const xcb_input_xi_get_property_reply_t *R, + const xcb_input_xi_get_property_items_t *S); + +xcb_generic_iterator_t +xcb_input_xi_get_property_items_data_16_end (const xcb_input_xi_get_property_reply_t *R, + const xcb_input_xi_get_property_items_t *S); + +uint32_t * +xcb_input_xi_get_property_items_data_32 (const xcb_input_xi_get_property_items_t *S); + +int +xcb_input_xi_get_property_items_data_32_length (const xcb_input_xi_get_property_reply_t *R, + const xcb_input_xi_get_property_items_t *S); + +xcb_generic_iterator_t +xcb_input_xi_get_property_items_data_32_end (const xcb_input_xi_get_property_reply_t *R, + const xcb_input_xi_get_property_items_t *S); + +int +xcb_input_xi_get_property_items_serialize (void **_buffer, + uint32_t num_items, + uint8_t format, + const xcb_input_xi_get_property_items_t *_aux); + +int +xcb_input_xi_get_property_items_unpack (const void *_buffer, + uint32_t num_items, + uint8_t format, + xcb_input_xi_get_property_items_t *_aux); + +int +xcb_input_xi_get_property_items_sizeof (const void *_buffer, + uint32_t num_items, + uint8_t format); + +int +xcb_input_xi_get_property_sizeof (const void *_buffer); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_input_xi_get_property_cookie_t +xcb_input_xi_get_property (xcb_connection_t *c, + xcb_input_device_id_t deviceid, + uint8_t _delete, + xcb_atom_t property, + xcb_atom_t type, + uint32_t offset, + uint32_t len); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will cause + * a reply to be generated. Any returned error will be + * placed in the event queue. + */ +xcb_input_xi_get_property_cookie_t +xcb_input_xi_get_property_unchecked (xcb_connection_t *c, + xcb_input_device_id_t deviceid, + uint8_t _delete, + xcb_atom_t property, + xcb_atom_t type, + uint32_t offset, + uint32_t len); + +void * +xcb_input_xi_get_property_items (const xcb_input_xi_get_property_reply_t *R); + +/** + * Return the reply + * @param c The connection + * @param cookie The cookie + * @param e The xcb_generic_error_t supplied + * + * Returns the reply of the request asked by + * + * The parameter @p e supplied to this function must be NULL if + * xcb_input_xi_get_property_unchecked(). is used. + * Otherwise, it stores the error if any. + * + * The returned value must be freed by the caller using free(). + */ +xcb_input_xi_get_property_reply_t * +xcb_input_xi_get_property_reply (xcb_connection_t *c, + xcb_input_xi_get_property_cookie_t cookie /**< */, + xcb_generic_error_t **e); + +int +xcb_input_xi_get_selected_events_sizeof (const void *_buffer); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + */ +xcb_input_xi_get_selected_events_cookie_t +xcb_input_xi_get_selected_events (xcb_connection_t *c, + xcb_window_t window); + +/** + * + * @param c The connection + * @return A cookie + * + * Delivers a request to the X server. + * + * This form can be used only if the request will cause + * a reply to be generated. Any returned error will be + * placed in the event queue. + */ +xcb_input_xi_get_selected_events_cookie_t +xcb_input_xi_get_selected_events_unchecked (xcb_connection_t *c, + xcb_window_t window); + +int +xcb_input_xi_get_selected_events_masks_length (const xcb_input_xi_get_selected_events_reply_t *R); + +xcb_input_event_mask_iterator_t +xcb_input_xi_get_selected_events_masks_iterator (const xcb_input_xi_get_selected_events_reply_t *R); + +/** + * Return the reply + * @param c The connection + * @param cookie The cookie + * @param e The xcb_generic_error_t supplied + * + * Returns the reply of the request asked by + * + * The parameter @p e supplied to this function must be NULL if + * xcb_input_xi_get_selected_events_unchecked(). is used. + * Otherwise, it stores the error if any. + * + * The returned value must be freed by the caller using free(). + */ +xcb_input_xi_get_selected_events_reply_t * +xcb_input_xi_get_selected_events_reply (xcb_connection_t *c, + xcb_input_xi_get_selected_events_cookie_t cookie /**< */, + xcb_generic_error_t **e); + +int +xcb_input_device_changed_sizeof (const void *_buffer); + +int +xcb_input_device_changed_classes_length (const xcb_input_device_changed_event_t *R); + +xcb_input_device_class_iterator_t +xcb_input_device_changed_classes_iterator (const xcb_input_device_changed_event_t *R); + +int +xcb_input_key_press_sizeof (const void *_buffer); + +uint32_t * +xcb_input_key_press_button_mask (const xcb_input_key_press_event_t *R); + +int +xcb_input_key_press_button_mask_length (const xcb_input_key_press_event_t *R); + +xcb_generic_iterator_t +xcb_input_key_press_button_mask_end (const xcb_input_key_press_event_t *R); + +uint32_t * +xcb_input_key_press_valuator_mask (const xcb_input_key_press_event_t *R); + +int +xcb_input_key_press_valuator_mask_length (const xcb_input_key_press_event_t *R); + +xcb_generic_iterator_t +xcb_input_key_press_valuator_mask_end (const xcb_input_key_press_event_t *R); + +xcb_input_fp3232_t * +xcb_input_key_press_axisvalues (const xcb_input_key_press_event_t *R); + +int +xcb_input_key_press_axisvalues_length (const xcb_input_key_press_event_t *R); + +xcb_input_fp3232_iterator_t +xcb_input_key_press_axisvalues_iterator (const xcb_input_key_press_event_t *R); + +int +xcb_input_key_release_sizeof (const void *_buffer /**< */); + +int +xcb_input_button_press_sizeof (const void *_buffer); + +uint32_t * +xcb_input_button_press_button_mask (const xcb_input_button_press_event_t *R); + +int +xcb_input_button_press_button_mask_length (const xcb_input_button_press_event_t *R); + +xcb_generic_iterator_t +xcb_input_button_press_button_mask_end (const xcb_input_button_press_event_t *R); + +uint32_t * +xcb_input_button_press_valuator_mask (const xcb_input_button_press_event_t *R); + +int +xcb_input_button_press_valuator_mask_length (const xcb_input_button_press_event_t *R); + +xcb_generic_iterator_t +xcb_input_button_press_valuator_mask_end (const xcb_input_button_press_event_t *R); + +xcb_input_fp3232_t * +xcb_input_button_press_axisvalues (const xcb_input_button_press_event_t *R); + +int +xcb_input_button_press_axisvalues_length (const xcb_input_button_press_event_t *R); + +xcb_input_fp3232_iterator_t +xcb_input_button_press_axisvalues_iterator (const xcb_input_button_press_event_t *R); + +int +xcb_input_button_release_sizeof (const void *_buffer /**< */); + +int +xcb_input_motion_sizeof (const void *_buffer /**< */); + +int +xcb_input_enter_sizeof (const void *_buffer); + +uint32_t * +xcb_input_enter_buttons (const xcb_input_enter_event_t *R); + +int +xcb_input_enter_buttons_length (const xcb_input_enter_event_t *R); + +xcb_generic_iterator_t +xcb_input_enter_buttons_end (const xcb_input_enter_event_t *R); + +int +xcb_input_leave_sizeof (const void *_buffer /**< */); + +int +xcb_input_focus_in_sizeof (const void *_buffer /**< */); + +int +xcb_input_focus_out_sizeof (const void *_buffer /**< */); + +/** + * Get the next element of the iterator + * @param i Pointer to a xcb_input_hierarchy_info_iterator_t + * + * Get the next element in the iterator. The member rem is + * decreased by one. The member data points to the next + * element. The member index is increased by sizeof(xcb_input_hierarchy_info_t) + */ +void +xcb_input_hierarchy_info_next (xcb_input_hierarchy_info_iterator_t *i); + +/** + * Return the iterator pointing to the last element + * @param i An xcb_input_hierarchy_info_iterator_t + * @return The iterator pointing to the last element + * + * Set the current element in the iterator to the last element. + * The member rem is set to 0. The member data points to the + * last element. + */ +xcb_generic_iterator_t +xcb_input_hierarchy_info_end (xcb_input_hierarchy_info_iterator_t i); + +int +xcb_input_hierarchy_sizeof (const void *_buffer); + +xcb_input_hierarchy_info_t * +xcb_input_hierarchy_infos (const xcb_input_hierarchy_event_t *R); + +int +xcb_input_hierarchy_infos_length (const xcb_input_hierarchy_event_t *R); + +xcb_input_hierarchy_info_iterator_t +xcb_input_hierarchy_infos_iterator (const xcb_input_hierarchy_event_t *R); + +int +xcb_input_raw_key_press_sizeof (const void *_buffer); + +uint32_t * +xcb_input_raw_key_press_valuator_mask (const xcb_input_raw_key_press_event_t *R); + +int +xcb_input_raw_key_press_valuator_mask_length (const xcb_input_raw_key_press_event_t *R); + +xcb_generic_iterator_t +xcb_input_raw_key_press_valuator_mask_end (const xcb_input_raw_key_press_event_t *R); + +xcb_input_fp3232_t * +xcb_input_raw_key_press_axisvalues (const xcb_input_raw_key_press_event_t *R); + +int +xcb_input_raw_key_press_axisvalues_length (const xcb_input_raw_key_press_event_t *R); + +xcb_input_fp3232_iterator_t +xcb_input_raw_key_press_axisvalues_iterator (const xcb_input_raw_key_press_event_t *R); + +xcb_input_fp3232_t * +xcb_input_raw_key_press_axisvalues_raw (const xcb_input_raw_key_press_event_t *R); + +int +xcb_input_raw_key_press_axisvalues_raw_length (const xcb_input_raw_key_press_event_t *R); + +xcb_input_fp3232_iterator_t +xcb_input_raw_key_press_axisvalues_raw_iterator (const xcb_input_raw_key_press_event_t *R); + +int +xcb_input_raw_key_release_sizeof (const void *_buffer /**< */); + +int +xcb_input_raw_button_press_sizeof (const void *_buffer); + +uint32_t * +xcb_input_raw_button_press_valuator_mask (const xcb_input_raw_button_press_event_t *R); + +int +xcb_input_raw_button_press_valuator_mask_length (const xcb_input_raw_button_press_event_t *R); + +xcb_generic_iterator_t +xcb_input_raw_button_press_valuator_mask_end (const xcb_input_raw_button_press_event_t *R); + +xcb_input_fp3232_t * +xcb_input_raw_button_press_axisvalues (const xcb_input_raw_button_press_event_t *R); + +int +xcb_input_raw_button_press_axisvalues_length (const xcb_input_raw_button_press_event_t *R); + +xcb_input_fp3232_iterator_t +xcb_input_raw_button_press_axisvalues_iterator (const xcb_input_raw_button_press_event_t *R); + +xcb_input_fp3232_t * +xcb_input_raw_button_press_axisvalues_raw (const xcb_input_raw_button_press_event_t *R); + +int +xcb_input_raw_button_press_axisvalues_raw_length (const xcb_input_raw_button_press_event_t *R); + +xcb_input_fp3232_iterator_t +xcb_input_raw_button_press_axisvalues_raw_iterator (const xcb_input_raw_button_press_event_t *R); + +int +xcb_input_raw_button_release_sizeof (const void *_buffer /**< */); + +int +xcb_input_raw_motion_sizeof (const void *_buffer /**< */); + +int +xcb_input_touch_begin_sizeof (const void *_buffer); + +uint32_t * +xcb_input_touch_begin_button_mask (const xcb_input_touch_begin_event_t *R); + +int +xcb_input_touch_begin_button_mask_length (const xcb_input_touch_begin_event_t *R); + +xcb_generic_iterator_t +xcb_input_touch_begin_button_mask_end (const xcb_input_touch_begin_event_t *R); + +uint32_t * +xcb_input_touch_begin_valuator_mask (const xcb_input_touch_begin_event_t *R); + +int +xcb_input_touch_begin_valuator_mask_length (const xcb_input_touch_begin_event_t *R); + +xcb_generic_iterator_t +xcb_input_touch_begin_valuator_mask_end (const xcb_input_touch_begin_event_t *R); + +xcb_input_fp3232_t * +xcb_input_touch_begin_axisvalues (const xcb_input_touch_begin_event_t *R); + +int +xcb_input_touch_begin_axisvalues_length (const xcb_input_touch_begin_event_t *R); + +xcb_input_fp3232_iterator_t +xcb_input_touch_begin_axisvalues_iterator (const xcb_input_touch_begin_event_t *R); + +int +xcb_input_touch_update_sizeof (const void *_buffer /**< */); + +int +xcb_input_touch_end_sizeof (const void *_buffer /**< */); + +int +xcb_input_raw_touch_begin_sizeof (const void *_buffer); + +uint32_t * +xcb_input_raw_touch_begin_valuator_mask (const xcb_input_raw_touch_begin_event_t *R); + +int +xcb_input_raw_touch_begin_valuator_mask_length (const xcb_input_raw_touch_begin_event_t *R); + +xcb_generic_iterator_t +xcb_input_raw_touch_begin_valuator_mask_end (const xcb_input_raw_touch_begin_event_t *R); + +xcb_input_fp3232_t * +xcb_input_raw_touch_begin_axisvalues (const xcb_input_raw_touch_begin_event_t *R); + +int +xcb_input_raw_touch_begin_axisvalues_length (const xcb_input_raw_touch_begin_event_t *R); + +xcb_input_fp3232_iterator_t +xcb_input_raw_touch_begin_axisvalues_iterator (const xcb_input_raw_touch_begin_event_t *R); + +xcb_input_fp3232_t * +xcb_input_raw_touch_begin_axisvalues_raw (const xcb_input_raw_touch_begin_event_t *R); + +int +xcb_input_raw_touch_begin_axisvalues_raw_length (const xcb_input_raw_touch_begin_event_t *R); + +xcb_input_fp3232_iterator_t +xcb_input_raw_touch_begin_axisvalues_raw_iterator (const xcb_input_raw_touch_begin_event_t *R); + +int +xcb_input_raw_touch_update_sizeof (const void *_buffer /**< */); + +int +xcb_input_raw_touch_end_sizeof (const void *_buffer /**< */); + +#ifdef __cplusplus +} +#endif + +#endif + +/** + * @} + */ diff --git a/src/3rdparty/xcb/libxcb/randr.c b/src/3rdparty/xcb/libxcb/randr.c index 1956ee033e..0232af802f 100644 --- a/src/3rdparty/xcb/libxcb/randr.c +++ b/src/3rdparty/xcb/libxcb/randr.c @@ -3,10 +3,17 @@ * Edit at your peril. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif +#include <stdlib.h> #include <string.h> #include <assert.h> +#include <stddef.h> /* for offsetof() */ #include "xcbext.h" #include "randr.h" + +#define ALIGNOF(type) offsetof(struct { char dummy; type member; }, member) #include "xproto.h" #include "render.h" @@ -164,6 +171,35 @@ xcb_randr_screen_size_end (xcb_randr_screen_size_iterator_t i /**< */) return ret; } +int +xcb_randr_refresh_rates_sizeof (const void *_buffer /**< */) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_randr_refresh_rates_t *_aux = (xcb_randr_refresh_rates_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + + xcb_block_len += sizeof(xcb_randr_refresh_rates_t); + xcb_tmp += xcb_block_len; + /* rates */ + xcb_block_len += _aux->nRates * sizeof(uint16_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint16_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -230,10 +266,11 @@ void xcb_randr_refresh_rates_next (xcb_randr_refresh_rates_iterator_t *i /**< */) { xcb_randr_refresh_rates_t *R = i->data; - xcb_generic_iterator_t child = xcb_randr_refresh_rates_rates_end(R); + xcb_generic_iterator_t child; + child.data = (xcb_randr_refresh_rates_t *)(((char *)R) + xcb_randr_refresh_rates_sizeof(R)); + i->index = (char *) child.data - (char *) i->data; --i->rem; i->data = (xcb_randr_refresh_rates_t *) child.data; - i->index = child.index; } @@ -293,6 +330,7 @@ xcb_randr_query_version (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -332,6 +370,7 @@ xcb_randr_query_version_unchecked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -404,6 +443,7 @@ xcb_randr_set_screen_config (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -456,6 +496,7 @@ xcb_randr_set_screen_config_unchecked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -516,6 +557,7 @@ xcb_randr_select_input_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -556,10 +598,57 @@ xcb_randr_select_input (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } +int +xcb_randr_get_screen_info_sizeof (const void *_buffer /**< */) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_randr_get_screen_info_reply_t *_aux = (xcb_randr_get_screen_info_reply_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + unsigned int i; + unsigned int xcb_tmp_len; + + xcb_block_len += sizeof(xcb_randr_get_screen_info_reply_t); + xcb_tmp += xcb_block_len; + /* sizes */ + xcb_block_len += _aux->nSizes * sizeof(xcb_randr_screen_size_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_randr_screen_size_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* rates */ + for(i=0; i<(_aux->nInfo - _aux->nSizes); i++) { + xcb_tmp_len = xcb_randr_refresh_rates_sizeof(xcb_tmp); + xcb_block_len += xcb_tmp_len; + xcb_tmp += xcb_tmp_len; + } + xcb_align_to = ALIGNOF(xcb_randr_refresh_rates_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -592,6 +681,7 @@ xcb_randr_get_screen_info (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -628,6 +718,7 @@ xcb_randr_get_screen_info_unchecked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -773,6 +864,7 @@ xcb_randr_get_screen_size_range (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -809,6 +901,7 @@ xcb_randr_get_screen_size_range_unchecked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -877,6 +970,7 @@ xcb_randr_set_screen_size_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -925,6 +1019,7 @@ xcb_randr_set_screen_size (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -967,6 +1062,71 @@ xcb_randr_mode_info_end (xcb_randr_mode_info_iterator_t i /**< */) return ret; } +int +xcb_randr_get_screen_resources_sizeof (const void *_buffer /**< */) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_randr_get_screen_resources_reply_t *_aux = (xcb_randr_get_screen_resources_reply_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + + xcb_block_len += sizeof(xcb_randr_get_screen_resources_reply_t); + xcb_tmp += xcb_block_len; + /* crtcs */ + xcb_block_len += _aux->num_crtcs * sizeof(uint32_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_randr_crtc_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* outputs */ + xcb_block_len += _aux->num_outputs * sizeof(uint32_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_randr_output_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* modes */ + xcb_block_len += _aux->num_modes * sizeof(xcb_randr_mode_info_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_randr_mode_info_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* names */ + xcb_block_len += _aux->names_len * sizeof(uint8_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint8_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -999,6 +1159,7 @@ xcb_randr_get_screen_resources (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -1035,6 +1196,7 @@ xcb_randr_get_screen_resources_unchecked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -1273,6 +1435,71 @@ xcb_randr_get_screen_resources_reply (xcb_connection_t * return (xcb_randr_get_screen_resources_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); } +int +xcb_randr_get_output_info_sizeof (const void *_buffer /**< */) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_randr_get_output_info_reply_t *_aux = (xcb_randr_get_output_info_reply_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + + xcb_block_len += sizeof(xcb_randr_get_output_info_reply_t); + xcb_tmp += xcb_block_len; + /* crtcs */ + xcb_block_len += _aux->num_crtcs * sizeof(xcb_randr_output_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_randr_crtc_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* modes */ + xcb_block_len += _aux->num_modes * sizeof(xcb_randr_output_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_randr_mode_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* clones */ + xcb_block_len += _aux->num_clones * sizeof(xcb_randr_output_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_randr_output_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* name */ + xcb_block_len += _aux->name_len * sizeof(uint8_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint8_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -1308,6 +1535,7 @@ xcb_randr_get_output_info (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -1347,6 +1575,7 @@ xcb_randr_get_output_info_unchecked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -1585,6 +1814,35 @@ xcb_randr_get_output_info_reply (xcb_connection_t *c /**< */ return (xcb_randr_get_output_info_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); } +int +xcb_randr_list_output_properties_sizeof (const void *_buffer /**< */) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_randr_list_output_properties_reply_t *_aux = (xcb_randr_list_output_properties_reply_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + + xcb_block_len += sizeof(xcb_randr_list_output_properties_reply_t); + xcb_tmp += xcb_block_len; + /* atoms */ + xcb_block_len += _aux->num_atoms * sizeof(xcb_atom_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_atom_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -1617,6 +1875,7 @@ xcb_randr_list_output_properties (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -1653,6 +1912,7 @@ xcb_randr_list_output_properties_unchecked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -1729,6 +1989,35 @@ xcb_randr_list_output_properties_reply (xcb_connection_t return (xcb_randr_list_output_properties_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); } +int +xcb_randr_query_output_property_sizeof (const void *_buffer /**< */) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_randr_query_output_property_reply_t *_aux = (xcb_randr_query_output_property_reply_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + + xcb_block_len += sizeof(xcb_randr_query_output_property_reply_t); + xcb_tmp += xcb_block_len; + /* validValues */ + xcb_block_len += _aux->length * sizeof(int32_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(int32_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -1764,6 +2053,7 @@ xcb_randr_query_output_property (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -1803,6 +2093,7 @@ xcb_randr_query_output_property_unchecked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -1879,6 +2170,35 @@ xcb_randr_query_output_property_reply (xcb_connection_t return (xcb_randr_query_output_property_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); } +int +xcb_randr_configure_output_property_sizeof (const void *_buffer /**< */, + uint32_t values_len /**< */) +{ + char *xcb_tmp = (char *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + + xcb_block_len += sizeof(xcb_randr_configure_output_property_request_t); + xcb_tmp += xcb_block_len; + /* values */ + xcb_block_len += values_len * sizeof(int32_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(int32_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -1925,10 +2245,12 @@ xcb_randr_configure_output_property_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* int32_t values */ xcb_parts[4].iov_base = (char *) values; xcb_parts[4].iov_len = values_len * sizeof(int32_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -1979,14 +2301,45 @@ xcb_randr_configure_output_property (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* int32_t values */ xcb_parts[4].iov_base = (char *) values; xcb_parts[4].iov_len = values_len * sizeof(int32_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } +int +xcb_randr_change_output_property_sizeof (const void *_buffer /**< */) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_randr_change_output_property_request_t *_aux = (xcb_randr_change_output_property_request_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + + xcb_block_len += sizeof(xcb_randr_change_output_property_request_t); + xcb_tmp += xcb_block_len; + /* data */ + xcb_block_len += ((_aux->num_units * _aux->format) / 8) * sizeof(char); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(char); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -2037,10 +2390,12 @@ xcb_randr_change_output_property_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* void data */ xcb_parts[4].iov_base = (char *) data; xcb_parts[4].iov_len = ((num_units * format) / 8) * sizeof(char); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -2095,10 +2450,12 @@ xcb_randr_change_output_property (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* void data */ xcb_parts[4].iov_base = (char *) data; xcb_parts[4].iov_len = ((num_units * format) / 8) * sizeof(char); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -2138,6 +2495,7 @@ xcb_randr_delete_output_property_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -2177,10 +2535,40 @@ xcb_randr_delete_output_property (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } +int +xcb_randr_get_output_property_sizeof (const void *_buffer /**< */) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_randr_get_output_property_reply_t *_aux = (xcb_randr_get_output_property_reply_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + + xcb_block_len += sizeof(xcb_randr_get_output_property_reply_t); + xcb_tmp += xcb_block_len; + /* data */ + xcb_block_len += (_aux->num_items * (_aux->format / 8)) * sizeof(uint8_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint8_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -2232,6 +2620,7 @@ xcb_randr_get_output_property (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -2287,6 +2676,7 @@ xcb_randr_get_output_property_unchecked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -2363,6 +2753,35 @@ xcb_randr_get_output_property_reply (xcb_connection_t *c return (xcb_randr_get_output_property_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); } +int +xcb_randr_create_mode_sizeof (const void *_buffer /**< */, + uint32_t name_len /**< */) +{ + char *xcb_tmp = (char *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + + xcb_block_len += sizeof(xcb_randr_create_mode_request_t); + xcb_tmp += xcb_block_len; + /* name */ + xcb_block_len += name_len * sizeof(char); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(char); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -2402,10 +2821,12 @@ xcb_randr_create_mode (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* char name */ xcb_parts[4].iov_base = (char *) name; xcb_parts[4].iov_len = name_len * sizeof(char); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -2449,10 +2870,12 @@ xcb_randr_create_mode_unchecked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* char name */ xcb_parts[4].iov_base = (char *) name; xcb_parts[4].iov_len = name_len * sizeof(char); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -2509,6 +2932,7 @@ xcb_randr_destroy_mode_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -2545,6 +2969,7 @@ xcb_randr_destroy_mode (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -2584,6 +3009,7 @@ xcb_randr_add_output_mode_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -2623,6 +3049,7 @@ xcb_randr_add_output_mode (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -2662,6 +3089,7 @@ xcb_randr_delete_output_mode_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -2701,10 +3129,52 @@ xcb_randr_delete_output_mode (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } +int +xcb_randr_get_crtc_info_sizeof (const void *_buffer /**< */) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_randr_get_crtc_info_reply_t *_aux = (xcb_randr_get_crtc_info_reply_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + + xcb_block_len += sizeof(xcb_randr_get_crtc_info_reply_t); + xcb_tmp += xcb_block_len; + /* outputs */ + xcb_block_len += _aux->num_outputs * sizeof(xcb_randr_output_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_randr_output_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* possible */ + xcb_block_len += _aux->num_possible_outputs * sizeof(xcb_randr_output_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_randr_output_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -2740,6 +3210,7 @@ xcb_randr_get_crtc_info (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -2779,6 +3250,7 @@ xcb_randr_get_crtc_info_unchecked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -2909,6 +3381,35 @@ xcb_randr_get_crtc_info_reply (xcb_connection_t *c /**< */, return (xcb_randr_get_crtc_info_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); } +int +xcb_randr_set_crtc_config_sizeof (const void *_buffer /**< */, + uint32_t outputs_len /**< */) +{ + char *xcb_tmp = (char *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + + xcb_block_len += sizeof(xcb_randr_set_crtc_config_request_t); + xcb_tmp += xcb_block_len; + /* outputs */ + xcb_block_len += outputs_len * sizeof(xcb_randr_output_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_randr_output_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -2964,10 +3465,12 @@ xcb_randr_set_crtc_config (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_randr_output_t outputs */ xcb_parts[4].iov_base = (char *) outputs; xcb_parts[4].iov_len = outputs_len * sizeof(xcb_timestamp_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -3027,10 +3530,12 @@ xcb_randr_set_crtc_config_unchecked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_randr_output_t outputs */ xcb_parts[4].iov_base = (char *) outputs; xcb_parts[4].iov_len = outputs_len * sizeof(xcb_timestamp_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -3087,6 +3592,7 @@ xcb_randr_get_crtc_gamma_size (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -3123,6 +3629,7 @@ xcb_randr_get_crtc_gamma_size_unchecked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -3147,6 +3654,59 @@ xcb_randr_get_crtc_gamma_size_reply (xcb_connection_t *c return (xcb_randr_get_crtc_gamma_size_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); } +int +xcb_randr_get_crtc_gamma_sizeof (const void *_buffer /**< */) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_randr_get_crtc_gamma_reply_t *_aux = (xcb_randr_get_crtc_gamma_reply_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + + xcb_block_len += sizeof(xcb_randr_get_crtc_gamma_reply_t); + xcb_tmp += xcb_block_len; + /* red */ + xcb_block_len += _aux->size * sizeof(uint16_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint16_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* green */ + xcb_block_len += _aux->size * sizeof(uint16_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint16_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* blue */ + xcb_block_len += _aux->size * sizeof(uint16_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint16_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -3179,6 +3739,7 @@ xcb_randr_get_crtc_gamma (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -3215,6 +3776,7 @@ xcb_randr_get_crtc_gamma_unchecked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -3399,6 +3961,59 @@ xcb_randr_get_crtc_gamma_reply (xcb_connection_t *c /**< */, return (xcb_randr_get_crtc_gamma_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); } +int +xcb_randr_set_crtc_gamma_sizeof (const void *_buffer /**< */) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_randr_set_crtc_gamma_request_t *_aux = (xcb_randr_set_crtc_gamma_request_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + + xcb_block_len += sizeof(xcb_randr_set_crtc_gamma_request_t); + xcb_tmp += xcb_block_len; + /* red */ + xcb_block_len += _aux->size * sizeof(uint16_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint16_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* green */ + xcb_block_len += _aux->size * sizeof(uint16_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint16_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* blue */ + xcb_block_len += _aux->size * sizeof(uint16_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint16_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -3441,18 +4056,22 @@ xcb_randr_set_crtc_gamma_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* uint16_t red */ xcb_parts[4].iov_base = (char *) red; xcb_parts[4].iov_len = size * sizeof(uint16_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + /* uint16_t green */ xcb_parts[6].iov_base = (char *) green; xcb_parts[6].iov_len = size * sizeof(uint16_t); xcb_parts[7].iov_base = 0; xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3; + /* uint16_t blue */ xcb_parts[8].iov_base = (char *) blue; xcb_parts[8].iov_len = size * sizeof(uint16_t); xcb_parts[9].iov_base = 0; xcb_parts[9].iov_len = -xcb_parts[8].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -3499,22 +4118,91 @@ xcb_randr_set_crtc_gamma (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* uint16_t red */ xcb_parts[4].iov_base = (char *) red; xcb_parts[4].iov_len = size * sizeof(uint16_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + /* uint16_t green */ xcb_parts[6].iov_base = (char *) green; xcb_parts[6].iov_len = size * sizeof(uint16_t); xcb_parts[7].iov_base = 0; xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3; + /* uint16_t blue */ xcb_parts[8].iov_base = (char *) blue; xcb_parts[8].iov_len = size * sizeof(uint16_t); xcb_parts[9].iov_base = 0; xcb_parts[9].iov_len = -xcb_parts[8].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } +int +xcb_randr_get_screen_resources_current_sizeof (const void *_buffer /**< */) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_randr_get_screen_resources_current_reply_t *_aux = (xcb_randr_get_screen_resources_current_reply_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + + xcb_block_len += sizeof(xcb_randr_get_screen_resources_current_reply_t); + xcb_tmp += xcb_block_len; + /* crtcs */ + xcb_block_len += _aux->num_crtcs * sizeof(uint32_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_randr_crtc_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* outputs */ + xcb_block_len += _aux->num_outputs * sizeof(uint32_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_randr_output_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* modes */ + xcb_block_len += _aux->num_modes * sizeof(xcb_randr_mode_info_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_randr_mode_info_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* names */ + xcb_block_len += _aux->names_len * sizeof(uint8_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint8_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -3547,6 +4235,7 @@ xcb_randr_get_screen_resources_current (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -3583,6 +4272,7 @@ xcb_randr_get_screen_resources_current_unchecked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -3821,6 +4511,48 @@ xcb_randr_get_screen_resources_current_reply (xcb_connection_t return (xcb_randr_get_screen_resources_current_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); } +int +xcb_randr_set_crtc_transform_sizeof (const void *_buffer /**< */, + uint32_t filter_params_len /**< */) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_randr_set_crtc_transform_request_t *_aux = (xcb_randr_set_crtc_transform_request_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + + xcb_block_len += sizeof(xcb_randr_set_crtc_transform_request_t); + xcb_tmp += xcb_block_len; + /* filter_name */ + xcb_block_len += _aux->filter_len * sizeof(char); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(char); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* filter_params */ + xcb_block_len += filter_params_len * sizeof(xcb_render_fixed_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_render_fixed_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -3866,14 +4598,17 @@ xcb_randr_set_crtc_transform_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* char filter_name */ xcb_parts[4].iov_base = (char *) filter_name; xcb_parts[4].iov_len = filter_len * sizeof(char); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + /* xcb_render_fixed_t filter_params */ xcb_parts[6].iov_base = (char *) filter_params; xcb_parts[6].iov_len = filter_params_len * sizeof(xcb_render_fixed_t); xcb_parts[7].iov_base = 0; xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -3923,18 +4658,86 @@ xcb_randr_set_crtc_transform (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* char filter_name */ xcb_parts[4].iov_base = (char *) filter_name; xcb_parts[4].iov_len = filter_len * sizeof(char); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + /* xcb_render_fixed_t filter_params */ xcb_parts[6].iov_base = (char *) filter_params; xcb_parts[6].iov_len = filter_params_len * sizeof(xcb_render_fixed_t); xcb_parts[7].iov_base = 0; xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } +int +xcb_randr_get_crtc_transform_sizeof (const void *_buffer /**< */) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_randr_get_crtc_transform_reply_t *_aux = (xcb_randr_get_crtc_transform_reply_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + + xcb_block_len += sizeof(xcb_randr_get_crtc_transform_reply_t); + xcb_tmp += xcb_block_len; + /* pending_filter_name */ + xcb_block_len += _aux->pending_len * sizeof(char); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(char); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* pending_params */ + xcb_block_len += _aux->pending_nparams * sizeof(xcb_render_fixed_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_render_fixed_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* current_filter_name */ + xcb_block_len += _aux->current_len * sizeof(char); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(char); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* current_params */ + xcb_block_len += _aux->current_nparams * sizeof(xcb_render_fixed_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_render_fixed_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -3967,6 +4770,7 @@ xcb_randr_get_crtc_transform (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -4003,6 +4807,7 @@ xcb_randr_get_crtc_transform_unchecked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -4273,6 +5078,7 @@ xcb_randr_get_panning (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -4309,6 +5115,7 @@ xcb_randr_get_panning_unchecked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -4404,6 +5211,7 @@ xcb_randr_set_panning (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -4479,6 +5287,7 @@ xcb_randr_set_panning_unchecked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -4538,6 +5347,7 @@ xcb_randr_set_output_primary_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -4577,6 +5387,7 @@ xcb_randr_set_output_primary (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -4613,6 +5424,7 @@ xcb_randr_get_output_primary (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -4649,6 +5461,7 @@ xcb_randr_get_output_primary_unchecked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } diff --git a/src/3rdparty/xcb/libxcb/render.c b/src/3rdparty/xcb/libxcb/render.c index b251f8814c..7e5379cfcf 100644 --- a/src/3rdparty/xcb/libxcb/render.c +++ b/src/3rdparty/xcb/libxcb/render.c @@ -3,10 +3,17 @@ * Edit at your peril. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif +#include <stdlib.h> #include <string.h> #include <assert.h> +#include <stddef.h> /* for offsetof() */ #include "xcbext.h" #include "render.h" + +#define ALIGNOF(type) offsetof(struct { char dummy; type member; }, member) #include "xproto.h" xcb_extension_t xcb_render_id = { "RENDER", 0 }; @@ -315,6 +322,35 @@ xcb_render_pictvisual_end (xcb_render_pictvisual_iterator_t i /**< */) return ret; } +int +xcb_render_pictdepth_sizeof (const void *_buffer /**< */) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_render_pictdepth_t *_aux = (xcb_render_pictdepth_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + + xcb_block_len += sizeof(xcb_render_pictdepth_t); + xcb_tmp += xcb_block_len; + /* visuals */ + xcb_block_len += _aux->num_visuals * sizeof(xcb_render_pictvisual_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_render_pictvisual_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -381,10 +417,11 @@ void xcb_render_pictdepth_next (xcb_render_pictdepth_iterator_t *i /**< */) { xcb_render_pictdepth_t *R = i->data; - xcb_generic_iterator_t child = xcb_render_pictvisual_end(xcb_render_pictdepth_visuals_iterator(R)); + xcb_generic_iterator_t child; + child.data = (xcb_render_pictdepth_t *)(((char *)R) + xcb_render_pictdepth_sizeof(R)); + i->index = (char *) child.data - (char *) i->data; --i->rem; i->data = (xcb_render_pictdepth_t *) child.data; - i->index = child.index; } @@ -409,6 +446,40 @@ xcb_render_pictdepth_end (xcb_render_pictdepth_iterator_t i /**< */) return ret; } +int +xcb_render_pictscreen_sizeof (const void *_buffer /**< */) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_render_pictscreen_t *_aux = (xcb_render_pictscreen_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + unsigned int i; + unsigned int xcb_tmp_len; + + xcb_block_len += sizeof(xcb_render_pictscreen_t); + xcb_tmp += xcb_block_len; + /* depths */ + for(i=0; i<_aux->num_depths; i++) { + xcb_tmp_len = xcb_render_pictdepth_sizeof(xcb_tmp); + xcb_block_len += xcb_tmp_len; + xcb_tmp += xcb_tmp_len; + } + xcb_align_to = ALIGNOF(xcb_render_pictdepth_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -459,10 +530,11 @@ void xcb_render_pictscreen_next (xcb_render_pictscreen_iterator_t *i /**< */) { xcb_render_pictscreen_t *R = i->data; - xcb_generic_iterator_t child = xcb_render_pictdepth_end(xcb_render_pictscreen_depths_iterator(R)); + xcb_generic_iterator_t child; + child.data = (xcb_render_pictscreen_t *)(((char *)R) + xcb_render_pictscreen_sizeof(R)); + i->index = (char *) child.data - (char *) i->data; --i->rem; i->data = (xcb_render_pictscreen_t *) child.data; - i->index = child.index; } @@ -788,6 +860,7 @@ xcb_render_query_version (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -827,6 +900,7 @@ xcb_render_query_version_unchecked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -851,6 +925,64 @@ xcb_render_query_version_reply (xcb_connection_t *c /**< */, return (xcb_render_query_version_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); } +int +xcb_render_query_pict_formats_sizeof (const void *_buffer /**< */) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_render_query_pict_formats_reply_t *_aux = (xcb_render_query_pict_formats_reply_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + unsigned int i; + unsigned int xcb_tmp_len; + + xcb_block_len += sizeof(xcb_render_query_pict_formats_reply_t); + xcb_tmp += xcb_block_len; + /* formats */ + xcb_block_len += _aux->num_formats * sizeof(xcb_render_pictforminfo_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_render_pictforminfo_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* screens */ + for(i=0; i<_aux->num_screens; i++) { + xcb_tmp_len = xcb_render_pictscreen_sizeof(xcb_tmp); + xcb_block_len += xcb_tmp_len; + xcb_tmp += xcb_tmp_len; + } + xcb_align_to = ALIGNOF(xcb_render_pictscreen_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* subpixels */ + xcb_block_len += _aux->num_subpixel * sizeof(uint32_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint32_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -880,6 +1012,7 @@ xcb_render_query_pict_formats (xcb_connection_t *c /**< */) xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -913,6 +1046,7 @@ xcb_render_query_pict_formats_unchecked (xcb_connection_t *c /**< */) xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -1080,6 +1214,35 @@ xcb_render_query_pict_formats_reply (xcb_connection_t *c return (xcb_render_query_pict_formats_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); } +int +xcb_render_query_pict_index_values_sizeof (const void *_buffer /**< */) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_render_query_pict_index_values_reply_t *_aux = (xcb_render_query_pict_index_values_reply_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + + xcb_block_len += sizeof(xcb_render_query_pict_index_values_reply_t); + xcb_tmp += xcb_block_len; + /* values */ + xcb_block_len += _aux->num_values * sizeof(xcb_render_indexvalue_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_render_indexvalue_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -1112,6 +1275,7 @@ xcb_render_query_pict_index_values (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -1148,6 +1312,7 @@ xcb_render_query_pict_index_values_unchecked (xcb_connection_t *c /**< * xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -1224,6 +1389,35 @@ xcb_render_query_pict_index_values_reply (xcb_connection_t return (xcb_render_query_pict_index_values_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); } +int +xcb_render_create_picture_sizeof (const void *_buffer /**< */) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_render_create_picture_request_t *_aux = (xcb_render_create_picture_request_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + + xcb_block_len += sizeof(xcb_render_create_picture_request_t); + xcb_tmp += xcb_block_len; + /* value_list */ + xcb_block_len += xcb_popcount(_aux->value_mask) * sizeof(uint32_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint32_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -1267,10 +1461,12 @@ xcb_render_create_picture_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* uint32_t value_list */ xcb_parts[4].iov_base = (char *) value_list; xcb_parts[4].iov_len = xcb_popcount(value_mask) * sizeof(uint32_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -1318,14 +1514,45 @@ xcb_render_create_picture (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* uint32_t value_list */ xcb_parts[4].iov_base = (char *) value_list; xcb_parts[4].iov_len = xcb_popcount(value_mask) * sizeof(uint32_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } +int +xcb_render_change_picture_sizeof (const void *_buffer /**< */) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_render_change_picture_request_t *_aux = (xcb_render_change_picture_request_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + + xcb_block_len += sizeof(xcb_render_change_picture_request_t); + xcb_tmp += xcb_block_len; + /* value_list */ + xcb_block_len += xcb_popcount(_aux->value_mask) * sizeof(uint32_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint32_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -1363,10 +1590,12 @@ xcb_render_change_picture_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* uint32_t value_list */ xcb_parts[4].iov_base = (char *) value_list; xcb_parts[4].iov_len = xcb_popcount(value_mask) * sizeof(uint32_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -1408,14 +1637,45 @@ xcb_render_change_picture (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* uint32_t value_list */ xcb_parts[4].iov_base = (char *) value_list; xcb_parts[4].iov_len = xcb_popcount(value_mask) * sizeof(uint32_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } +int +xcb_render_set_picture_clip_rectangles_sizeof (const void *_buffer /**< */, + uint32_t rectangles_len /**< */) +{ + char *xcb_tmp = (char *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + + xcb_block_len += sizeof(xcb_render_set_picture_clip_rectangles_request_t); + xcb_tmp += xcb_block_len; + /* rectangles */ + xcb_block_len += rectangles_len * sizeof(xcb_rectangle_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_rectangle_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -1458,10 +1718,12 @@ xcb_render_set_picture_clip_rectangles_checked (xcb_connection_t *c /**< * xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_rectangle_t rectangles */ xcb_parts[4].iov_base = (char *) rectangles; xcb_parts[4].iov_len = rectangles_len * sizeof(xcb_rectangle_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -1508,10 +1770,12 @@ xcb_render_set_picture_clip_rectangles (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_rectangle_t rectangles */ xcb_parts[4].iov_base = (char *) rectangles; xcb_parts[4].iov_len = rectangles_len * sizeof(xcb_rectangle_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -1548,6 +1812,7 @@ xcb_render_free_picture_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -1584,6 +1849,7 @@ xcb_render_free_picture (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -1654,6 +1920,7 @@ xcb_render_composite_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -1724,10 +1991,40 @@ xcb_render_composite (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } +int +xcb_render_trapezoids_sizeof (const void *_buffer /**< */, + uint32_t traps_len /**< */) +{ + char *xcb_tmp = (char *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + + xcb_block_len += sizeof(xcb_render_trapezoids_request_t); + xcb_tmp += xcb_block_len; + /* traps */ + xcb_block_len += traps_len * sizeof(xcb_render_trapezoid_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_render_trapezoid_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -1780,10 +2077,12 @@ xcb_render_trapezoids_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_render_trapezoid_t traps */ xcb_parts[4].iov_base = (char *) traps; xcb_parts[4].iov_len = traps_len * sizeof(xcb_render_trapezoid_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -1840,14 +2139,45 @@ xcb_render_trapezoids (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_render_trapezoid_t traps */ xcb_parts[4].iov_base = (char *) traps; xcb_parts[4].iov_len = traps_len * sizeof(xcb_render_trapezoid_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } +int +xcb_render_triangles_sizeof (const void *_buffer /**< */, + uint32_t triangles_len /**< */) +{ + char *xcb_tmp = (char *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + + xcb_block_len += sizeof(xcb_render_triangles_request_t); + xcb_tmp += xcb_block_len; + /* triangles */ + xcb_block_len += triangles_len * sizeof(xcb_render_triangle_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_render_triangle_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -1900,10 +2230,12 @@ xcb_render_triangles_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_render_triangle_t triangles */ xcb_parts[4].iov_base = (char *) triangles; xcb_parts[4].iov_len = triangles_len * sizeof(xcb_render_triangle_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -1960,14 +2292,45 @@ xcb_render_triangles (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_render_triangle_t triangles */ xcb_parts[4].iov_base = (char *) triangles; xcb_parts[4].iov_len = triangles_len * sizeof(xcb_render_triangle_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } +int +xcb_render_tri_strip_sizeof (const void *_buffer /**< */, + uint32_t points_len /**< */) +{ + char *xcb_tmp = (char *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + + xcb_block_len += sizeof(xcb_render_tri_strip_request_t); + xcb_tmp += xcb_block_len; + /* points */ + xcb_block_len += points_len * sizeof(xcb_render_pointfix_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_render_pointfix_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -2020,10 +2383,12 @@ xcb_render_tri_strip_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_render_pointfix_t points */ xcb_parts[4].iov_base = (char *) points; xcb_parts[4].iov_len = points_len * sizeof(xcb_render_pointfix_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -2080,14 +2445,45 @@ xcb_render_tri_strip (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_render_pointfix_t points */ xcb_parts[4].iov_base = (char *) points; xcb_parts[4].iov_len = points_len * sizeof(xcb_render_pointfix_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } +int +xcb_render_tri_fan_sizeof (const void *_buffer /**< */, + uint32_t points_len /**< */) +{ + char *xcb_tmp = (char *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + + xcb_block_len += sizeof(xcb_render_tri_fan_request_t); + xcb_tmp += xcb_block_len; + /* points */ + xcb_block_len += points_len * sizeof(xcb_render_pointfix_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_render_pointfix_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -2140,10 +2536,12 @@ xcb_render_tri_fan_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_render_pointfix_t points */ xcb_parts[4].iov_base = (char *) points; xcb_parts[4].iov_len = points_len * sizeof(xcb_render_pointfix_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -2200,10 +2598,12 @@ xcb_render_tri_fan (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_render_pointfix_t points */ xcb_parts[4].iov_base = (char *) points; xcb_parts[4].iov_len = points_len * sizeof(xcb_render_pointfix_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -2243,6 +2643,7 @@ xcb_render_create_glyph_set_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -2282,6 +2683,7 @@ xcb_render_create_glyph_set (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -2321,6 +2723,7 @@ xcb_render_reference_glyph_set_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -2360,6 +2763,7 @@ xcb_render_reference_glyph_set (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -2396,6 +2800,7 @@ xcb_render_free_glyph_set_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -2432,10 +2837,65 @@ xcb_render_free_glyph_set (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } +int +xcb_render_add_glyphs_sizeof (const void *_buffer /**< */, + uint32_t data_len /**< */) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_render_add_glyphs_request_t *_aux = (xcb_render_add_glyphs_request_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + + xcb_block_len += sizeof(xcb_render_add_glyphs_request_t); + xcb_tmp += xcb_block_len; + /* glyphids */ + xcb_block_len += _aux->glyphs_len * sizeof(uint32_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint32_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* glyphs */ + xcb_block_len += _aux->glyphs_len * sizeof(xcb_render_glyphinfo_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_render_glyphinfo_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* data */ + xcb_block_len += data_len * sizeof(uint8_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint8_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -2479,18 +2939,22 @@ xcb_render_add_glyphs_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* uint32_t glyphids */ xcb_parts[4].iov_base = (char *) glyphids; xcb_parts[4].iov_len = glyphs_len * sizeof(uint32_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + /* xcb_render_glyphinfo_t glyphs */ xcb_parts[6].iov_base = (char *) glyphs; xcb_parts[6].iov_len = glyphs_len * sizeof(xcb_render_glyphinfo_t); xcb_parts[7].iov_base = 0; xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3; + /* uint8_t data */ xcb_parts[8].iov_base = (char *) data; xcb_parts[8].iov_len = data_len * sizeof(uint8_t); xcb_parts[9].iov_base = 0; xcb_parts[9].iov_len = -xcb_parts[8].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -2538,22 +3002,55 @@ xcb_render_add_glyphs (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* uint32_t glyphids */ xcb_parts[4].iov_base = (char *) glyphids; xcb_parts[4].iov_len = glyphs_len * sizeof(uint32_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + /* xcb_render_glyphinfo_t glyphs */ xcb_parts[6].iov_base = (char *) glyphs; xcb_parts[6].iov_len = glyphs_len * sizeof(xcb_render_glyphinfo_t); xcb_parts[7].iov_base = 0; xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3; + /* uint8_t data */ xcb_parts[8].iov_base = (char *) data; xcb_parts[8].iov_len = data_len * sizeof(uint8_t); xcb_parts[9].iov_base = 0; xcb_parts[9].iov_len = -xcb_parts[8].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } +int +xcb_render_free_glyphs_sizeof (const void *_buffer /**< */, + uint32_t glyphs_len /**< */) +{ + char *xcb_tmp = (char *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + + xcb_block_len += sizeof(xcb_render_free_glyphs_request_t); + xcb_tmp += xcb_block_len; + /* glyphs */ + xcb_block_len += glyphs_len * sizeof(xcb_render_glyph_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_render_glyph_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -2590,10 +3087,12 @@ xcb_render_free_glyphs_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_render_glyph_t glyphs */ xcb_parts[4].iov_base = (char *) glyphs; xcb_parts[4].iov_len = glyphs_len * sizeof(xcb_render_glyph_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -2634,14 +3133,45 @@ xcb_render_free_glyphs (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_render_glyph_t glyphs */ xcb_parts[4].iov_base = (char *) glyphs; xcb_parts[4].iov_len = glyphs_len * sizeof(xcb_render_glyph_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } +int +xcb_render_composite_glyphs_8_sizeof (const void *_buffer /**< */, + uint32_t glyphcmds_len /**< */) +{ + char *xcb_tmp = (char *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + + xcb_block_len += sizeof(xcb_render_composite_glyphs_8_request_t); + xcb_tmp += xcb_block_len; + /* glyphcmds */ + xcb_block_len += glyphcmds_len * sizeof(uint8_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint8_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -2697,10 +3227,12 @@ xcb_render_composite_glyphs_8_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* uint8_t glyphcmds */ xcb_parts[4].iov_base = (char *) glyphcmds; xcb_parts[4].iov_len = glyphcmds_len * sizeof(uint8_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -2760,14 +3292,45 @@ xcb_render_composite_glyphs_8 (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* uint8_t glyphcmds */ xcb_parts[4].iov_base = (char *) glyphcmds; xcb_parts[4].iov_len = glyphcmds_len * sizeof(uint8_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } +int +xcb_render_composite_glyphs_16_sizeof (const void *_buffer /**< */, + uint32_t glyphcmds_len /**< */) +{ + char *xcb_tmp = (char *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + + xcb_block_len += sizeof(xcb_render_composite_glyphs_16_request_t); + xcb_tmp += xcb_block_len; + /* glyphcmds */ + xcb_block_len += glyphcmds_len * sizeof(uint8_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint8_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -2823,10 +3386,12 @@ xcb_render_composite_glyphs_16_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* uint8_t glyphcmds */ xcb_parts[4].iov_base = (char *) glyphcmds; xcb_parts[4].iov_len = glyphcmds_len * sizeof(uint8_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -2886,14 +3451,45 @@ xcb_render_composite_glyphs_16 (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* uint8_t glyphcmds */ xcb_parts[4].iov_base = (char *) glyphcmds; xcb_parts[4].iov_len = glyphcmds_len * sizeof(uint8_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } +int +xcb_render_composite_glyphs_32_sizeof (const void *_buffer /**< */, + uint32_t glyphcmds_len /**< */) +{ + char *xcb_tmp = (char *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + + xcb_block_len += sizeof(xcb_render_composite_glyphs_32_request_t); + xcb_tmp += xcb_block_len; + /* glyphcmds */ + xcb_block_len += glyphcmds_len * sizeof(uint8_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint8_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -2949,10 +3545,12 @@ xcb_render_composite_glyphs_32_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* uint8_t glyphcmds */ xcb_parts[4].iov_base = (char *) glyphcmds; xcb_parts[4].iov_len = glyphcmds_len * sizeof(uint8_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -3012,14 +3610,45 @@ xcb_render_composite_glyphs_32 (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* uint8_t glyphcmds */ xcb_parts[4].iov_base = (char *) glyphcmds; xcb_parts[4].iov_len = glyphcmds_len * sizeof(uint8_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } +int +xcb_render_fill_rectangles_sizeof (const void *_buffer /**< */, + uint32_t rects_len /**< */) +{ + char *xcb_tmp = (char *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + + xcb_block_len += sizeof(xcb_render_fill_rectangles_request_t); + xcb_tmp += xcb_block_len; + /* rects */ + xcb_block_len += rects_len * sizeof(xcb_rectangle_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_rectangle_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -3063,10 +3692,12 @@ xcb_render_fill_rectangles_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_rectangle_t rects */ xcb_parts[4].iov_base = (char *) rects; xcb_parts[4].iov_len = rects_len * sizeof(xcb_rectangle_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -3114,10 +3745,12 @@ xcb_render_fill_rectangles (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_rectangle_t rects */ xcb_parts[4].iov_base = (char *) rects; xcb_parts[4].iov_len = rects_len * sizeof(xcb_rectangle_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -3163,6 +3796,7 @@ xcb_render_create_cursor_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -3208,6 +3842,7 @@ xcb_render_create_cursor (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -3285,6 +3920,7 @@ xcb_render_set_picture_transform_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -3324,10 +3960,57 @@ xcb_render_set_picture_transform (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } +int +xcb_render_query_filters_sizeof (const void *_buffer /**< */) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_render_query_filters_reply_t *_aux = (xcb_render_query_filters_reply_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + unsigned int i; + unsigned int xcb_tmp_len; + + xcb_block_len += sizeof(xcb_render_query_filters_reply_t); + xcb_tmp += xcb_block_len; + /* aliases */ + xcb_block_len += _aux->num_aliases * sizeof(uint16_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint16_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* filters */ + for(i=0; i<_aux->num_filters; i++) { + xcb_tmp_len = xcb_str_sizeof(xcb_tmp); + xcb_block_len += xcb_tmp_len; + xcb_tmp += xcb_tmp_len; + } + xcb_align_to = ALIGNOF(xcb_str_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -3360,6 +4043,7 @@ xcb_render_query_filters (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -3396,6 +4080,7 @@ xcb_render_query_filters_unchecked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -3509,6 +4194,48 @@ xcb_render_query_filters_reply (xcb_connection_t *c /**< */, return (xcb_render_query_filters_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); } +int +xcb_render_set_picture_filter_sizeof (const void *_buffer /**< */, + uint32_t values_len /**< */) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_render_set_picture_filter_request_t *_aux = (xcb_render_set_picture_filter_request_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + + xcb_block_len += sizeof(xcb_render_set_picture_filter_request_t); + xcb_tmp += xcb_block_len; + /* filter */ + xcb_block_len += _aux->filter_len * sizeof(char); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(char); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* values */ + xcb_block_len += values_len * sizeof(xcb_render_fixed_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_render_fixed_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -3551,14 +4278,17 @@ xcb_render_set_picture_filter_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* char filter */ xcb_parts[4].iov_base = (char *) filter; xcb_parts[4].iov_len = filter_len * sizeof(char); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + /* xcb_render_fixed_t values */ xcb_parts[6].iov_base = (char *) values; xcb_parts[6].iov_len = values_len * sizeof(xcb_render_fixed_t); xcb_parts[7].iov_base = 0; xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -3605,14 +4335,17 @@ xcb_render_set_picture_filter (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* char filter */ xcb_parts[4].iov_base = (char *) filter; xcb_parts[4].iov_len = filter_len * sizeof(char); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + /* xcb_render_fixed_t values */ xcb_parts[6].iov_base = (char *) values; xcb_parts[6].iov_len = values_len * sizeof(xcb_render_fixed_t); xcb_parts[7].iov_base = 0; xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -3655,6 +4388,35 @@ xcb_render_animcursorelt_end (xcb_render_animcursorelt_iterator_t i /**< */) return ret; } +int +xcb_render_create_anim_cursor_sizeof (const void *_buffer /**< */, + uint32_t cursors_len /**< */) +{ + char *xcb_tmp = (char *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + + xcb_block_len += sizeof(xcb_render_create_anim_cursor_request_t); + xcb_tmp += xcb_block_len; + /* cursors */ + xcb_block_len += cursors_len * sizeof(xcb_render_animcursorelt_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_render_animcursorelt_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -3691,10 +4453,12 @@ xcb_render_create_anim_cursor_checked (xcb_connection_t *c /**< xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_render_animcursorelt_t cursors */ xcb_parts[4].iov_base = (char *) cursors; xcb_parts[4].iov_len = cursors_len * sizeof(xcb_render_animcursorelt_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -3735,10 +4499,12 @@ xcb_render_create_anim_cursor (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_render_animcursorelt_t cursors */ xcb_parts[4].iov_base = (char *) cursors; xcb_parts[4].iov_len = cursors_len * sizeof(xcb_render_animcursorelt_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -3819,6 +4585,35 @@ xcb_render_trap_end (xcb_render_trap_iterator_t i /**< */) return ret; } +int +xcb_render_add_traps_sizeof (const void *_buffer /**< */, + uint32_t traps_len /**< */) +{ + char *xcb_tmp = (char *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + + xcb_block_len += sizeof(xcb_render_add_traps_request_t); + xcb_tmp += xcb_block_len; + /* traps */ + xcb_block_len += traps_len * sizeof(xcb_render_trap_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_render_trap_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -3861,10 +4656,12 @@ xcb_render_add_traps_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_render_trap_t traps */ xcb_parts[4].iov_base = (char *) traps; xcb_parts[4].iov_len = traps_len * sizeof(xcb_render_trap_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -3911,10 +4708,12 @@ xcb_render_add_traps (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_render_trap_t traps */ xcb_parts[4].iov_base = (char *) traps; xcb_parts[4].iov_len = traps_len * sizeof(xcb_render_trap_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -3954,6 +4753,7 @@ xcb_render_create_solid_fill_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -3993,10 +4793,52 @@ xcb_render_create_solid_fill (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } +int +xcb_render_create_linear_gradient_sizeof (const void *_buffer /**< */) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_render_create_linear_gradient_request_t *_aux = (xcb_render_create_linear_gradient_request_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + + xcb_block_len += sizeof(xcb_render_create_linear_gradient_request_t); + xcb_tmp += xcb_block_len; + /* stops */ + xcb_block_len += _aux->num_stops * sizeof(xcb_render_fixed_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_render_fixed_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* colors */ + xcb_block_len += _aux->num_stops * sizeof(xcb_render_color_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_render_color_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -4042,14 +4884,17 @@ xcb_render_create_linear_gradient_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_render_fixed_t stops */ xcb_parts[4].iov_base = (char *) stops; xcb_parts[4].iov_len = num_stops * sizeof(xcb_render_fixed_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + /* xcb_render_color_t colors */ xcb_parts[6].iov_base = (char *) colors; xcb_parts[6].iov_len = num_stops * sizeof(xcb_render_color_t); xcb_parts[7].iov_base = 0; xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -4099,18 +4944,62 @@ xcb_render_create_linear_gradient (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_render_fixed_t stops */ xcb_parts[4].iov_base = (char *) stops; xcb_parts[4].iov_len = num_stops * sizeof(xcb_render_fixed_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + /* xcb_render_color_t colors */ xcb_parts[6].iov_base = (char *) colors; xcb_parts[6].iov_len = num_stops * sizeof(xcb_render_color_t); xcb_parts[7].iov_base = 0; xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } +int +xcb_render_create_radial_gradient_sizeof (const void *_buffer /**< */) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_render_create_radial_gradient_request_t *_aux = (xcb_render_create_radial_gradient_request_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + + xcb_block_len += sizeof(xcb_render_create_radial_gradient_request_t); + xcb_tmp += xcb_block_len; + /* stops */ + xcb_block_len += _aux->num_stops * sizeof(xcb_render_fixed_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_render_fixed_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* colors */ + xcb_block_len += _aux->num_stops * sizeof(xcb_render_color_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_render_color_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -4162,14 +5051,17 @@ xcb_render_create_radial_gradient_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_render_fixed_t stops */ xcb_parts[4].iov_base = (char *) stops; xcb_parts[4].iov_len = num_stops * sizeof(xcb_render_fixed_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + /* xcb_render_color_t colors */ xcb_parts[6].iov_base = (char *) colors; xcb_parts[6].iov_len = num_stops * sizeof(xcb_render_color_t); xcb_parts[7].iov_base = 0; xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -4225,18 +5117,62 @@ xcb_render_create_radial_gradient (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_render_fixed_t stops */ xcb_parts[4].iov_base = (char *) stops; xcb_parts[4].iov_len = num_stops * sizeof(xcb_render_fixed_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + /* xcb_render_color_t colors */ xcb_parts[6].iov_base = (char *) colors; xcb_parts[6].iov_len = num_stops * sizeof(xcb_render_color_t); xcb_parts[7].iov_base = 0; xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } +int +xcb_render_create_conical_gradient_sizeof (const void *_buffer /**< */) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_render_create_conical_gradient_request_t *_aux = (xcb_render_create_conical_gradient_request_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + + xcb_block_len += sizeof(xcb_render_create_conical_gradient_request_t); + xcb_tmp += xcb_block_len; + /* stops */ + xcb_block_len += _aux->num_stops * sizeof(xcb_render_fixed_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_render_fixed_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* colors */ + xcb_block_len += _aux->num_stops * sizeof(xcb_render_color_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_render_color_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -4282,14 +5218,17 @@ xcb_render_create_conical_gradient_checked (xcb_connection_t *c /**< */ xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_render_fixed_t stops */ xcb_parts[4].iov_base = (char *) stops; xcb_parts[4].iov_len = num_stops * sizeof(xcb_render_fixed_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + /* xcb_render_color_t colors */ xcb_parts[6].iov_base = (char *) colors; xcb_parts[6].iov_len = num_stops * sizeof(xcb_render_color_t); xcb_parts[7].iov_base = 0; xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -4339,14 +5278,17 @@ xcb_render_create_conical_gradient (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_render_fixed_t stops */ xcb_parts[4].iov_base = (char *) stops; xcb_parts[4].iov_len = num_stops * sizeof(xcb_render_fixed_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + /* xcb_render_color_t colors */ xcb_parts[6].iov_base = (char *) colors; xcb_parts[6].iov_len = num_stops * sizeof(xcb_render_color_t); xcb_parts[7].iov_base = 0; xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } diff --git a/src/3rdparty/xcb/libxcb/shape.c b/src/3rdparty/xcb/libxcb/shape.c index 948522581e..98621c4983 100644 --- a/src/3rdparty/xcb/libxcb/shape.c +++ b/src/3rdparty/xcb/libxcb/shape.c @@ -3,10 +3,17 @@ * Edit at your peril. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif +#include <stdlib.h> #include <string.h> #include <assert.h> +#include <stddef.h> /* for offsetof() */ #include "xcbext.h" #include "shape.h" + +#define ALIGNOF(type) offsetof(struct { char dummy; type member; }, member) #include "xproto.h" xcb_extension_t xcb_shape_id = { "SHAPE", 0 }; @@ -116,6 +123,7 @@ xcb_shape_query_version (xcb_connection_t *c /**< */) xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -149,6 +157,7 @@ xcb_shape_query_version_unchecked (xcb_connection_t *c /**< */) xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -173,6 +182,35 @@ xcb_shape_query_version_reply (xcb_connection_t *c /**< */, return (xcb_shape_query_version_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); } +int +xcb_shape_rectangles_sizeof (const void *_buffer /**< */, + uint32_t rectangles_len /**< */) +{ + char *xcb_tmp = (char *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + + xcb_block_len += sizeof(xcb_shape_rectangles_request_t); + xcb_tmp += xcb_block_len; + /* rectangles */ + xcb_block_len += rectangles_len * sizeof(xcb_rectangle_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_rectangle_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -225,10 +263,12 @@ xcb_shape_rectangles_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_rectangle_t rectangles */ xcb_parts[4].iov_base = (char *) rectangles; xcb_parts[4].iov_len = rectangles_len * sizeof(xcb_rectangle_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -285,10 +325,12 @@ xcb_shape_rectangles (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_rectangle_t rectangles */ xcb_parts[4].iov_base = (char *) rectangles; xcb_parts[4].iov_len = rectangles_len * sizeof(xcb_rectangle_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -341,6 +383,7 @@ xcb_shape_mask_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -393,6 +436,7 @@ xcb_shape_mask (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -448,6 +492,7 @@ xcb_shape_combine_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -503,6 +548,7 @@ xcb_shape_combine (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -549,6 +595,7 @@ xcb_shape_offset_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -595,6 +642,7 @@ xcb_shape_offset (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -631,6 +679,7 @@ xcb_shape_query_extents (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -667,6 +716,7 @@ xcb_shape_query_extents_unchecked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -727,6 +777,7 @@ xcb_shape_select_input_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -767,6 +818,7 @@ xcb_shape_select_input (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -803,6 +855,7 @@ xcb_shape_input_selected (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -839,6 +892,7 @@ xcb_shape_input_selected_unchecked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -863,6 +917,35 @@ xcb_shape_input_selected_reply (xcb_connection_t *c /**< */, return (xcb_shape_input_selected_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); } +int +xcb_shape_get_rectangles_sizeof (const void *_buffer /**< */) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_shape_get_rectangles_reply_t *_aux = (xcb_shape_get_rectangles_reply_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + + xcb_block_len += sizeof(xcb_shape_get_rectangles_reply_t); + xcb_tmp += xcb_block_len; + /* rectangles */ + xcb_block_len += _aux->rectangles_len * sizeof(xcb_rectangle_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_rectangle_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -899,6 +982,7 @@ xcb_shape_get_rectangles (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -939,6 +1023,7 @@ xcb_shape_get_rectangles_unchecked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } diff --git a/src/3rdparty/xcb/libxcb/shm.c b/src/3rdparty/xcb/libxcb/shm.c index c1637a8654..0a1c238732 100644 --- a/src/3rdparty/xcb/libxcb/shm.c +++ b/src/3rdparty/xcb/libxcb/shm.c @@ -3,10 +3,17 @@ * Edit at your peril. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif +#include <stdlib.h> #include <string.h> #include <assert.h> +#include <stddef.h> /* for offsetof() */ #include "xcbext.h" #include "shm.h" + +#define ALIGNOF(type) offsetof(struct { char dummy; type member; }, member) #include "xproto.h" xcb_extension_t xcb_shm_id = { "MIT-SHM", 0 }; @@ -78,6 +85,7 @@ xcb_shm_query_version (xcb_connection_t *c /**< */) xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -111,6 +119,7 @@ xcb_shm_query_version_unchecked (xcb_connection_t *c /**< */) xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -174,6 +183,7 @@ xcb_shm_attach_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -217,6 +227,7 @@ xcb_shm_attach (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -253,6 +264,7 @@ xcb_shm_detach_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -289,6 +301,7 @@ xcb_shm_detach (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -368,6 +381,7 @@ xcb_shm_put_image_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -447,6 +461,7 @@ xcb_shm_put_image (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -508,6 +523,7 @@ xcb_shm_get_image (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -569,6 +585,7 @@ xcb_shm_get_image_unchecked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -644,6 +661,7 @@ xcb_shm_create_pixmap_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -699,6 +717,7 @@ xcb_shm_create_pixmap (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } diff --git a/src/3rdparty/xcb/libxcb/support_libxcb_versions_where_xcb_sumof_not_available.patch b/src/3rdparty/xcb/libxcb/support_libxcb_versions_where_xcb_sumof_not_available.patch deleted file mode 100644 index a73e633e73..0000000000 --- a/src/3rdparty/xcb/libxcb/support_libxcb_versions_where_xcb_sumof_not_available.patch +++ /dev/null @@ -1,273 +0,0 @@ -diff --git a/src/3rdparty/xcb/libxcb/support_libxcb_versions_where_xcb_sumof_not_available.patch b/src/3rdparty/xcb/libxcb/support_libxcb_versions_where_xcb_sumof_not_available.patch -index f63719d..e69de29 100644 ---- a/src/3rdparty/xcb/libxcb/support_libxcb_versions_where_xcb_sumof_not_available.patch -+++ b/src/3rdparty/xcb/libxcb/support_libxcb_versions_where_xcb_sumof_not_available.patch -@@ -1,134 +0,0 @@ --diff --git a/src/3rdparty/xcb/libxcb/xkb.c b/src/3rdparty/xcb/libxcb/xkb.c --index d55bd76..2e3a24a 100644 ----- a/src/3rdparty/xcb/libxcb/xkb.c --+++ b/src/3rdparty/xcb/libxcb/xkb.c --@@ -18,6 +18,15 @@ -- -- xcb_extension_t xcb_xkb_id = { "XKEYBOARD", 0 }; -- --+int qt_xcb_sumof(uint8_t *list, int len) --+{ --+ int i, s = 0; --+ for(i=0; i<len; i++) { --+ s += *list; --+ list++; --+ } --+ return s; --+} -- -- /***************************************************************************** -- ** --@@ -9025,7 +9034,7 @@ int -- xcb_xkb_get_names_value_list_kt_level_names_length (const xcb_xkb_get_names_reply_t *R /**< */, -- const xcb_xkb_get_names_value_list_t *S /**< */) -- { --- return xcb_sumof(/* valueList */ S->nLevelsPerType, R->nTypes); --+ return (/* valueList */ S->nLevelsPerType, R->nTypes); -- } -- -- --@@ -9043,7 +9052,7 @@ xcb_xkb_get_names_value_list_kt_level_names_end (const xcb_xkb_get_names_reply_t -- const xcb_xkb_get_names_value_list_t *S /**< */) -- { -- xcb_generic_iterator_t i; --- i.data = /* valueList */ S->ktLevelNames + xcb_sumof(/* valueList */ S->nLevelsPerType, R->nTypes); --+ i.data = /* valueList */ S->ktLevelNames + qt_xcb_sumof(/* valueList */ S->nLevelsPerType, R->nTypes); -- i.rem = 0; -- i.index = (char *) i.data - (char *) S; -- return i; --@@ -9508,8 +9517,8 @@ xcb_xkb_get_names_value_list_serialize (void **_ -- xcb_block_len = 0; -- /* ktLevelNames */ -- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->ktLevelNames; --- xcb_block_len += xcb_sumof(_aux->nLevelsPerType, nTypes) * sizeof(xcb_atom_t); --- xcb_parts[xcb_parts_idx].iov_len = xcb_sumof(_aux->nLevelsPerType, nTypes) * sizeof(xcb_atom_t); --+ xcb_block_len += qt_xcb_sumof(_aux->nLevelsPerType, nTypes) * sizeof(xcb_atom_t); --+ xcb_parts[xcb_parts_idx].iov_len = qt_xcb_sumof(_aux->nLevelsPerType, nTypes) * sizeof(xcb_atom_t); -- xcb_parts_idx++; -- xcb_align_to = ALIGNOF(xcb_atom_t); -- } --@@ -9762,7 +9771,7 @@ xcb_xkb_get_names_value_list_unpack (const void *_buffer / -- xcb_block_len = 0; -- /* ktLevelNames */ -- _aux->ktLevelNames = (xcb_atom_t *)xcb_tmp; --- xcb_block_len += xcb_sumof(_aux->nLevelsPerType, nTypes) * sizeof(xcb_atom_t); --+ xcb_block_len += qt_xcb_sumof(_aux->nLevelsPerType, nTypes) * sizeof(xcb_atom_t); -- xcb_tmp += xcb_block_len; -- xcb_align_to = ALIGNOF(xcb_atom_t); -- } --@@ -10139,7 +10148,7 @@ int -- xcb_xkb_set_names_values_kt_level_names_length (const xcb_xkb_set_names_request_t *R /**< */, -- const xcb_xkb_set_names_values_t *S /**< */) -- { --- return xcb_sumof(/* values */ S->nLevelsPerType, R->nKTLevels); --+ return qt_xcb_sumof(/* values */ S->nLevelsPerType, R->nKTLevels); -- } -- -- --@@ -10157,7 +10166,7 @@ xcb_xkb_set_names_values_kt_level_names_end (const xcb_xkb_set_names_request_t * -- const xcb_xkb_set_names_values_t *S /**< */) -- { -- xcb_generic_iterator_t i; --- i.data = /* values */ S->ktLevelNames + xcb_sumof(/* values */ S->nLevelsPerType, R->nKTLevels); --+ i.data = /* values */ S->ktLevelNames + qt_xcb_sumof(/* values */ S->nLevelsPerType, R->nKTLevels); -- i.rem = 0; -- i.index = (char *) i.data - (char *) S; -- return i; --@@ -10607,8 +10616,8 @@ xcb_xkb_set_names_values_serialize (void **_buffer -- xcb_block_len = 0; -- /* ktLevelNames */ -- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->ktLevelNames; --- xcb_block_len += xcb_sumof(_aux->nLevelsPerType, nKTLevels) * sizeof(xcb_atom_t); --- xcb_parts[xcb_parts_idx].iov_len = xcb_sumof(_aux->nLevelsPerType, nKTLevels) * sizeof(xcb_atom_t); --+ xcb_block_len += qt_xcb_sumof(_aux->nLevelsPerType, nKTLevels) * sizeof(xcb_atom_t); --+ xcb_parts[xcb_parts_idx].iov_len = qt_xcb_sumof(_aux->nLevelsPerType, nKTLevels) * sizeof(xcb_atom_t); -- xcb_parts_idx++; -- xcb_align_to = ALIGNOF(xcb_atom_t); -- } --@@ -10849,7 +10858,7 @@ xcb_xkb_set_names_values_unpack (const void *_buffer /**< */, -- xcb_block_len = 0; -- /* ktLevelNames */ -- _aux->ktLevelNames = (xcb_atom_t *)xcb_tmp; --- xcb_block_len += xcb_sumof(_aux->nLevelsPerType, nKTLevels) * sizeof(xcb_atom_t); --+ xcb_block_len += qt_xcb_sumof(_aux->nLevelsPerType, nKTLevels) * sizeof(xcb_atom_t); -- xcb_tmp += xcb_block_len; -- xcb_align_to = ALIGNOF(xcb_atom_t); -- } --@@ -12872,7 +12881,7 @@ int -- xcb_xkb_get_kbd_by_name_replies_key_names_value_list_kt_level_names_length (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */, -- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */) -- { --- return xcb_sumof(/* replies */ S->key_names.valueList.nLevelsPerType, /* replies */ S->key_names.nKTLevels); --+ return qt_xcb_sumof(/* replies */ S->key_names.valueList.nLevelsPerType, /* replies */ S->key_names.nKTLevels); -- } -- -- --@@ -12890,7 +12899,7 @@ xcb_xkb_get_kbd_by_name_replies_key_names_value_list_kt_level_names_end (const x -- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */) -- { -- xcb_generic_iterator_t i; --- i.data = /* replies */ S->key_names.valueList.ktLevelNames + xcb_sumof(/* replies */ S->key_names.valueList.nLevelsPerType, /* replies */ S->key_names.nKTLevels); --+ i.data = /* replies */ S->key_names.valueList.ktLevelNames + qt_xcb_sumof(/* replies */ S->key_names.valueList.nLevelsPerType, /* replies */ S->key_names.nKTLevels); -- i.rem = 0; -- i.index = (char *) i.data - (char *) S; -- return i; --@@ -13340,8 +13349,8 @@ xcb_xkb_get_kbd_by_name_replies_key_names_value_list_serialize (void -- xcb_block_len = 0; -- /* ktLevelNames */ -- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->ktLevelNames; --- xcb_block_len += xcb_sumof(_aux->nLevelsPerType, nKTLevels) * sizeof(xcb_atom_t); --- xcb_parts[xcb_parts_idx].iov_len = xcb_sumof(_aux->nLevelsPerType, nKTLevels) * sizeof(xcb_atom_t); --+ xcb_block_len += qt_xcb_sumof(_aux->nLevelsPerType, nKTLevels) * sizeof(xcb_atom_t); --+ xcb_parts[xcb_parts_idx].iov_len = qt_xcb_sumof(_aux->nLevelsPerType, nKTLevels) * sizeof(xcb_atom_t); -- xcb_parts_idx++; -- xcb_align_to = ALIGNOF(xcb_atom_t); -- } --@@ -13582,7 +13591,7 @@ xcb_xkb_get_kbd_by_name_replies_key_names_value_list_unpack (const void -- xcb_block_len = 0; -- /* ktLevelNames */ -- _aux->ktLevelNames = (xcb_atom_t *)xcb_tmp; --- xcb_block_len += xcb_sumof(_aux->nLevelsPerType, nKTLevels) * sizeof(xcb_atom_t); --+ xcb_block_len += qt_xcb_sumof(_aux->nLevelsPerType, nKTLevels) * sizeof(xcb_atom_t); -- xcb_tmp += xcb_block_len; -- xcb_align_to = ALIGNOF(xcb_atom_t); -- } -diff --git a/src/3rdparty/xcb/libxcb/xkb.c b/src/3rdparty/xcb/libxcb/xkb.c -index d55bd76..ff025f6 100644 ---- a/src/3rdparty/xcb/libxcb/xkb.c -+++ b/src/3rdparty/xcb/libxcb/xkb.c -@@ -18,6 +18,15 @@ - - xcb_extension_t xcb_xkb_id = { "XKEYBOARD", 0 }; - -+int qt_xcb_sumof(uint8_t *list, int len) -+{ -+ int i, s = 0; -+ for(i=0; i<len; i++) { -+ s += *list; -+ list++; -+ } -+ return s; -+} - - /***************************************************************************** - ** -@@ -9025,7 +9034,7 @@ int - xcb_xkb_get_names_value_list_kt_level_names_length (const xcb_xkb_get_names_reply_t *R /**< */, - const xcb_xkb_get_names_value_list_t *S /**< */) - { -- return xcb_sumof(/* valueList */ S->nLevelsPerType, R->nTypes); -+ return qt_xcb_sumof(/* valueList */ S->nLevelsPerType, R->nTypes); - } - - -@@ -9043,7 +9052,7 @@ xcb_xkb_get_names_value_list_kt_level_names_end (const xcb_xkb_get_names_reply_t - const xcb_xkb_get_names_value_list_t *S /**< */) - { - xcb_generic_iterator_t i; -- i.data = /* valueList */ S->ktLevelNames + xcb_sumof(/* valueList */ S->nLevelsPerType, R->nTypes); -+ i.data = /* valueList */ S->ktLevelNames + qt_xcb_sumof(/* valueList */ S->nLevelsPerType, R->nTypes); - i.rem = 0; - i.index = (char *) i.data - (char *) S; - return i; -@@ -9508,8 +9517,8 @@ xcb_xkb_get_names_value_list_serialize (void **_ - xcb_block_len = 0; - /* ktLevelNames */ - xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->ktLevelNames; -- xcb_block_len += xcb_sumof(_aux->nLevelsPerType, nTypes) * sizeof(xcb_atom_t); -- xcb_parts[xcb_parts_idx].iov_len = xcb_sumof(_aux->nLevelsPerType, nTypes) * sizeof(xcb_atom_t); -+ xcb_block_len += qt_xcb_sumof(_aux->nLevelsPerType, nTypes) * sizeof(xcb_atom_t); -+ xcb_parts[xcb_parts_idx].iov_len = qt_xcb_sumof(_aux->nLevelsPerType, nTypes) * sizeof(xcb_atom_t); - xcb_parts_idx++; - xcb_align_to = ALIGNOF(xcb_atom_t); - } -@@ -9762,7 +9771,7 @@ xcb_xkb_get_names_value_list_unpack (const void *_buffer / - xcb_block_len = 0; - /* ktLevelNames */ - _aux->ktLevelNames = (xcb_atom_t *)xcb_tmp; -- xcb_block_len += xcb_sumof(_aux->nLevelsPerType, nTypes) * sizeof(xcb_atom_t); -+ xcb_block_len += qt_xcb_sumof(_aux->nLevelsPerType, nTypes) * sizeof(xcb_atom_t); - xcb_tmp += xcb_block_len; - xcb_align_to = ALIGNOF(xcb_atom_t); - } -@@ -10139,7 +10148,7 @@ int - xcb_xkb_set_names_values_kt_level_names_length (const xcb_xkb_set_names_request_t *R /**< */, - const xcb_xkb_set_names_values_t *S /**< */) - { -- return xcb_sumof(/* values */ S->nLevelsPerType, R->nKTLevels); -+ return qt_xcb_sumof(/* values */ S->nLevelsPerType, R->nKTLevels); - } - - -@@ -10157,7 +10166,7 @@ xcb_xkb_set_names_values_kt_level_names_end (const xcb_xkb_set_names_request_t * - const xcb_xkb_set_names_values_t *S /**< */) - { - xcb_generic_iterator_t i; -- i.data = /* values */ S->ktLevelNames + xcb_sumof(/* values */ S->nLevelsPerType, R->nKTLevels); -+ i.data = /* values */ S->ktLevelNames + qt_xcb_sumof(/* values */ S->nLevelsPerType, R->nKTLevels); - i.rem = 0; - i.index = (char *) i.data - (char *) S; - return i; -@@ -10607,8 +10616,8 @@ xcb_xkb_set_names_values_serialize (void **_buffer - xcb_block_len = 0; - /* ktLevelNames */ - xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->ktLevelNames; -- xcb_block_len += xcb_sumof(_aux->nLevelsPerType, nKTLevels) * sizeof(xcb_atom_t); -- xcb_parts[xcb_parts_idx].iov_len = xcb_sumof(_aux->nLevelsPerType, nKTLevels) * sizeof(xcb_atom_t); -+ xcb_block_len += qt_xcb_sumof(_aux->nLevelsPerType, nKTLevels) * sizeof(xcb_atom_t); -+ xcb_parts[xcb_parts_idx].iov_len = qt_xcb_sumof(_aux->nLevelsPerType, nKTLevels) * sizeof(xcb_atom_t); - xcb_parts_idx++; - xcb_align_to = ALIGNOF(xcb_atom_t); - } -@@ -10849,7 +10858,7 @@ xcb_xkb_set_names_values_unpack (const void *_buffer /**< */, - xcb_block_len = 0; - /* ktLevelNames */ - _aux->ktLevelNames = (xcb_atom_t *)xcb_tmp; -- xcb_block_len += xcb_sumof(_aux->nLevelsPerType, nKTLevels) * sizeof(xcb_atom_t); -+ xcb_block_len += qt_xcb_sumof(_aux->nLevelsPerType, nKTLevels) * sizeof(xcb_atom_t); - xcb_tmp += xcb_block_len; - xcb_align_to = ALIGNOF(xcb_atom_t); - } -@@ -12872,7 +12881,7 @@ int - xcb_xkb_get_kbd_by_name_replies_key_names_value_list_kt_level_names_length (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */, - const xcb_xkb_get_kbd_by_name_replies_t *S /**< */) - { -- return xcb_sumof(/* replies */ S->key_names.valueList.nLevelsPerType, /* replies */ S->key_names.nKTLevels); -+ return qt_xcb_sumof(/* replies */ S->key_names.valueList.nLevelsPerType, /* replies */ S->key_names.nKTLevels); - } - - -@@ -12890,7 +12899,7 @@ xcb_xkb_get_kbd_by_name_replies_key_names_value_list_kt_level_names_end (const x - const xcb_xkb_get_kbd_by_name_replies_t *S /**< */) - { - xcb_generic_iterator_t i; -- i.data = /* replies */ S->key_names.valueList.ktLevelNames + xcb_sumof(/* replies */ S->key_names.valueList.nLevelsPerType, /* replies */ S->key_names.nKTLevels); -+ i.data = /* replies */ S->key_names.valueList.ktLevelNames + qt_xcb_sumof(/* replies */ S->key_names.valueList.nLevelsPerType, /* replies */ S->key_names.nKTLevels); - i.rem = 0; - i.index = (char *) i.data - (char *) S; - return i; -@@ -13340,8 +13349,8 @@ xcb_xkb_get_kbd_by_name_replies_key_names_value_list_serialize (void - xcb_block_len = 0; - /* ktLevelNames */ - xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->ktLevelNames; -- xcb_block_len += xcb_sumof(_aux->nLevelsPerType, nKTLevels) * sizeof(xcb_atom_t); -- xcb_parts[xcb_parts_idx].iov_len = xcb_sumof(_aux->nLevelsPerType, nKTLevels) * sizeof(xcb_atom_t); -+ xcb_block_len += qt_xcb_sumof(_aux->nLevelsPerType, nKTLevels) * sizeof(xcb_atom_t); -+ xcb_parts[xcb_parts_idx].iov_len = qt_xcb_sumof(_aux->nLevelsPerType, nKTLevels) * sizeof(xcb_atom_t); - xcb_parts_idx++; - xcb_align_to = ALIGNOF(xcb_atom_t); - } -@@ -13582,7 +13591,7 @@ xcb_xkb_get_kbd_by_name_replies_key_names_value_list_unpack (const void - xcb_block_len = 0; - /* ktLevelNames */ - _aux->ktLevelNames = (xcb_atom_t *)xcb_tmp; -- xcb_block_len += xcb_sumof(_aux->nLevelsPerType, nKTLevels) * sizeof(xcb_atom_t); -+ xcb_block_len += qt_xcb_sumof(_aux->nLevelsPerType, nKTLevels) * sizeof(xcb_atom_t); - xcb_tmp += xcb_block_len; - xcb_align_to = ALIGNOF(xcb_atom_t); - } diff --git a/src/3rdparty/xcb/libxcb/sync.c b/src/3rdparty/xcb/libxcb/sync.c index 408a263d2b..1f352756d8 100644 --- a/src/3rdparty/xcb/libxcb/sync.c +++ b/src/3rdparty/xcb/libxcb/sync.c @@ -3,10 +3,17 @@ * Edit at your peril. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif +#include <stdlib.h> #include <string.h> #include <assert.h> +#include <stddef.h> /* for offsetof() */ #include "xcbext.h" #include "sync.h" + +#define ALIGNOF(type) offsetof(struct { char dummy; type member; }, member) #include "xproto.h" xcb_extension_t xcb_sync_id = { "SYNC", 0 }; @@ -90,6 +97,44 @@ xcb_sync_counter_end (xcb_sync_counter_iterator_t i /**< */) /***************************************************************************** ** + ** void xcb_sync_fence_next + ** + ** @param xcb_sync_fence_iterator_t *i + ** @returns void + ** + *****************************************************************************/ + +void +xcb_sync_fence_next (xcb_sync_fence_iterator_t *i /**< */) +{ + --i->rem; + ++i->data; + i->index += sizeof(xcb_sync_fence_t); +} + + +/***************************************************************************** + ** + ** xcb_generic_iterator_t xcb_sync_fence_end + ** + ** @param xcb_sync_fence_iterator_t i + ** @returns xcb_generic_iterator_t + ** + *****************************************************************************/ + +xcb_generic_iterator_t +xcb_sync_fence_end (xcb_sync_fence_iterator_t i /**< */) +{ + xcb_generic_iterator_t ret; + ret.data = i.data + i.rem; + ret.index = i.index + ((char *) ret.data - (char *) i.data); + ret.rem = 0; + return ret; +} + + +/***************************************************************************** + ** ** void xcb_sync_int64_next ** ** @param xcb_sync_int64_iterator_t *i @@ -125,6 +170,35 @@ xcb_sync_int64_end (xcb_sync_int64_iterator_t i /**< */) return ret; } +int +xcb_sync_systemcounter_sizeof (const void *_buffer /**< */) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_sync_systemcounter_t *_aux = (xcb_sync_systemcounter_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + + xcb_block_len += sizeof(xcb_sync_systemcounter_t); + xcb_tmp += xcb_block_len; + /* name */ + xcb_block_len += _aux->name_len * sizeof(char); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(char); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -191,10 +265,11 @@ void xcb_sync_systemcounter_next (xcb_sync_systemcounter_iterator_t *i /**< */) { xcb_sync_systemcounter_t *R = i->data; - xcb_generic_iterator_t child = xcb_sync_systemcounter_name_end(R); + xcb_generic_iterator_t child; + child.data = (xcb_sync_systemcounter_t *)(((char *)R) + xcb_sync_systemcounter_sizeof(R)); + i->index = (char *) child.data - (char *) i->data; --i->rem; i->data = (xcb_sync_systemcounter_t *) child.data; - i->index = child.index; } @@ -330,6 +405,7 @@ xcb_sync_initialize (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -369,6 +445,7 @@ xcb_sync_initialize_unchecked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -393,6 +470,40 @@ xcb_sync_initialize_reply (xcb_connection_t *c /**< */, return (xcb_sync_initialize_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); } +int +xcb_sync_list_system_counters_sizeof (const void *_buffer /**< */) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_sync_list_system_counters_reply_t *_aux = (xcb_sync_list_system_counters_reply_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + unsigned int i; + unsigned int xcb_tmp_len; + + xcb_block_len += sizeof(xcb_sync_list_system_counters_reply_t); + xcb_tmp += xcb_block_len; + /* counters */ + for(i=0; i<_aux->counters_len; i++) { + xcb_tmp_len = xcb_sync_systemcounter_sizeof(xcb_tmp); + xcb_block_len += xcb_tmp_len; + xcb_tmp += xcb_tmp_len; + } + xcb_align_to = ALIGNOF(xcb_sync_systemcounter_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -422,6 +533,7 @@ xcb_sync_list_system_counters (xcb_connection_t *c /**< */) xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -455,6 +567,7 @@ xcb_sync_list_system_counters_unchecked (xcb_connection_t *c /**< */) xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -550,6 +663,7 @@ xcb_sync_create_counter_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -589,6 +703,7 @@ xcb_sync_create_counter (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -625,6 +740,7 @@ xcb_sync_destroy_counter_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -661,6 +777,7 @@ xcb_sync_destroy_counter (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -697,6 +814,7 @@ xcb_sync_query_counter (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -733,6 +851,7 @@ xcb_sync_query_counter_unchecked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -757,6 +876,35 @@ xcb_sync_query_counter_reply (xcb_connection_t *c /**< */, return (xcb_sync_query_counter_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); } +int +xcb_sync_await_sizeof (const void *_buffer /**< */, + uint32_t wait_list_len /**< */) +{ + char *xcb_tmp = (char *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + + xcb_block_len += sizeof(xcb_sync_await_request_t); + xcb_tmp += xcb_block_len; + /* wait_list */ + xcb_block_len += wait_list_len * sizeof(xcb_sync_waitcondition_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_sync_waitcondition_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -790,10 +938,12 @@ xcb_sync_await_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_sync_waitcondition_t wait_list */ xcb_parts[4].iov_base = (char *) wait_list; xcb_parts[4].iov_len = wait_list_len * sizeof(xcb_sync_waitcondition_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -831,10 +981,12 @@ xcb_sync_await (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_sync_waitcondition_t wait_list */ xcb_parts[4].iov_base = (char *) wait_list; xcb_parts[4].iov_len = wait_list_len * sizeof(xcb_sync_waitcondition_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -874,6 +1026,7 @@ xcb_sync_change_counter_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -913,6 +1066,7 @@ xcb_sync_change_counter (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -952,6 +1106,7 @@ xcb_sync_set_counter_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -991,10 +1146,40 @@ xcb_sync_set_counter (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } +int +xcb_sync_create_alarm_sizeof (const void *_buffer /**< */) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_sync_create_alarm_request_t *_aux = (xcb_sync_create_alarm_request_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + + xcb_block_len += sizeof(xcb_sync_create_alarm_request_t); + xcb_tmp += xcb_block_len; + /* value_list */ + xcb_block_len += xcb_popcount(_aux->value_mask) * sizeof(uint32_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint32_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -1032,10 +1217,12 @@ xcb_sync_create_alarm_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* uint32_t value_list */ xcb_parts[4].iov_base = (char *) value_list; xcb_parts[4].iov_len = xcb_popcount(value_mask) * sizeof(uint32_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -1077,14 +1264,45 @@ xcb_sync_create_alarm (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* uint32_t value_list */ xcb_parts[4].iov_base = (char *) value_list; xcb_parts[4].iov_len = xcb_popcount(value_mask) * sizeof(uint32_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } +int +xcb_sync_change_alarm_sizeof (const void *_buffer /**< */) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_sync_change_alarm_request_t *_aux = (xcb_sync_change_alarm_request_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + + xcb_block_len += sizeof(xcb_sync_change_alarm_request_t); + xcb_tmp += xcb_block_len; + /* value_list */ + xcb_block_len += xcb_popcount(_aux->value_mask) * sizeof(uint32_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint32_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -1122,10 +1340,12 @@ xcb_sync_change_alarm_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* uint32_t value_list */ xcb_parts[4].iov_base = (char *) value_list; xcb_parts[4].iov_len = xcb_popcount(value_mask) * sizeof(uint32_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -1167,10 +1387,12 @@ xcb_sync_change_alarm (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* uint32_t value_list */ xcb_parts[4].iov_base = (char *) value_list; xcb_parts[4].iov_len = xcb_popcount(value_mask) * sizeof(uint32_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -1207,6 +1429,7 @@ xcb_sync_destroy_alarm_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -1243,6 +1466,7 @@ xcb_sync_destroy_alarm (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -1279,6 +1503,7 @@ xcb_sync_query_alarm (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -1315,6 +1540,7 @@ xcb_sync_query_alarm_unchecked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -1374,6 +1600,7 @@ xcb_sync_set_priority_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -1413,6 +1640,7 @@ xcb_sync_set_priority (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -1449,6 +1677,7 @@ xcb_sync_get_priority (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -1485,6 +1714,7 @@ xcb_sync_get_priority_unchecked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -1509,3 +1739,520 @@ xcb_sync_get_priority_reply (xcb_connection_t *c /**< */, return (xcb_sync_get_priority_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); } + +/***************************************************************************** + ** + ** xcb_void_cookie_t xcb_sync_create_fence_checked + ** + ** @param xcb_connection_t *c + ** @param xcb_drawable_t drawable + ** @param xcb_sync_fence_t fence + ** @param uint8_t initially_triggered + ** @returns xcb_void_cookie_t + ** + *****************************************************************************/ + +xcb_void_cookie_t +xcb_sync_create_fence_checked (xcb_connection_t *c /**< */, + xcb_drawable_t drawable /**< */, + xcb_sync_fence_t fence /**< */, + uint8_t initially_triggered /**< */) +{ + static const xcb_protocol_request_t xcb_req = { + /* count */ 2, + /* ext */ &xcb_sync_id, + /* opcode */ XCB_SYNC_CREATE_FENCE, + /* isvoid */ 1 + }; + + struct iovec xcb_parts[4]; + xcb_void_cookie_t xcb_ret; + xcb_sync_create_fence_request_t xcb_out; + + xcb_out.drawable = drawable; + xcb_out.fence = fence; + xcb_out.initially_triggered = initially_triggered; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + + +/***************************************************************************** + ** + ** xcb_void_cookie_t xcb_sync_create_fence + ** + ** @param xcb_connection_t *c + ** @param xcb_drawable_t drawable + ** @param xcb_sync_fence_t fence + ** @param uint8_t initially_triggered + ** @returns xcb_void_cookie_t + ** + *****************************************************************************/ + +xcb_void_cookie_t +xcb_sync_create_fence (xcb_connection_t *c /**< */, + xcb_drawable_t drawable /**< */, + xcb_sync_fence_t fence /**< */, + uint8_t initially_triggered /**< */) +{ + static const xcb_protocol_request_t xcb_req = { + /* count */ 2, + /* ext */ &xcb_sync_id, + /* opcode */ XCB_SYNC_CREATE_FENCE, + /* isvoid */ 1 + }; + + struct iovec xcb_parts[4]; + xcb_void_cookie_t xcb_ret; + xcb_sync_create_fence_request_t xcb_out; + + xcb_out.drawable = drawable; + xcb_out.fence = fence; + xcb_out.initially_triggered = initially_triggered; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + + +/***************************************************************************** + ** + ** xcb_void_cookie_t xcb_sync_trigger_fence_checked + ** + ** @param xcb_connection_t *c + ** @param xcb_sync_fence_t fence + ** @returns xcb_void_cookie_t + ** + *****************************************************************************/ + +xcb_void_cookie_t +xcb_sync_trigger_fence_checked (xcb_connection_t *c /**< */, + xcb_sync_fence_t fence /**< */) +{ + static const xcb_protocol_request_t xcb_req = { + /* count */ 2, + /* ext */ &xcb_sync_id, + /* opcode */ XCB_SYNC_TRIGGER_FENCE, + /* isvoid */ 1 + }; + + struct iovec xcb_parts[4]; + xcb_void_cookie_t xcb_ret; + xcb_sync_trigger_fence_request_t xcb_out; + + xcb_out.fence = fence; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + + +/***************************************************************************** + ** + ** xcb_void_cookie_t xcb_sync_trigger_fence + ** + ** @param xcb_connection_t *c + ** @param xcb_sync_fence_t fence + ** @returns xcb_void_cookie_t + ** + *****************************************************************************/ + +xcb_void_cookie_t +xcb_sync_trigger_fence (xcb_connection_t *c /**< */, + xcb_sync_fence_t fence /**< */) +{ + static const xcb_protocol_request_t xcb_req = { + /* count */ 2, + /* ext */ &xcb_sync_id, + /* opcode */ XCB_SYNC_TRIGGER_FENCE, + /* isvoid */ 1 + }; + + struct iovec xcb_parts[4]; + xcb_void_cookie_t xcb_ret; + xcb_sync_trigger_fence_request_t xcb_out; + + xcb_out.fence = fence; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + + +/***************************************************************************** + ** + ** xcb_void_cookie_t xcb_sync_reset_fence_checked + ** + ** @param xcb_connection_t *c + ** @param xcb_sync_fence_t fence + ** @returns xcb_void_cookie_t + ** + *****************************************************************************/ + +xcb_void_cookie_t +xcb_sync_reset_fence_checked (xcb_connection_t *c /**< */, + xcb_sync_fence_t fence /**< */) +{ + static const xcb_protocol_request_t xcb_req = { + /* count */ 2, + /* ext */ &xcb_sync_id, + /* opcode */ XCB_SYNC_RESET_FENCE, + /* isvoid */ 1 + }; + + struct iovec xcb_parts[4]; + xcb_void_cookie_t xcb_ret; + xcb_sync_reset_fence_request_t xcb_out; + + xcb_out.fence = fence; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + + +/***************************************************************************** + ** + ** xcb_void_cookie_t xcb_sync_reset_fence + ** + ** @param xcb_connection_t *c + ** @param xcb_sync_fence_t fence + ** @returns xcb_void_cookie_t + ** + *****************************************************************************/ + +xcb_void_cookie_t +xcb_sync_reset_fence (xcb_connection_t *c /**< */, + xcb_sync_fence_t fence /**< */) +{ + static const xcb_protocol_request_t xcb_req = { + /* count */ 2, + /* ext */ &xcb_sync_id, + /* opcode */ XCB_SYNC_RESET_FENCE, + /* isvoid */ 1 + }; + + struct iovec xcb_parts[4]; + xcb_void_cookie_t xcb_ret; + xcb_sync_reset_fence_request_t xcb_out; + + xcb_out.fence = fence; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + + +/***************************************************************************** + ** + ** xcb_void_cookie_t xcb_sync_destroy_fence_checked + ** + ** @param xcb_connection_t *c + ** @param xcb_sync_fence_t fence + ** @returns xcb_void_cookie_t + ** + *****************************************************************************/ + +xcb_void_cookie_t +xcb_sync_destroy_fence_checked (xcb_connection_t *c /**< */, + xcb_sync_fence_t fence /**< */) +{ + static const xcb_protocol_request_t xcb_req = { + /* count */ 2, + /* ext */ &xcb_sync_id, + /* opcode */ XCB_SYNC_DESTROY_FENCE, + /* isvoid */ 1 + }; + + struct iovec xcb_parts[4]; + xcb_void_cookie_t xcb_ret; + xcb_sync_destroy_fence_request_t xcb_out; + + xcb_out.fence = fence; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + + +/***************************************************************************** + ** + ** xcb_void_cookie_t xcb_sync_destroy_fence + ** + ** @param xcb_connection_t *c + ** @param xcb_sync_fence_t fence + ** @returns xcb_void_cookie_t + ** + *****************************************************************************/ + +xcb_void_cookie_t +xcb_sync_destroy_fence (xcb_connection_t *c /**< */, + xcb_sync_fence_t fence /**< */) +{ + static const xcb_protocol_request_t xcb_req = { + /* count */ 2, + /* ext */ &xcb_sync_id, + /* opcode */ XCB_SYNC_DESTROY_FENCE, + /* isvoid */ 1 + }; + + struct iovec xcb_parts[4]; + xcb_void_cookie_t xcb_ret; + xcb_sync_destroy_fence_request_t xcb_out; + + xcb_out.fence = fence; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + + +/***************************************************************************** + ** + ** xcb_sync_query_fence_cookie_t xcb_sync_query_fence + ** + ** @param xcb_connection_t *c + ** @param xcb_sync_fence_t fence + ** @returns xcb_sync_query_fence_cookie_t + ** + *****************************************************************************/ + +xcb_sync_query_fence_cookie_t +xcb_sync_query_fence (xcb_connection_t *c /**< */, + xcb_sync_fence_t fence /**< */) +{ + static const xcb_protocol_request_t xcb_req = { + /* count */ 2, + /* ext */ &xcb_sync_id, + /* opcode */ XCB_SYNC_QUERY_FENCE, + /* isvoid */ 0 + }; + + struct iovec xcb_parts[4]; + xcb_sync_query_fence_cookie_t xcb_ret; + xcb_sync_query_fence_request_t xcb_out; + + xcb_out.fence = fence; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + + +/***************************************************************************** + ** + ** xcb_sync_query_fence_cookie_t xcb_sync_query_fence_unchecked + ** + ** @param xcb_connection_t *c + ** @param xcb_sync_fence_t fence + ** @returns xcb_sync_query_fence_cookie_t + ** + *****************************************************************************/ + +xcb_sync_query_fence_cookie_t +xcb_sync_query_fence_unchecked (xcb_connection_t *c /**< */, + xcb_sync_fence_t fence /**< */) +{ + static const xcb_protocol_request_t xcb_req = { + /* count */ 2, + /* ext */ &xcb_sync_id, + /* opcode */ XCB_SYNC_QUERY_FENCE, + /* isvoid */ 0 + }; + + struct iovec xcb_parts[4]; + xcb_sync_query_fence_cookie_t xcb_ret; + xcb_sync_query_fence_request_t xcb_out; + + xcb_out.fence = fence; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + + +/***************************************************************************** + ** + ** xcb_sync_query_fence_reply_t * xcb_sync_query_fence_reply + ** + ** @param xcb_connection_t *c + ** @param xcb_sync_query_fence_cookie_t cookie + ** @param xcb_generic_error_t **e + ** @returns xcb_sync_query_fence_reply_t * + ** + *****************************************************************************/ + +xcb_sync_query_fence_reply_t * +xcb_sync_query_fence_reply (xcb_connection_t *c /**< */, + xcb_sync_query_fence_cookie_t cookie /**< */, + xcb_generic_error_t **e /**< */) +{ + return (xcb_sync_query_fence_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); +} + +int +xcb_sync_await_fence_sizeof (const void *_buffer /**< */, + uint32_t fence_list_len /**< */) +{ + char *xcb_tmp = (char *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + + xcb_block_len += sizeof(xcb_sync_await_fence_request_t); + xcb_tmp += xcb_block_len; + /* fence_list */ + xcb_block_len += fence_list_len * sizeof(xcb_sync_fence_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_sync_fence_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + + +/***************************************************************************** + ** + ** xcb_void_cookie_t xcb_sync_await_fence_checked + ** + ** @param xcb_connection_t *c + ** @param uint32_t fence_list_len + ** @param const xcb_sync_fence_t *fence_list + ** @returns xcb_void_cookie_t + ** + *****************************************************************************/ + +xcb_void_cookie_t +xcb_sync_await_fence_checked (xcb_connection_t *c /**< */, + uint32_t fence_list_len /**< */, + const xcb_sync_fence_t *fence_list /**< */) +{ + static const xcb_protocol_request_t xcb_req = { + /* count */ 4, + /* ext */ &xcb_sync_id, + /* opcode */ XCB_SYNC_AWAIT_FENCE, + /* isvoid */ 1 + }; + + struct iovec xcb_parts[6]; + xcb_void_cookie_t xcb_ret; + xcb_sync_await_fence_request_t xcb_out; + + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_sync_fence_t fence_list */ + xcb_parts[4].iov_base = (char *) fence_list; + xcb_parts[4].iov_len = fence_list_len * sizeof(xcb_sync_fence_t); + xcb_parts[5].iov_base = 0; + xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + + +/***************************************************************************** + ** + ** xcb_void_cookie_t xcb_sync_await_fence + ** + ** @param xcb_connection_t *c + ** @param uint32_t fence_list_len + ** @param const xcb_sync_fence_t *fence_list + ** @returns xcb_void_cookie_t + ** + *****************************************************************************/ + +xcb_void_cookie_t +xcb_sync_await_fence (xcb_connection_t *c /**< */, + uint32_t fence_list_len /**< */, + const xcb_sync_fence_t *fence_list /**< */) +{ + static const xcb_protocol_request_t xcb_req = { + /* count */ 4, + /* ext */ &xcb_sync_id, + /* opcode */ XCB_SYNC_AWAIT_FENCE, + /* isvoid */ 1 + }; + + struct iovec xcb_parts[6]; + xcb_void_cookie_t xcb_ret; + xcb_sync_await_fence_request_t xcb_out; + + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_sync_fence_t fence_list */ + xcb_parts[4].iov_base = (char *) fence_list; + xcb_parts[4].iov_len = fence_list_len * sizeof(xcb_sync_fence_t); + xcb_parts[5].iov_base = 0; + xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + diff --git a/src/3rdparty/xcb/libxcb/xfixes.c b/src/3rdparty/xcb/libxcb/xfixes.c index 541918ce16..4c0dc84b64 100644 --- a/src/3rdparty/xcb/libxcb/xfixes.c +++ b/src/3rdparty/xcb/libxcb/xfixes.c @@ -3,10 +3,17 @@ * Edit at your peril. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif +#include <stdlib.h> #include <string.h> #include <assert.h> +#include <stddef.h> /* for offsetof() */ #include "xcbext.h" #include "xfixes.h" + +#define ALIGNOF(type) offsetof(struct { char dummy; type member; }, member) #include "xproto.h" #include "render.h" #include "shape.h" @@ -48,6 +55,7 @@ xcb_xfixes_query_version (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -87,6 +95,7 @@ xcb_xfixes_query_version_unchecked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -153,6 +162,7 @@ xcb_xfixes_change_save_set_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -199,6 +209,7 @@ xcb_xfixes_change_save_set (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -241,6 +252,7 @@ xcb_xfixes_select_selection_input_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -283,6 +295,7 @@ xcb_xfixes_select_selection_input (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -322,6 +335,7 @@ xcb_xfixes_select_cursor_input_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -361,10 +375,40 @@ xcb_xfixes_select_cursor_input (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } +int +xcb_xfixes_get_cursor_image_sizeof (const void *_buffer /**< */) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_xfixes_get_cursor_image_reply_t *_aux = (xcb_xfixes_get_cursor_image_reply_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + + xcb_block_len += sizeof(xcb_xfixes_get_cursor_image_reply_t); + xcb_tmp += xcb_block_len; + /* cursor_image */ + xcb_block_len += (_aux->width * _aux->height) * sizeof(uint32_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint32_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -394,6 +438,7 @@ xcb_xfixes_get_cursor_image (xcb_connection_t *c /**< */) xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -427,6 +472,7 @@ xcb_xfixes_get_cursor_image_unchecked (xcb_connection_t *c /**< */) xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -541,6 +587,35 @@ xcb_xfixes_region_end (xcb_xfixes_region_iterator_t i /**< */) return ret; } +int +xcb_xfixes_create_region_sizeof (const void *_buffer /**< */, + uint32_t rectangles_len /**< */) +{ + char *xcb_tmp = (char *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + + xcb_block_len += sizeof(xcb_xfixes_create_region_request_t); + xcb_tmp += xcb_block_len; + /* rectangles */ + xcb_block_len += rectangles_len * sizeof(xcb_rectangle_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_rectangle_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -577,10 +652,12 @@ xcb_xfixes_create_region_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_rectangle_t rectangles */ xcb_parts[4].iov_base = (char *) rectangles; xcb_parts[4].iov_len = rectangles_len * sizeof(xcb_rectangle_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -621,10 +698,12 @@ xcb_xfixes_create_region (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_rectangle_t rectangles */ xcb_parts[4].iov_base = (char *) rectangles; xcb_parts[4].iov_len = rectangles_len * sizeof(xcb_rectangle_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -664,6 +743,7 @@ xcb_xfixes_create_region_from_bitmap_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -703,6 +783,7 @@ xcb_xfixes_create_region_from_bitmap (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -746,6 +827,7 @@ xcb_xfixes_create_region_from_window_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -789,6 +871,7 @@ xcb_xfixes_create_region_from_window (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -828,6 +911,7 @@ xcb_xfixes_create_region_from_gc_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -867,6 +951,7 @@ xcb_xfixes_create_region_from_gc (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -906,6 +991,7 @@ xcb_xfixes_create_region_from_picture_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -945,6 +1031,7 @@ xcb_xfixes_create_region_from_picture (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -981,6 +1068,7 @@ xcb_xfixes_destroy_region_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -1017,10 +1105,40 @@ xcb_xfixes_destroy_region (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } +int +xcb_xfixes_set_region_sizeof (const void *_buffer /**< */, + uint32_t rectangles_len /**< */) +{ + char *xcb_tmp = (char *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + + xcb_block_len += sizeof(xcb_xfixes_set_region_request_t); + xcb_tmp += xcb_block_len; + /* rectangles */ + xcb_block_len += rectangles_len * sizeof(xcb_rectangle_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_rectangle_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -1057,10 +1175,12 @@ xcb_xfixes_set_region_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_rectangle_t rectangles */ xcb_parts[4].iov_base = (char *) rectangles; xcb_parts[4].iov_len = rectangles_len * sizeof(xcb_rectangle_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -1101,10 +1221,12 @@ xcb_xfixes_set_region (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_rectangle_t rectangles */ xcb_parts[4].iov_base = (char *) rectangles; xcb_parts[4].iov_len = rectangles_len * sizeof(xcb_rectangle_t); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -1144,6 +1266,7 @@ xcb_xfixes_copy_region_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -1183,6 +1306,7 @@ xcb_xfixes_copy_region (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -1225,6 +1349,7 @@ xcb_xfixes_union_region_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -1267,6 +1392,7 @@ xcb_xfixes_union_region (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -1309,6 +1435,7 @@ xcb_xfixes_intersect_region_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -1351,6 +1478,7 @@ xcb_xfixes_intersect_region (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -1393,6 +1521,7 @@ xcb_xfixes_subtract_region_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -1435,6 +1564,7 @@ xcb_xfixes_subtract_region (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -1477,6 +1607,7 @@ xcb_xfixes_invert_region_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -1519,6 +1650,7 @@ xcb_xfixes_invert_region (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -1561,6 +1693,7 @@ xcb_xfixes_translate_region_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -1603,6 +1736,7 @@ xcb_xfixes_translate_region (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -1642,6 +1776,7 @@ xcb_xfixes_region_extents_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -1681,10 +1816,40 @@ xcb_xfixes_region_extents (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } +int +xcb_xfixes_fetch_region_sizeof (const void *_buffer /**< */) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_xfixes_fetch_region_reply_t *_aux = (xcb_xfixes_fetch_region_reply_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + + xcb_block_len += sizeof(xcb_xfixes_fetch_region_reply_t); + xcb_tmp += xcb_block_len; + /* rectangles */ + xcb_block_len += (_aux->length / 2) * sizeof(xcb_rectangle_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_rectangle_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -1717,6 +1882,7 @@ xcb_xfixes_fetch_region (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -1753,6 +1919,7 @@ xcb_xfixes_fetch_region_unchecked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -1870,6 +2037,7 @@ xcb_xfixes_set_gc_clip_region_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -1915,6 +2083,7 @@ xcb_xfixes_set_gc_clip_region (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -1964,6 +2133,7 @@ xcb_xfixes_set_window_shape_region_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -2013,6 +2183,7 @@ xcb_xfixes_set_window_shape_region (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -2058,6 +2229,7 @@ xcb_xfixes_set_picture_clip_region_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -2103,10 +2275,40 @@ xcb_xfixes_set_picture_clip_region (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } +int +xcb_xfixes_set_cursor_name_sizeof (const void *_buffer /**< */) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_xfixes_set_cursor_name_request_t *_aux = (xcb_xfixes_set_cursor_name_request_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + + xcb_block_len += sizeof(xcb_xfixes_set_cursor_name_request_t); + xcb_tmp += xcb_block_len; + /* name */ + xcb_block_len += _aux->nbytes * sizeof(char); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(char); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -2145,10 +2347,12 @@ xcb_xfixes_set_cursor_name_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* char name */ xcb_parts[4].iov_base = (char *) name; xcb_parts[4].iov_len = nbytes * sizeof(char); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -2191,14 +2395,45 @@ xcb_xfixes_set_cursor_name (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* char name */ xcb_parts[4].iov_base = (char *) name; xcb_parts[4].iov_len = nbytes * sizeof(char); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } +int +xcb_xfixes_get_cursor_name_sizeof (const void *_buffer /**< */) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_xfixes_get_cursor_name_reply_t *_aux = (xcb_xfixes_get_cursor_name_reply_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + + xcb_block_len += sizeof(xcb_xfixes_get_cursor_name_reply_t); + xcb_tmp += xcb_block_len; + /* name */ + xcb_block_len += _aux->nbytes * sizeof(char); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(char); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -2231,6 +2466,7 @@ xcb_xfixes_get_cursor_name (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -2267,6 +2503,7 @@ xcb_xfixes_get_cursor_name_unchecked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -2343,6 +2580,47 @@ xcb_xfixes_get_cursor_name_reply (xcb_connection_t *c /**< return (xcb_xfixes_get_cursor_name_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); } +int +xcb_xfixes_get_cursor_image_and_name_sizeof (const void *_buffer /**< */) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_xfixes_get_cursor_image_and_name_reply_t *_aux = (xcb_xfixes_get_cursor_image_and_name_reply_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + + xcb_block_len += sizeof(xcb_xfixes_get_cursor_image_and_name_reply_t); + xcb_tmp += xcb_block_len; + /* name */ + xcb_block_len += _aux->nbytes * sizeof(char); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(char); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* cursor_image */ + xcb_block_len += (_aux->width * _aux->height) * sizeof(uint32_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint32_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -2372,6 +2650,7 @@ xcb_xfixes_get_cursor_image_and_name (xcb_connection_t *c /**< */) xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -2405,6 +2684,7 @@ xcb_xfixes_get_cursor_image_and_name_unchecked (xcb_connection_t *c /**< */) xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -2570,6 +2850,7 @@ xcb_xfixes_change_cursor_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -2609,10 +2890,40 @@ xcb_xfixes_change_cursor (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } +int +xcb_xfixes_change_cursor_by_name_sizeof (const void *_buffer /**< */) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_xfixes_change_cursor_by_name_request_t *_aux = (xcb_xfixes_change_cursor_by_name_request_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + + xcb_block_len += sizeof(xcb_xfixes_change_cursor_by_name_request_t); + xcb_tmp += xcb_block_len; + /* name */ + xcb_block_len += _aux->nbytes * sizeof(char); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(char); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** @@ -2651,10 +2962,12 @@ xcb_xfixes_change_cursor_by_name_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* char name */ xcb_parts[4].iov_base = (char *) name; xcb_parts[4].iov_len = nbytes * sizeof(char); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -2697,10 +3010,12 @@ xcb_xfixes_change_cursor_by_name (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* char name */ xcb_parts[4].iov_base = (char *) name; xcb_parts[4].iov_len = nbytes * sizeof(char); xcb_parts[5].iov_base = 0; xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -2752,6 +3067,7 @@ xcb_xfixes_expand_region_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -2803,6 +3119,7 @@ xcb_xfixes_expand_region (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -2839,6 +3156,7 @@ xcb_xfixes_hide_cursor_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -2875,6 +3193,7 @@ xcb_xfixes_hide_cursor (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -2911,6 +3230,7 @@ xcb_xfixes_show_cursor_checked (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -2947,6 +3267,7 @@ xcb_xfixes_show_cursor (xcb_connection_t *c /**< */, xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } diff --git a/src/3rdparty/xcb/libxcb/xinerama.c b/src/3rdparty/xcb/libxcb/xinerama.c index 05b6b73707..e660be267b 100644 --- a/src/3rdparty/xcb/libxcb/xinerama.c +++ b/src/3rdparty/xcb/libxcb/xinerama.c @@ -3,10 +3,17 @@ * Edit at your peril. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif +#include <stdlib.h> #include <string.h> #include <assert.h> +#include <stddef.h> /* for offsetof() */ #include "xcbext.h" #include "xinerama.h" + +#define ALIGNOF(type) offsetof(struct { char dummy; type member; }, member) #include "xproto.h" xcb_extension_t xcb_xinerama_id = { "XINERAMA", 0 }; @@ -15,12 +22,12 @@ xcb_extension_t xcb_xinerama_id = { "XINERAMA", 0 }; /***************************************************************************** ** ** void xcb_xinerama_screen_info_next - ** + ** ** @param xcb_xinerama_screen_info_iterator_t *i ** @returns void ** *****************************************************************************/ - + void xcb_xinerama_screen_info_next (xcb_xinerama_screen_info_iterator_t *i /**< */) { @@ -33,12 +40,12 @@ xcb_xinerama_screen_info_next (xcb_xinerama_screen_info_iterator_t *i /**< */) /***************************************************************************** ** ** xcb_generic_iterator_t xcb_xinerama_screen_info_end - ** + ** ** @param xcb_xinerama_screen_info_iterator_t i ** @returns xcb_generic_iterator_t ** *****************************************************************************/ - + xcb_generic_iterator_t xcb_xinerama_screen_info_end (xcb_xinerama_screen_info_iterator_t i /**< */) { @@ -53,14 +60,14 @@ xcb_xinerama_screen_info_end (xcb_xinerama_screen_info_iterator_t i /**< */) /***************************************************************************** ** ** xcb_xinerama_query_version_cookie_t xcb_xinerama_query_version - ** + ** ** @param xcb_connection_t *c ** @param uint8_t major ** @param uint8_t minor ** @returns xcb_xinerama_query_version_cookie_t ** *****************************************************************************/ - + xcb_xinerama_query_version_cookie_t xcb_xinerama_query_version (xcb_connection_t *c /**< */, uint8_t major /**< */, @@ -72,18 +79,19 @@ xcb_xinerama_query_version (xcb_connection_t *c /**< */, /* opcode */ XCB_XINERAMA_QUERY_VERSION, /* isvoid */ 0 }; - + struct iovec xcb_parts[4]; xcb_xinerama_query_version_cookie_t xcb_ret; xcb_xinerama_query_version_request_t xcb_out; - + xcb_out.major = major; xcb_out.minor = minor; - + xcb_parts[2].iov_base = (char *) &xcb_out; xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -92,14 +100,14 @@ xcb_xinerama_query_version (xcb_connection_t *c /**< */, /***************************************************************************** ** ** xcb_xinerama_query_version_cookie_t xcb_xinerama_query_version_unchecked - ** + ** ** @param xcb_connection_t *c ** @param uint8_t major ** @param uint8_t minor ** @returns xcb_xinerama_query_version_cookie_t ** *****************************************************************************/ - + xcb_xinerama_query_version_cookie_t xcb_xinerama_query_version_unchecked (xcb_connection_t *c /**< */, uint8_t major /**< */, @@ -111,18 +119,19 @@ xcb_xinerama_query_version_unchecked (xcb_connection_t *c /**< */, /* opcode */ XCB_XINERAMA_QUERY_VERSION, /* isvoid */ 0 }; - + struct iovec xcb_parts[4]; xcb_xinerama_query_version_cookie_t xcb_ret; xcb_xinerama_query_version_request_t xcb_out; - + xcb_out.major = major; xcb_out.minor = minor; - + xcb_parts[2].iov_base = (char *) &xcb_out; xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -131,14 +140,14 @@ xcb_xinerama_query_version_unchecked (xcb_connection_t *c /**< */, /***************************************************************************** ** ** xcb_xinerama_query_version_reply_t * xcb_xinerama_query_version_reply - ** + ** ** @param xcb_connection_t *c ** @param xcb_xinerama_query_version_cookie_t cookie ** @param xcb_generic_error_t **e ** @returns xcb_xinerama_query_version_reply_t * ** *****************************************************************************/ - + xcb_xinerama_query_version_reply_t * xcb_xinerama_query_version_reply (xcb_connection_t *c /**< */, xcb_xinerama_query_version_cookie_t cookie /**< */, @@ -151,13 +160,13 @@ xcb_xinerama_query_version_reply (xcb_connection_t *c /**< /***************************************************************************** ** ** xcb_xinerama_get_state_cookie_t xcb_xinerama_get_state - ** + ** ** @param xcb_connection_t *c ** @param xcb_window_t window ** @returns xcb_xinerama_get_state_cookie_t ** *****************************************************************************/ - + xcb_xinerama_get_state_cookie_t xcb_xinerama_get_state (xcb_connection_t *c /**< */, xcb_window_t window /**< */) @@ -168,17 +177,18 @@ xcb_xinerama_get_state (xcb_connection_t *c /**< */, /* opcode */ XCB_XINERAMA_GET_STATE, /* isvoid */ 0 }; - + struct iovec xcb_parts[4]; xcb_xinerama_get_state_cookie_t xcb_ret; xcb_xinerama_get_state_request_t xcb_out; - + xcb_out.window = window; - + xcb_parts[2].iov_base = (char *) &xcb_out; xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -187,13 +197,13 @@ xcb_xinerama_get_state (xcb_connection_t *c /**< */, /***************************************************************************** ** ** xcb_xinerama_get_state_cookie_t xcb_xinerama_get_state_unchecked - ** + ** ** @param xcb_connection_t *c ** @param xcb_window_t window ** @returns xcb_xinerama_get_state_cookie_t ** *****************************************************************************/ - + xcb_xinerama_get_state_cookie_t xcb_xinerama_get_state_unchecked (xcb_connection_t *c /**< */, xcb_window_t window /**< */) @@ -204,17 +214,18 @@ xcb_xinerama_get_state_unchecked (xcb_connection_t *c /**< */, /* opcode */ XCB_XINERAMA_GET_STATE, /* isvoid */ 0 }; - + struct iovec xcb_parts[4]; xcb_xinerama_get_state_cookie_t xcb_ret; xcb_xinerama_get_state_request_t xcb_out; - + xcb_out.window = window; - + xcb_parts[2].iov_base = (char *) &xcb_out; xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -223,14 +234,14 @@ xcb_xinerama_get_state_unchecked (xcb_connection_t *c /**< */, /***************************************************************************** ** ** xcb_xinerama_get_state_reply_t * xcb_xinerama_get_state_reply - ** + ** ** @param xcb_connection_t *c ** @param xcb_xinerama_get_state_cookie_t cookie ** @param xcb_generic_error_t **e ** @returns xcb_xinerama_get_state_reply_t * ** *****************************************************************************/ - + xcb_xinerama_get_state_reply_t * xcb_xinerama_get_state_reply (xcb_connection_t *c /**< */, xcb_xinerama_get_state_cookie_t cookie /**< */, @@ -243,13 +254,13 @@ xcb_xinerama_get_state_reply (xcb_connection_t *c /**< */, /***************************************************************************** ** ** xcb_xinerama_get_screen_count_cookie_t xcb_xinerama_get_screen_count - ** + ** ** @param xcb_connection_t *c ** @param xcb_window_t window ** @returns xcb_xinerama_get_screen_count_cookie_t ** *****************************************************************************/ - + xcb_xinerama_get_screen_count_cookie_t xcb_xinerama_get_screen_count (xcb_connection_t *c /**< */, xcb_window_t window /**< */) @@ -260,17 +271,18 @@ xcb_xinerama_get_screen_count (xcb_connection_t *c /**< */, /* opcode */ XCB_XINERAMA_GET_SCREEN_COUNT, /* isvoid */ 0 }; - + struct iovec xcb_parts[4]; xcb_xinerama_get_screen_count_cookie_t xcb_ret; xcb_xinerama_get_screen_count_request_t xcb_out; - + xcb_out.window = window; - + xcb_parts[2].iov_base = (char *) &xcb_out; xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -279,13 +291,13 @@ xcb_xinerama_get_screen_count (xcb_connection_t *c /**< */, /***************************************************************************** ** ** xcb_xinerama_get_screen_count_cookie_t xcb_xinerama_get_screen_count_unchecked - ** + ** ** @param xcb_connection_t *c ** @param xcb_window_t window ** @returns xcb_xinerama_get_screen_count_cookie_t ** *****************************************************************************/ - + xcb_xinerama_get_screen_count_cookie_t xcb_xinerama_get_screen_count_unchecked (xcb_connection_t *c /**< */, xcb_window_t window /**< */) @@ -296,17 +308,18 @@ xcb_xinerama_get_screen_count_unchecked (xcb_connection_t *c /**< */, /* opcode */ XCB_XINERAMA_GET_SCREEN_COUNT, /* isvoid */ 0 }; - + struct iovec xcb_parts[4]; xcb_xinerama_get_screen_count_cookie_t xcb_ret; xcb_xinerama_get_screen_count_request_t xcb_out; - + xcb_out.window = window; - + xcb_parts[2].iov_base = (char *) &xcb_out; xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -315,14 +328,14 @@ xcb_xinerama_get_screen_count_unchecked (xcb_connection_t *c /**< */, /***************************************************************************** ** ** xcb_xinerama_get_screen_count_reply_t * xcb_xinerama_get_screen_count_reply - ** + ** ** @param xcb_connection_t *c ** @param xcb_xinerama_get_screen_count_cookie_t cookie ** @param xcb_generic_error_t **e ** @returns xcb_xinerama_get_screen_count_reply_t * ** *****************************************************************************/ - + xcb_xinerama_get_screen_count_reply_t * xcb_xinerama_get_screen_count_reply (xcb_connection_t *c /**< */, xcb_xinerama_get_screen_count_cookie_t cookie /**< */, @@ -335,14 +348,14 @@ xcb_xinerama_get_screen_count_reply (xcb_connection_t *c /***************************************************************************** ** ** xcb_xinerama_get_screen_size_cookie_t xcb_xinerama_get_screen_size - ** + ** ** @param xcb_connection_t *c ** @param xcb_window_t window ** @param uint32_t screen ** @returns xcb_xinerama_get_screen_size_cookie_t ** *****************************************************************************/ - + xcb_xinerama_get_screen_size_cookie_t xcb_xinerama_get_screen_size (xcb_connection_t *c /**< */, xcb_window_t window /**< */, @@ -354,18 +367,19 @@ xcb_xinerama_get_screen_size (xcb_connection_t *c /**< */, /* opcode */ XCB_XINERAMA_GET_SCREEN_SIZE, /* isvoid */ 0 }; - + struct iovec xcb_parts[4]; xcb_xinerama_get_screen_size_cookie_t xcb_ret; xcb_xinerama_get_screen_size_request_t xcb_out; - + xcb_out.window = window; xcb_out.screen = screen; - + xcb_parts[2].iov_base = (char *) &xcb_out; xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -374,14 +388,14 @@ xcb_xinerama_get_screen_size (xcb_connection_t *c /**< */, /***************************************************************************** ** ** xcb_xinerama_get_screen_size_cookie_t xcb_xinerama_get_screen_size_unchecked - ** + ** ** @param xcb_connection_t *c ** @param xcb_window_t window ** @param uint32_t screen ** @returns xcb_xinerama_get_screen_size_cookie_t ** *****************************************************************************/ - + xcb_xinerama_get_screen_size_cookie_t xcb_xinerama_get_screen_size_unchecked (xcb_connection_t *c /**< */, xcb_window_t window /**< */, @@ -393,18 +407,19 @@ xcb_xinerama_get_screen_size_unchecked (xcb_connection_t *c /**< */, /* opcode */ XCB_XINERAMA_GET_SCREEN_SIZE, /* isvoid */ 0 }; - + struct iovec xcb_parts[4]; xcb_xinerama_get_screen_size_cookie_t xcb_ret; xcb_xinerama_get_screen_size_request_t xcb_out; - + xcb_out.window = window; xcb_out.screen = screen; - + xcb_parts[2].iov_base = (char *) &xcb_out; xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -413,14 +428,14 @@ xcb_xinerama_get_screen_size_unchecked (xcb_connection_t *c /**< */, /***************************************************************************** ** ** xcb_xinerama_get_screen_size_reply_t * xcb_xinerama_get_screen_size_reply - ** + ** ** @param xcb_connection_t *c ** @param xcb_xinerama_get_screen_size_cookie_t cookie ** @param xcb_generic_error_t **e ** @returns xcb_xinerama_get_screen_size_reply_t * ** *****************************************************************************/ - + xcb_xinerama_get_screen_size_reply_t * xcb_xinerama_get_screen_size_reply (xcb_connection_t *c /**< */, xcb_xinerama_get_screen_size_cookie_t cookie /**< */, @@ -433,12 +448,12 @@ xcb_xinerama_get_screen_size_reply (xcb_connection_t *c / /***************************************************************************** ** ** xcb_xinerama_is_active_cookie_t xcb_xinerama_is_active - ** + ** ** @param xcb_connection_t *c ** @returns xcb_xinerama_is_active_cookie_t ** *****************************************************************************/ - + xcb_xinerama_is_active_cookie_t xcb_xinerama_is_active (xcb_connection_t *c /**< */) { @@ -448,16 +463,17 @@ xcb_xinerama_is_active (xcb_connection_t *c /**< */) /* opcode */ XCB_XINERAMA_IS_ACTIVE, /* isvoid */ 0 }; - + struct iovec xcb_parts[4]; xcb_xinerama_is_active_cookie_t xcb_ret; xcb_xinerama_is_active_request_t xcb_out; - - + + xcb_parts[2].iov_base = (char *) &xcb_out; xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -466,12 +482,12 @@ xcb_xinerama_is_active (xcb_connection_t *c /**< */) /***************************************************************************** ** ** xcb_xinerama_is_active_cookie_t xcb_xinerama_is_active_unchecked - ** + ** ** @param xcb_connection_t *c ** @returns xcb_xinerama_is_active_cookie_t ** *****************************************************************************/ - + xcb_xinerama_is_active_cookie_t xcb_xinerama_is_active_unchecked (xcb_connection_t *c /**< */) { @@ -481,16 +497,17 @@ xcb_xinerama_is_active_unchecked (xcb_connection_t *c /**< */) /* opcode */ XCB_XINERAMA_IS_ACTIVE, /* isvoid */ 0 }; - + struct iovec xcb_parts[4]; xcb_xinerama_is_active_cookie_t xcb_ret; xcb_xinerama_is_active_request_t xcb_out; - - + + xcb_parts[2].iov_base = (char *) &xcb_out; xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -499,14 +516,14 @@ xcb_xinerama_is_active_unchecked (xcb_connection_t *c /**< */) /***************************************************************************** ** ** xcb_xinerama_is_active_reply_t * xcb_xinerama_is_active_reply - ** + ** ** @param xcb_connection_t *c ** @param xcb_xinerama_is_active_cookie_t cookie ** @param xcb_generic_error_t **e ** @returns xcb_xinerama_is_active_reply_t * ** *****************************************************************************/ - + xcb_xinerama_is_active_reply_t * xcb_xinerama_is_active_reply (xcb_connection_t *c /**< */, xcb_xinerama_is_active_cookie_t cookie /**< */, @@ -515,16 +532,45 @@ xcb_xinerama_is_active_reply (xcb_connection_t *c /**< */, return (xcb_xinerama_is_active_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); } +int +xcb_xinerama_query_screens_sizeof (const void *_buffer /**< */) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_xinerama_query_screens_reply_t *_aux = (xcb_xinerama_query_screens_reply_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to; + + + xcb_block_len += sizeof(xcb_xinerama_query_screens_reply_t); + xcb_tmp += xcb_block_len; + /* screen_info */ + xcb_block_len += _aux->number * sizeof(xcb_xinerama_screen_info_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_xinerama_screen_info_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + /***************************************************************************** ** ** xcb_xinerama_query_screens_cookie_t xcb_xinerama_query_screens - ** + ** ** @param xcb_connection_t *c ** @returns xcb_xinerama_query_screens_cookie_t ** *****************************************************************************/ - + xcb_xinerama_query_screens_cookie_t xcb_xinerama_query_screens (xcb_connection_t *c /**< */) { @@ -534,16 +580,17 @@ xcb_xinerama_query_screens (xcb_connection_t *c /**< */) /* opcode */ XCB_XINERAMA_QUERY_SCREENS, /* isvoid */ 0 }; - + struct iovec xcb_parts[4]; xcb_xinerama_query_screens_cookie_t xcb_ret; xcb_xinerama_query_screens_request_t xcb_out; - - + + xcb_parts[2].iov_base = (char *) &xcb_out; xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -552,12 +599,12 @@ xcb_xinerama_query_screens (xcb_connection_t *c /**< */) /***************************************************************************** ** ** xcb_xinerama_query_screens_cookie_t xcb_xinerama_query_screens_unchecked - ** + ** ** @param xcb_connection_t *c ** @returns xcb_xinerama_query_screens_cookie_t ** *****************************************************************************/ - + xcb_xinerama_query_screens_cookie_t xcb_xinerama_query_screens_unchecked (xcb_connection_t *c /**< */) { @@ -567,16 +614,17 @@ xcb_xinerama_query_screens_unchecked (xcb_connection_t *c /**< */) /* opcode */ XCB_XINERAMA_QUERY_SCREENS, /* isvoid */ 0 }; - + struct iovec xcb_parts[4]; xcb_xinerama_query_screens_cookie_t xcb_ret; xcb_xinerama_query_screens_request_t xcb_out; - - + + xcb_parts[2].iov_base = (char *) &xcb_out; xcb_parts[2].iov_len = sizeof(xcb_out); xcb_parts[3].iov_base = 0; xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); return xcb_ret; } @@ -585,12 +633,12 @@ xcb_xinerama_query_screens_unchecked (xcb_connection_t *c /**< */) /***************************************************************************** ** ** xcb_xinerama_screen_info_t * xcb_xinerama_query_screens_screen_info - ** + ** ** @param const xcb_xinerama_query_screens_reply_t *R ** @returns xcb_xinerama_screen_info_t * ** *****************************************************************************/ - + xcb_xinerama_screen_info_t * xcb_xinerama_query_screens_screen_info (const xcb_xinerama_query_screens_reply_t *R /**< */) { @@ -601,12 +649,12 @@ xcb_xinerama_query_screens_screen_info (const xcb_xinerama_query_screens_reply_t /***************************************************************************** ** ** int xcb_xinerama_query_screens_screen_info_length - ** + ** ** @param const xcb_xinerama_query_screens_reply_t *R ** @returns int ** *****************************************************************************/ - + int xcb_xinerama_query_screens_screen_info_length (const xcb_xinerama_query_screens_reply_t *R /**< */) { @@ -617,12 +665,12 @@ xcb_xinerama_query_screens_screen_info_length (const xcb_xinerama_query_screens_ /***************************************************************************** ** ** xcb_xinerama_screen_info_iterator_t xcb_xinerama_query_screens_screen_info_iterator - ** + ** ** @param const xcb_xinerama_query_screens_reply_t *R ** @returns xcb_xinerama_screen_info_iterator_t ** *****************************************************************************/ - + xcb_xinerama_screen_info_iterator_t xcb_xinerama_query_screens_screen_info_iterator (const xcb_xinerama_query_screens_reply_t *R /**< */) { @@ -637,14 +685,14 @@ xcb_xinerama_query_screens_screen_info_iterator (const xcb_xinerama_query_screen /***************************************************************************** ** ** xcb_xinerama_query_screens_reply_t * xcb_xinerama_query_screens_reply - ** + ** ** @param xcb_connection_t *c ** @param xcb_xinerama_query_screens_cookie_t cookie ** @param xcb_generic_error_t **e ** @returns xcb_xinerama_query_screens_reply_t * ** *****************************************************************************/ - + xcb_xinerama_query_screens_reply_t * xcb_xinerama_query_screens_reply (xcb_connection_t *c /**< */, xcb_xinerama_query_screens_cookie_t cookie /**< */, diff --git a/src/3rdparty/xcb/libxcb/xinput.c b/src/3rdparty/xcb/libxcb/xinput.c new file mode 100644 index 0000000000..0edfde656c --- /dev/null +++ b/src/3rdparty/xcb/libxcb/xinput.c @@ -0,0 +1,14156 @@ +/* + * This file generated automatically from xinput.xml by c_client.py. + * Edit at your peril. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif +#include <stdlib.h> +#include <string.h> +#include <assert.h> +#include <stddef.h> /* for offsetof() */ +#include "xcbext.h" +#include "xinput.h" + +#define ALIGNOF(type) offsetof(struct { char dummy; type member; }, member) +#include "xfixes.h" + +xcb_extension_t xcb_input_id = { "XInputExtension", 0 }; + +void +xcb_input_event_class_next (xcb_input_event_class_iterator_t *i) +{ + --i->rem; + ++i->data; + i->index += sizeof(xcb_input_event_class_t); +} + +xcb_generic_iterator_t +xcb_input_event_class_end (xcb_input_event_class_iterator_t i) +{ + xcb_generic_iterator_t ret; + ret.data = i.data + i.rem; + ret.index = i.index + ((char *) ret.data - (char *) i.data); + ret.rem = 0; + return ret; +} + +void +xcb_input_key_code_next (xcb_input_key_code_iterator_t *i) +{ + --i->rem; + ++i->data; + i->index += sizeof(xcb_input_key_code_t); +} + +xcb_generic_iterator_t +xcb_input_key_code_end (xcb_input_key_code_iterator_t i) +{ + xcb_generic_iterator_t ret; + ret.data = i.data + i.rem; + ret.index = i.index + ((char *) ret.data - (char *) i.data); + ret.rem = 0; + return ret; +} + +void +xcb_input_device_id_next (xcb_input_device_id_iterator_t *i) +{ + --i->rem; + ++i->data; + i->index += sizeof(xcb_input_device_id_t); +} + +xcb_generic_iterator_t +xcb_input_device_id_end (xcb_input_device_id_iterator_t i) +{ + xcb_generic_iterator_t ret; + ret.data = i.data + i.rem; + ret.index = i.index + ((char *) ret.data - (char *) i.data); + ret.rem = 0; + return ret; +} + +void +xcb_input_fp1616_next (xcb_input_fp1616_iterator_t *i) +{ + --i->rem; + ++i->data; + i->index += sizeof(xcb_input_fp1616_t); +} + +xcb_generic_iterator_t +xcb_input_fp1616_end (xcb_input_fp1616_iterator_t i) +{ + xcb_generic_iterator_t ret; + ret.data = i.data + i.rem; + ret.index = i.index + ((char *) ret.data - (char *) i.data); + ret.rem = 0; + return ret; +} + +void +xcb_input_fp3232_next (xcb_input_fp3232_iterator_t *i) +{ + --i->rem; + ++i->data; + i->index += sizeof(xcb_input_fp3232_t); +} + +xcb_generic_iterator_t +xcb_input_fp3232_end (xcb_input_fp3232_iterator_t i) +{ + xcb_generic_iterator_t ret; + ret.data = i.data + i.rem; + ret.index = i.index + ((char *) ret.data - (char *) i.data); + ret.rem = 0; + return ret; +} + +int +xcb_input_get_extension_version_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_get_extension_version_request_t *_aux = (xcb_input_get_extension_version_request_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + + xcb_block_len += sizeof(xcb_input_get_extension_version_request_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* name */ + xcb_block_len += _aux->name_len * sizeof(char); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(char); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +xcb_input_get_extension_version_cookie_t +xcb_input_get_extension_version (xcb_connection_t *c, + uint16_t name_len, + const char *name) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 4, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_GET_EXTENSION_VERSION, + .isvoid = 0 + }; + + struct iovec xcb_parts[6]; + xcb_input_get_extension_version_cookie_t xcb_ret; + xcb_input_get_extension_version_request_t xcb_out; + + xcb_out.name_len = name_len; + memset(xcb_out.pad0, 0, 2); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* char name */ + xcb_parts[4].iov_base = (char *) name; + xcb_parts[4].iov_len = name_len * sizeof(char); + xcb_parts[5].iov_base = 0; + xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_get_extension_version_cookie_t +xcb_input_get_extension_version_unchecked (xcb_connection_t *c, + uint16_t name_len, + const char *name) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 4, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_GET_EXTENSION_VERSION, + .isvoid = 0 + }; + + struct iovec xcb_parts[6]; + xcb_input_get_extension_version_cookie_t xcb_ret; + xcb_input_get_extension_version_request_t xcb_out; + + xcb_out.name_len = name_len; + memset(xcb_out.pad0, 0, 2); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* char name */ + xcb_parts[4].iov_base = (char *) name; + xcb_parts[4].iov_len = name_len * sizeof(char); + xcb_parts[5].iov_base = 0; + xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_get_extension_version_reply_t * +xcb_input_get_extension_version_reply (xcb_connection_t *c, + xcb_input_get_extension_version_cookie_t cookie /**< */, + xcb_generic_error_t **e) +{ + return (xcb_input_get_extension_version_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); +} + +void +xcb_input_device_info_next (xcb_input_device_info_iterator_t *i) +{ + --i->rem; + ++i->data; + i->index += sizeof(xcb_input_device_info_t); +} + +xcb_generic_iterator_t +xcb_input_device_info_end (xcb_input_device_info_iterator_t i) +{ + xcb_generic_iterator_t ret; + ret.data = i.data + i.rem; + ret.index = i.index + ((char *) ret.data - (char *) i.data); + ret.rem = 0; + return ret; +} + +void +xcb_input_key_info_next (xcb_input_key_info_iterator_t *i) +{ + --i->rem; + ++i->data; + i->index += sizeof(xcb_input_key_info_t); +} + +xcb_generic_iterator_t +xcb_input_key_info_end (xcb_input_key_info_iterator_t i) +{ + xcb_generic_iterator_t ret; + ret.data = i.data + i.rem; + ret.index = i.index + ((char *) ret.data - (char *) i.data); + ret.rem = 0; + return ret; +} + +void +xcb_input_button_info_next (xcb_input_button_info_iterator_t *i) +{ + --i->rem; + ++i->data; + i->index += sizeof(xcb_input_button_info_t); +} + +xcb_generic_iterator_t +xcb_input_button_info_end (xcb_input_button_info_iterator_t i) +{ + xcb_generic_iterator_t ret; + ret.data = i.data + i.rem; + ret.index = i.index + ((char *) ret.data - (char *) i.data); + ret.rem = 0; + return ret; +} + +void +xcb_input_axis_info_next (xcb_input_axis_info_iterator_t *i) +{ + --i->rem; + ++i->data; + i->index += sizeof(xcb_input_axis_info_t); +} + +xcb_generic_iterator_t +xcb_input_axis_info_end (xcb_input_axis_info_iterator_t i) +{ + xcb_generic_iterator_t ret; + ret.data = i.data + i.rem; + ret.index = i.index + ((char *) ret.data - (char *) i.data); + ret.rem = 0; + return ret; +} + +int +xcb_input_valuator_info_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_valuator_info_t *_aux = (xcb_input_valuator_info_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + + xcb_block_len += sizeof(xcb_input_valuator_info_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* axes */ + xcb_block_len += _aux->axes_len * sizeof(xcb_input_axis_info_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_input_axis_info_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +xcb_input_axis_info_t * +xcb_input_valuator_info_axes (const xcb_input_valuator_info_t *R) +{ + return (xcb_input_axis_info_t *) (R + 1); +} + +int +xcb_input_valuator_info_axes_length (const xcb_input_valuator_info_t *R) +{ + return R->axes_len; +} + +xcb_input_axis_info_iterator_t +xcb_input_valuator_info_axes_iterator (const xcb_input_valuator_info_t *R) +{ + xcb_input_axis_info_iterator_t i; + i.data = (xcb_input_axis_info_t *) (R + 1); + i.rem = R->axes_len; + i.index = (char *) i.data - (char *) R; + return i; +} + +void +xcb_input_valuator_info_next (xcb_input_valuator_info_iterator_t *i) +{ + xcb_input_valuator_info_t *R = i->data; + xcb_generic_iterator_t child; + child.data = (xcb_input_valuator_info_t *)(((char *)R) + xcb_input_valuator_info_sizeof(R)); + i->index = (char *) child.data - (char *) i->data; + --i->rem; + i->data = (xcb_input_valuator_info_t *) child.data; +} + +xcb_generic_iterator_t +xcb_input_valuator_info_end (xcb_input_valuator_info_iterator_t i) +{ + xcb_generic_iterator_t ret; + while(i.rem > 0) + xcb_input_valuator_info_next(&i); + ret.data = i.data; + ret.rem = i.rem; + ret.index = i.index; + return ret; +} + +xcb_input_axis_info_t * +xcb_input_input_info_info_valuator_axes (const xcb_input_input_info_info_t *S) +{ + return S->valuator.axes; +} + +int +xcb_input_input_info_info_valuator_axes_length (const xcb_input_input_info_t *R, + const xcb_input_input_info_info_t *S) +{ + return S->valuator.axes_len; +} + +xcb_input_axis_info_iterator_t +xcb_input_input_info_info_valuator_axes_iterator (const xcb_input_input_info_t *R, + const xcb_input_input_info_info_t *S) +{ + xcb_input_axis_info_iterator_t i; + i.data = S->valuator.axes; + i.rem = S->valuator.axes_len; + i.index = (char *) i.data - (char *) S; + return i; +} + +int +xcb_input_input_info_info_serialize (void **_buffer, + uint8_t class_id, + const xcb_input_input_info_info_t *_aux) +{ + char *xcb_out = *_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_align_to = 0; + unsigned int xcb_padding_offset = 2; + + unsigned int xcb_pad = 0; + char xcb_pad0[3] = {0, 0, 0}; + struct iovec xcb_parts[11]; + unsigned int xcb_parts_idx = 0; + unsigned int xcb_block_len = 0; + unsigned int i; + char *xcb_tmp; + + if(class_id == XCB_INPUT_INPUT_CLASS_KEY) { + /* xcb_input_input_info_info_t.key.min_keycode */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->key.min_keycode; + xcb_block_len += sizeof(xcb_input_key_code_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_input_key_code_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(xcb_input_key_code_t); + /* xcb_input_input_info_info_t.key.max_keycode */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->key.max_keycode; + xcb_block_len += sizeof(xcb_input_key_code_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_input_key_code_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(xcb_input_key_code_t); + /* xcb_input_input_info_info_t.key.num_keys */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->key.num_keys; + xcb_block_len += sizeof(uint16_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint16_t); + /* xcb_input_input_info_info_t.key.pad0 */ + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_block_len += sizeof(uint8_t)*2; + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t)*2; + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint8_t); + } + if(class_id == XCB_INPUT_INPUT_CLASS_BUTTON) { + /* xcb_input_input_info_info_t.button.num_buttons */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->button.num_buttons; + xcb_block_len += sizeof(uint16_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint16_t); + } + if(class_id == XCB_INPUT_INPUT_CLASS_VALUATOR) { + /* xcb_input_input_info_info_t.valuator.axes_len */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->valuator.axes_len; + xcb_block_len += sizeof(uint8_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_input_info_info_t.valuator.mode */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->valuator.mode; + xcb_block_len += sizeof(uint8_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_input_info_info_t.valuator.motion_size */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->valuator.motion_size; + xcb_block_len += sizeof(uint32_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint32_t); + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_parts[xcb_parts_idx].iov_len = xcb_pad; + xcb_parts_idx++; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + /* axes */ + xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->valuator.axes; + xcb_block_len += _aux->valuator.axes_len * sizeof(xcb_input_axis_info_t); + xcb_parts[xcb_parts_idx].iov_len = _aux->valuator.axes_len * sizeof(xcb_input_axis_info_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(xcb_input_axis_info_t); + } + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_parts[xcb_parts_idx].iov_len = xcb_pad; + xcb_parts_idx++; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + + if (NULL == xcb_out) { + /* allocate memory */ + xcb_out = malloc(xcb_buffer_len); + *_buffer = xcb_out; + } + + xcb_tmp = xcb_out; + for(i=0; i<xcb_parts_idx; i++) { + if (0 != xcb_parts[i].iov_base && 0 != xcb_parts[i].iov_len) + memcpy(xcb_tmp, xcb_parts[i].iov_base, xcb_parts[i].iov_len); + if (0 != xcb_parts[i].iov_len) + xcb_tmp += xcb_parts[i].iov_len; + } + + return xcb_buffer_len; +} + +int +xcb_input_input_info_info_unpack (const void *_buffer, + uint8_t class_id, + xcb_input_input_info_info_t *_aux) +{ + char *xcb_tmp = (char *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + unsigned int xcb_padding_offset = 2; + + + if(class_id == XCB_INPUT_INPUT_CLASS_KEY) { + /* xcb_input_input_info_info_t.key.min_keycode */ + _aux->key.min_keycode = *(xcb_input_key_code_t *)xcb_tmp; + xcb_block_len += sizeof(xcb_input_key_code_t); + xcb_tmp += sizeof(xcb_input_key_code_t); + xcb_align_to = ALIGNOF(xcb_input_key_code_t); + /* xcb_input_input_info_info_t.key.max_keycode */ + _aux->key.max_keycode = *(xcb_input_key_code_t *)xcb_tmp; + xcb_block_len += sizeof(xcb_input_key_code_t); + xcb_tmp += sizeof(xcb_input_key_code_t); + xcb_align_to = ALIGNOF(xcb_input_key_code_t); + /* xcb_input_input_info_info_t.key.num_keys */ + _aux->key.num_keys = *(uint16_t *)xcb_tmp; + xcb_block_len += sizeof(uint16_t); + xcb_tmp += sizeof(uint16_t); + xcb_align_to = ALIGNOF(uint16_t); + /* xcb_input_input_info_info_t.key.pad0 */ + _aux->key.pad0[0] = *(uint8_t *)xcb_tmp; + _aux->key.pad0[1] = *(uint8_t *)xcb_tmp; + xcb_block_len += sizeof(uint8_t) * 2; + xcb_tmp += sizeof(uint8_t) * 2; + xcb_align_to = ALIGNOF(uint8_t); + } + if(class_id == XCB_INPUT_INPUT_CLASS_BUTTON) { + /* xcb_input_input_info_info_t.button.num_buttons */ + _aux->button.num_buttons = *(uint16_t *)xcb_tmp; + xcb_block_len += sizeof(uint16_t); + xcb_tmp += sizeof(uint16_t); + xcb_align_to = ALIGNOF(uint16_t); + } + if(class_id == XCB_INPUT_INPUT_CLASS_VALUATOR) { + /* xcb_input_input_info_info_t.valuator.axes_len */ + _aux->valuator.axes_len = *(uint8_t *)xcb_tmp; + xcb_block_len += sizeof(uint8_t); + xcb_tmp += sizeof(uint8_t); + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_input_info_info_t.valuator.mode */ + _aux->valuator.mode = *(uint8_t *)xcb_tmp; + xcb_block_len += sizeof(uint8_t); + xcb_tmp += sizeof(uint8_t); + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_input_info_info_t.valuator.motion_size */ + _aux->valuator.motion_size = *(uint32_t *)xcb_tmp; + xcb_block_len += sizeof(uint32_t); + xcb_tmp += sizeof(uint32_t); + xcb_align_to = ALIGNOF(uint32_t); + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + /* axes */ + _aux->valuator.axes = (xcb_input_axis_info_t *)xcb_tmp; + xcb_block_len += _aux->valuator.axes_len * sizeof(xcb_input_axis_info_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_input_axis_info_t); + } + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + + return xcb_buffer_len; +} + +int +xcb_input_input_info_info_sizeof (const void *_buffer, + uint8_t class_id) +{ + xcb_input_input_info_info_t _aux; + return xcb_input_input_info_info_unpack(_buffer, class_id, &_aux); +} + +int +xcb_input_input_info_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_input_info_t *_aux = (xcb_input_input_info_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + + xcb_block_len += sizeof(xcb_input_input_info_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* info */ + xcb_block_len += xcb_input_input_info_info_sizeof(xcb_tmp, _aux->class_id); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(char); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +void * +xcb_input_input_info_info (const xcb_input_input_info_t *R) +{ + return (void *) (R + 1); +} + +void +xcb_input_input_info_next (xcb_input_input_info_iterator_t *i) +{ + xcb_input_input_info_t *R = i->data; + xcb_generic_iterator_t child; + child.data = (xcb_input_input_info_t *)(((char *)R) + xcb_input_input_info_sizeof(R)); + i->index = (char *) child.data - (char *) i->data; + --i->rem; + i->data = (xcb_input_input_info_t *) child.data; +} + +xcb_generic_iterator_t +xcb_input_input_info_end (xcb_input_input_info_iterator_t i) +{ + xcb_generic_iterator_t ret; + while(i.rem > 0) + xcb_input_input_info_next(&i); + ret.data = i.data; + ret.rem = i.rem; + ret.index = i.index; + return ret; +} + +int +xcb_input_device_name_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_device_name_t *_aux = (xcb_input_device_name_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + + xcb_block_len += sizeof(xcb_input_device_name_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* string */ + xcb_block_len += _aux->len * sizeof(char); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(char); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +char * +xcb_input_device_name_string (const xcb_input_device_name_t *R) +{ + return (char *) (R + 1); +} + +int +xcb_input_device_name_string_length (const xcb_input_device_name_t *R) +{ + return R->len; +} + +xcb_generic_iterator_t +xcb_input_device_name_string_end (const xcb_input_device_name_t *R) +{ + xcb_generic_iterator_t i; + i.data = ((char *) (R + 1)) + (R->len); + i.rem = 0; + i.index = (char *) i.data - (char *) R; + return i; +} + +void +xcb_input_device_name_next (xcb_input_device_name_iterator_t *i) +{ + xcb_input_device_name_t *R = i->data; + xcb_generic_iterator_t child; + child.data = (xcb_input_device_name_t *)(((char *)R) + xcb_input_device_name_sizeof(R)); + i->index = (char *) child.data - (char *) i->data; + --i->rem; + i->data = (xcb_input_device_name_t *) child.data; +} + +xcb_generic_iterator_t +xcb_input_device_name_end (xcb_input_device_name_iterator_t i) +{ + xcb_generic_iterator_t ret; + while(i.rem > 0) + xcb_input_device_name_next(&i); + ret.data = i.data; + ret.rem = i.rem; + ret.index = i.index; + return ret; +} + +int +xcb_input_list_input_devices_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_list_input_devices_reply_t *_aux = (xcb_input_list_input_devices_reply_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + int xcb_pre_tmp_1; /* sumof length */ + int xcb_pre_tmp_2; /* sumof loop counter */ + int64_t xcb_pre_tmp_3; /* sumof sum */ + const xcb_input_device_info_t* xcb_pre_tmp_4; /* sumof list ptr */ + unsigned int i; + unsigned int xcb_tmp_len; + + xcb_block_len += sizeof(xcb_input_list_input_devices_reply_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* devices */ + xcb_block_len += _aux->devices_len * sizeof(xcb_input_device_info_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_input_device_info_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* infos */ + /* sumof start */ + xcb_pre_tmp_1 = _aux->devices_len; + xcb_pre_tmp_3 = 0; + xcb_pre_tmp_4 = xcb_input_list_input_devices_devices(_aux); + for (xcb_pre_tmp_2 = 0; xcb_pre_tmp_2 < xcb_pre_tmp_1; xcb_pre_tmp_2++) { + xcb_pre_tmp_3 += xcb_pre_tmp_4->num_class_info; + xcb_pre_tmp_4++; + } + /* sumof end. Result is in xcb_pre_tmp_3 */ + for(i=0; i<xcb_pre_tmp_3; i++) { + xcb_tmp_len = xcb_input_input_info_sizeof(xcb_tmp); + xcb_block_len += xcb_tmp_len; + xcb_tmp += xcb_tmp_len; + } + xcb_align_to = ALIGNOF(xcb_input_input_info_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* names */ + for(i=0; i<_aux->devices_len; i++) { + xcb_tmp_len = xcb_str_sizeof(xcb_tmp); + xcb_block_len += xcb_tmp_len; + xcb_tmp += xcb_tmp_len; + } + xcb_align_to = ALIGNOF(xcb_str_t); + xcb_align_to = 4; + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +xcb_input_list_input_devices_cookie_t +xcb_input_list_input_devices (xcb_connection_t *c) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_LIST_INPUT_DEVICES, + .isvoid = 0 + }; + + struct iovec xcb_parts[4]; + xcb_input_list_input_devices_cookie_t xcb_ret; + xcb_input_list_input_devices_request_t xcb_out; + + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_list_input_devices_cookie_t +xcb_input_list_input_devices_unchecked (xcb_connection_t *c) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_LIST_INPUT_DEVICES, + .isvoid = 0 + }; + + struct iovec xcb_parts[4]; + xcb_input_list_input_devices_cookie_t xcb_ret; + xcb_input_list_input_devices_request_t xcb_out; + + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_device_info_t * +xcb_input_list_input_devices_devices (const xcb_input_list_input_devices_reply_t *R) +{ + return (xcb_input_device_info_t *) (R + 1); +} + +int +xcb_input_list_input_devices_devices_length (const xcb_input_list_input_devices_reply_t *R) +{ + return R->devices_len; +} + +xcb_input_device_info_iterator_t +xcb_input_list_input_devices_devices_iterator (const xcb_input_list_input_devices_reply_t *R) +{ + xcb_input_device_info_iterator_t i; + i.data = (xcb_input_device_info_t *) (R + 1); + i.rem = R->devices_len; + i.index = (char *) i.data - (char *) R; + return i; +} + +int +xcb_input_list_input_devices_infos_length (const xcb_input_list_input_devices_reply_t *R) +{ + int xcb_pre_tmp_5; /* sumof length */ + int xcb_pre_tmp_6; /* sumof loop counter */ + int64_t xcb_pre_tmp_7; /* sumof sum */ + const xcb_input_device_info_t* xcb_pre_tmp_8; /* sumof list ptr */ + /* sumof start */ + xcb_pre_tmp_5 = R->devices_len; + xcb_pre_tmp_7 = 0; + xcb_pre_tmp_8 = xcb_input_list_input_devices_devices(R); + for (xcb_pre_tmp_6 = 0; xcb_pre_tmp_6 < xcb_pre_tmp_5; xcb_pre_tmp_6++) { + xcb_pre_tmp_7 += xcb_pre_tmp_8->num_class_info; + xcb_pre_tmp_8++; + } + /* sumof end. Result is in xcb_pre_tmp_7 */ + return xcb_pre_tmp_7; +} + +xcb_input_input_info_iterator_t +xcb_input_list_input_devices_infos_iterator (const xcb_input_list_input_devices_reply_t *R) +{ + xcb_input_input_info_iterator_t i; + xcb_generic_iterator_t prev = xcb_input_device_info_end(xcb_input_list_input_devices_devices_iterator(R)); + int xcb_pre_tmp_9; /* sumof length */ + int xcb_pre_tmp_10; /* sumof loop counter */ + int64_t xcb_pre_tmp_11; /* sumof sum */ + const xcb_input_device_info_t* xcb_pre_tmp_12; /* sumof list ptr */ + /* sumof start */ + xcb_pre_tmp_9 = R->devices_len; + xcb_pre_tmp_11 = 0; + xcb_pre_tmp_12 = xcb_input_list_input_devices_devices(R); + for (xcb_pre_tmp_10 = 0; xcb_pre_tmp_10 < xcb_pre_tmp_9; xcb_pre_tmp_10++) { + xcb_pre_tmp_11 += xcb_pre_tmp_12->num_class_info; + xcb_pre_tmp_12++; + } + /* sumof end. Result is in xcb_pre_tmp_11 */ + i.data = (xcb_input_input_info_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_input_input_info_t, prev.index)); + i.rem = xcb_pre_tmp_11; + i.index = (char *) i.data - (char *) R; + return i; +} + +int +xcb_input_list_input_devices_names_length (const xcb_input_list_input_devices_reply_t *R) +{ + return R->devices_len; +} + +xcb_str_iterator_t +xcb_input_list_input_devices_names_iterator (const xcb_input_list_input_devices_reply_t *R) +{ + xcb_str_iterator_t i; + xcb_generic_iterator_t prev = xcb_input_input_info_end(xcb_input_list_input_devices_infos_iterator(R)); + i.data = (xcb_str_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_str_t, prev.index)); + i.rem = R->devices_len; + i.index = (char *) i.data - (char *) R; + return i; +} + +xcb_input_list_input_devices_reply_t * +xcb_input_list_input_devices_reply (xcb_connection_t *c, + xcb_input_list_input_devices_cookie_t cookie /**< */, + xcb_generic_error_t **e) +{ + return (xcb_input_list_input_devices_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); +} + +void +xcb_input_event_type_base_next (xcb_input_event_type_base_iterator_t *i) +{ + --i->rem; + ++i->data; + i->index += sizeof(xcb_input_event_type_base_t); +} + +xcb_generic_iterator_t +xcb_input_event_type_base_end (xcb_input_event_type_base_iterator_t i) +{ + xcb_generic_iterator_t ret; + ret.data = i.data + i.rem; + ret.index = i.index + ((char *) ret.data - (char *) i.data); + ret.rem = 0; + return ret; +} + +void +xcb_input_input_class_info_next (xcb_input_input_class_info_iterator_t *i) +{ + --i->rem; + ++i->data; + i->index += sizeof(xcb_input_input_class_info_t); +} + +xcb_generic_iterator_t +xcb_input_input_class_info_end (xcb_input_input_class_info_iterator_t i) +{ + xcb_generic_iterator_t ret; + ret.data = i.data + i.rem; + ret.index = i.index + ((char *) ret.data - (char *) i.data); + ret.rem = 0; + return ret; +} + +int +xcb_input_open_device_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_open_device_reply_t *_aux = (xcb_input_open_device_reply_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + + xcb_block_len += sizeof(xcb_input_open_device_reply_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* class_info */ + xcb_block_len += _aux->num_classes * sizeof(xcb_input_input_class_info_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_input_input_class_info_t); + xcb_align_to = 4; + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +xcb_input_open_device_cookie_t +xcb_input_open_device (xcb_connection_t *c, + uint8_t device_id) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_OPEN_DEVICE, + .isvoid = 0 + }; + + struct iovec xcb_parts[4]; + xcb_input_open_device_cookie_t xcb_ret; + xcb_input_open_device_request_t xcb_out; + + xcb_out.device_id = device_id; + memset(xcb_out.pad0, 0, 3); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_open_device_cookie_t +xcb_input_open_device_unchecked (xcb_connection_t *c, + uint8_t device_id) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_OPEN_DEVICE, + .isvoid = 0 + }; + + struct iovec xcb_parts[4]; + xcb_input_open_device_cookie_t xcb_ret; + xcb_input_open_device_request_t xcb_out; + + xcb_out.device_id = device_id; + memset(xcb_out.pad0, 0, 3); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_input_class_info_t * +xcb_input_open_device_class_info (const xcb_input_open_device_reply_t *R) +{ + return (xcb_input_input_class_info_t *) (R + 1); +} + +int +xcb_input_open_device_class_info_length (const xcb_input_open_device_reply_t *R) +{ + return R->num_classes; +} + +xcb_input_input_class_info_iterator_t +xcb_input_open_device_class_info_iterator (const xcb_input_open_device_reply_t *R) +{ + xcb_input_input_class_info_iterator_t i; + i.data = (xcb_input_input_class_info_t *) (R + 1); + i.rem = R->num_classes; + i.index = (char *) i.data - (char *) R; + return i; +} + +xcb_input_open_device_reply_t * +xcb_input_open_device_reply (xcb_connection_t *c, + xcb_input_open_device_cookie_t cookie /**< */, + xcb_generic_error_t **e) +{ + return (xcb_input_open_device_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); +} + +xcb_void_cookie_t +xcb_input_close_device_checked (xcb_connection_t *c, + uint8_t device_id) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_CLOSE_DEVICE, + .isvoid = 1 + }; + + struct iovec xcb_parts[4]; + xcb_void_cookie_t xcb_ret; + xcb_input_close_device_request_t xcb_out; + + xcb_out.device_id = device_id; + memset(xcb_out.pad0, 0, 3); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_void_cookie_t +xcb_input_close_device (xcb_connection_t *c, + uint8_t device_id) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_CLOSE_DEVICE, + .isvoid = 1 + }; + + struct iovec xcb_parts[4]; + xcb_void_cookie_t xcb_ret; + xcb_input_close_device_request_t xcb_out; + + xcb_out.device_id = device_id; + memset(xcb_out.pad0, 0, 3); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_set_device_mode_cookie_t +xcb_input_set_device_mode (xcb_connection_t *c, + uint8_t device_id, + uint8_t mode) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_SET_DEVICE_MODE, + .isvoid = 0 + }; + + struct iovec xcb_parts[4]; + xcb_input_set_device_mode_cookie_t xcb_ret; + xcb_input_set_device_mode_request_t xcb_out; + + xcb_out.device_id = device_id; + xcb_out.mode = mode; + memset(xcb_out.pad0, 0, 2); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_set_device_mode_cookie_t +xcb_input_set_device_mode_unchecked (xcb_connection_t *c, + uint8_t device_id, + uint8_t mode) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_SET_DEVICE_MODE, + .isvoid = 0 + }; + + struct iovec xcb_parts[4]; + xcb_input_set_device_mode_cookie_t xcb_ret; + xcb_input_set_device_mode_request_t xcb_out; + + xcb_out.device_id = device_id; + xcb_out.mode = mode; + memset(xcb_out.pad0, 0, 2); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_set_device_mode_reply_t * +xcb_input_set_device_mode_reply (xcb_connection_t *c, + xcb_input_set_device_mode_cookie_t cookie /**< */, + xcb_generic_error_t **e) +{ + return (xcb_input_set_device_mode_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); +} + +int +xcb_input_select_extension_event_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_select_extension_event_request_t *_aux = (xcb_input_select_extension_event_request_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + + xcb_block_len += sizeof(xcb_input_select_extension_event_request_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* classes */ + xcb_block_len += _aux->num_classes * sizeof(xcb_input_event_class_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_input_event_class_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +xcb_void_cookie_t +xcb_input_select_extension_event_checked (xcb_connection_t *c, + xcb_window_t window, + uint16_t num_classes, + const xcb_input_event_class_t *classes) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 4, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_SELECT_EXTENSION_EVENT, + .isvoid = 1 + }; + + struct iovec xcb_parts[6]; + xcb_void_cookie_t xcb_ret; + xcb_input_select_extension_event_request_t xcb_out; + + xcb_out.window = window; + xcb_out.num_classes = num_classes; + memset(xcb_out.pad0, 0, 2); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_input_event_class_t classes */ + xcb_parts[4].iov_base = (char *) classes; + xcb_parts[4].iov_len = num_classes * sizeof(xcb_input_event_class_t); + xcb_parts[5].iov_base = 0; + xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_void_cookie_t +xcb_input_select_extension_event (xcb_connection_t *c, + xcb_window_t window, + uint16_t num_classes, + const xcb_input_event_class_t *classes) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 4, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_SELECT_EXTENSION_EVENT, + .isvoid = 1 + }; + + struct iovec xcb_parts[6]; + xcb_void_cookie_t xcb_ret; + xcb_input_select_extension_event_request_t xcb_out; + + xcb_out.window = window; + xcb_out.num_classes = num_classes; + memset(xcb_out.pad0, 0, 2); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_input_event_class_t classes */ + xcb_parts[4].iov_base = (char *) classes; + xcb_parts[4].iov_len = num_classes * sizeof(xcb_input_event_class_t); + xcb_parts[5].iov_base = 0; + xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_event_class_t * +xcb_input_select_extension_event_classes (const xcb_input_select_extension_event_request_t *R) +{ + return (xcb_input_event_class_t *) (R + 1); +} + +int +xcb_input_select_extension_event_classes_length (const xcb_input_select_extension_event_request_t *R) +{ + return R->num_classes; +} + +xcb_generic_iterator_t +xcb_input_select_extension_event_classes_end (const xcb_input_select_extension_event_request_t *R) +{ + xcb_generic_iterator_t i; + i.data = ((xcb_input_event_class_t *) (R + 1)) + (R->num_classes); + i.rem = 0; + i.index = (char *) i.data - (char *) R; + return i; +} + +int +xcb_input_get_selected_extension_events_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_get_selected_extension_events_reply_t *_aux = (xcb_input_get_selected_extension_events_reply_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + + xcb_block_len += sizeof(xcb_input_get_selected_extension_events_reply_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* this_classes */ + xcb_block_len += _aux->num_this_classes * sizeof(xcb_input_event_class_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_input_event_class_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* all_classes */ + xcb_block_len += _aux->num_all_classes * sizeof(xcb_input_event_class_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_input_event_class_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +xcb_input_get_selected_extension_events_cookie_t +xcb_input_get_selected_extension_events (xcb_connection_t *c, + xcb_window_t window) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_GET_SELECTED_EXTENSION_EVENTS, + .isvoid = 0 + }; + + struct iovec xcb_parts[4]; + xcb_input_get_selected_extension_events_cookie_t xcb_ret; + xcb_input_get_selected_extension_events_request_t xcb_out; + + xcb_out.window = window; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_get_selected_extension_events_cookie_t +xcb_input_get_selected_extension_events_unchecked (xcb_connection_t *c, + xcb_window_t window) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_GET_SELECTED_EXTENSION_EVENTS, + .isvoid = 0 + }; + + struct iovec xcb_parts[4]; + xcb_input_get_selected_extension_events_cookie_t xcb_ret; + xcb_input_get_selected_extension_events_request_t xcb_out; + + xcb_out.window = window; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_event_class_t * +xcb_input_get_selected_extension_events_this_classes (const xcb_input_get_selected_extension_events_reply_t *R) +{ + return (xcb_input_event_class_t *) (R + 1); +} + +int +xcb_input_get_selected_extension_events_this_classes_length (const xcb_input_get_selected_extension_events_reply_t *R) +{ + return R->num_this_classes; +} + +xcb_generic_iterator_t +xcb_input_get_selected_extension_events_this_classes_end (const xcb_input_get_selected_extension_events_reply_t *R) +{ + xcb_generic_iterator_t i; + i.data = ((xcb_input_event_class_t *) (R + 1)) + (R->num_this_classes); + i.rem = 0; + i.index = (char *) i.data - (char *) R; + return i; +} + +xcb_input_event_class_t * +xcb_input_get_selected_extension_events_all_classes (const xcb_input_get_selected_extension_events_reply_t *R) +{ + xcb_generic_iterator_t prev = xcb_input_get_selected_extension_events_this_classes_end(R); + return (xcb_input_event_class_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_input_event_class_t, prev.index) + 0); +} + +int +xcb_input_get_selected_extension_events_all_classes_length (const xcb_input_get_selected_extension_events_reply_t *R) +{ + return R->num_all_classes; +} + +xcb_generic_iterator_t +xcb_input_get_selected_extension_events_all_classes_end (const xcb_input_get_selected_extension_events_reply_t *R) +{ + xcb_generic_iterator_t i; + xcb_generic_iterator_t prev = xcb_input_get_selected_extension_events_this_classes_end(R); + i.data = ((xcb_input_event_class_t *) ((char*) prev.data + XCB_TYPE_PAD(xcb_input_event_class_t, prev.index))) + (R->num_all_classes); + i.rem = 0; + i.index = (char *) i.data - (char *) R; + return i; +} + +xcb_input_get_selected_extension_events_reply_t * +xcb_input_get_selected_extension_events_reply (xcb_connection_t *c, + xcb_input_get_selected_extension_events_cookie_t cookie /**< */, + xcb_generic_error_t **e) +{ + return (xcb_input_get_selected_extension_events_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); +} + +int +xcb_input_change_device_dont_propagate_list_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_change_device_dont_propagate_list_request_t *_aux = (xcb_input_change_device_dont_propagate_list_request_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + + xcb_block_len += sizeof(xcb_input_change_device_dont_propagate_list_request_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* classes */ + xcb_block_len += _aux->num_classes * sizeof(xcb_input_event_class_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_input_event_class_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +xcb_void_cookie_t +xcb_input_change_device_dont_propagate_list_checked (xcb_connection_t *c, + xcb_window_t window, + uint16_t num_classes, + uint8_t mode, + const xcb_input_event_class_t *classes) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 4, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_CHANGE_DEVICE_DONT_PROPAGATE_LIST, + .isvoid = 1 + }; + + struct iovec xcb_parts[6]; + xcb_void_cookie_t xcb_ret; + xcb_input_change_device_dont_propagate_list_request_t xcb_out; + + xcb_out.window = window; + xcb_out.num_classes = num_classes; + xcb_out.mode = mode; + xcb_out.pad0 = 0; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_input_event_class_t classes */ + xcb_parts[4].iov_base = (char *) classes; + xcb_parts[4].iov_len = num_classes * sizeof(xcb_input_event_class_t); + xcb_parts[5].iov_base = 0; + xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_void_cookie_t +xcb_input_change_device_dont_propagate_list (xcb_connection_t *c, + xcb_window_t window, + uint16_t num_classes, + uint8_t mode, + const xcb_input_event_class_t *classes) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 4, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_CHANGE_DEVICE_DONT_PROPAGATE_LIST, + .isvoid = 1 + }; + + struct iovec xcb_parts[6]; + xcb_void_cookie_t xcb_ret; + xcb_input_change_device_dont_propagate_list_request_t xcb_out; + + xcb_out.window = window; + xcb_out.num_classes = num_classes; + xcb_out.mode = mode; + xcb_out.pad0 = 0; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_input_event_class_t classes */ + xcb_parts[4].iov_base = (char *) classes; + xcb_parts[4].iov_len = num_classes * sizeof(xcb_input_event_class_t); + xcb_parts[5].iov_base = 0; + xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_event_class_t * +xcb_input_change_device_dont_propagate_list_classes (const xcb_input_change_device_dont_propagate_list_request_t *R) +{ + return (xcb_input_event_class_t *) (R + 1); +} + +int +xcb_input_change_device_dont_propagate_list_classes_length (const xcb_input_change_device_dont_propagate_list_request_t *R) +{ + return R->num_classes; +} + +xcb_generic_iterator_t +xcb_input_change_device_dont_propagate_list_classes_end (const xcb_input_change_device_dont_propagate_list_request_t *R) +{ + xcb_generic_iterator_t i; + i.data = ((xcb_input_event_class_t *) (R + 1)) + (R->num_classes); + i.rem = 0; + i.index = (char *) i.data - (char *) R; + return i; +} + +int +xcb_input_get_device_dont_propagate_list_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_get_device_dont_propagate_list_reply_t *_aux = (xcb_input_get_device_dont_propagate_list_reply_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + + xcb_block_len += sizeof(xcb_input_get_device_dont_propagate_list_reply_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* classes */ + xcb_block_len += _aux->num_classes * sizeof(xcb_input_event_class_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_input_event_class_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +xcb_input_get_device_dont_propagate_list_cookie_t +xcb_input_get_device_dont_propagate_list (xcb_connection_t *c, + xcb_window_t window) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_GET_DEVICE_DONT_PROPAGATE_LIST, + .isvoid = 0 + }; + + struct iovec xcb_parts[4]; + xcb_input_get_device_dont_propagate_list_cookie_t xcb_ret; + xcb_input_get_device_dont_propagate_list_request_t xcb_out; + + xcb_out.window = window; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_get_device_dont_propagate_list_cookie_t +xcb_input_get_device_dont_propagate_list_unchecked (xcb_connection_t *c, + xcb_window_t window) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_GET_DEVICE_DONT_PROPAGATE_LIST, + .isvoid = 0 + }; + + struct iovec xcb_parts[4]; + xcb_input_get_device_dont_propagate_list_cookie_t xcb_ret; + xcb_input_get_device_dont_propagate_list_request_t xcb_out; + + xcb_out.window = window; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_event_class_t * +xcb_input_get_device_dont_propagate_list_classes (const xcb_input_get_device_dont_propagate_list_reply_t *R) +{ + return (xcb_input_event_class_t *) (R + 1); +} + +int +xcb_input_get_device_dont_propagate_list_classes_length (const xcb_input_get_device_dont_propagate_list_reply_t *R) +{ + return R->num_classes; +} + +xcb_generic_iterator_t +xcb_input_get_device_dont_propagate_list_classes_end (const xcb_input_get_device_dont_propagate_list_reply_t *R) +{ + xcb_generic_iterator_t i; + i.data = ((xcb_input_event_class_t *) (R + 1)) + (R->num_classes); + i.rem = 0; + i.index = (char *) i.data - (char *) R; + return i; +} + +xcb_input_get_device_dont_propagate_list_reply_t * +xcb_input_get_device_dont_propagate_list_reply (xcb_connection_t *c, + xcb_input_get_device_dont_propagate_list_cookie_t cookie /**< */, + xcb_generic_error_t **e) +{ + return (xcb_input_get_device_dont_propagate_list_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); +} + +int +xcb_input_device_time_coord_sizeof (const void *_buffer, + uint8_t num_axes) +{ + char *xcb_tmp = (char *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + + xcb_block_len += sizeof(xcb_input_device_time_coord_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* axisvalues */ + xcb_block_len += num_axes * sizeof(int32_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(int32_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +int32_t * +xcb_input_device_time_coord_axisvalues (const xcb_input_device_time_coord_t *R) +{ + return (int32_t *) (R + 1); +} + +int +xcb_input_device_time_coord_axisvalues_length (const xcb_input_device_time_coord_t *R, + uint8_t num_axes) +{ + return num_axes; +} + +xcb_generic_iterator_t +xcb_input_device_time_coord_axisvalues_end (const xcb_input_device_time_coord_t *R, + uint8_t num_axes) +{ + xcb_generic_iterator_t i; + i.data = ((int32_t *) (R + 1)) + (num_axes); + i.rem = 0; + i.index = (char *) i.data - (char *) R; + return i; +} + +void +xcb_input_device_time_coord_next (xcb_input_device_time_coord_iterator_t *i) +{ + xcb_input_device_time_coord_t *R = i->data; + xcb_generic_iterator_t child; + child.data = (xcb_input_device_time_coord_t *)(((char *)R) + xcb_input_device_time_coord_sizeof(R, i->num_axes)); + i->index = (char *) child.data - (char *) i->data; + --i->rem; + i->data = (xcb_input_device_time_coord_t *) child.data; +} + +xcb_generic_iterator_t +xcb_input_device_time_coord_end (xcb_input_device_time_coord_iterator_t i) +{ + xcb_generic_iterator_t ret; + while(i.rem > 0) + xcb_input_device_time_coord_next(&i); + ret.data = i.data; + ret.rem = i.rem; + ret.index = i.index; + return ret; +} + +int +xcb_input_get_device_motion_events_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_get_device_motion_events_reply_t *_aux = (xcb_input_get_device_motion_events_reply_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + unsigned int i; + unsigned int xcb_tmp_len; + + xcb_block_len += sizeof(xcb_input_get_device_motion_events_reply_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* events */ + for(i=0; i<_aux->num_events; i++) { + xcb_tmp_len = xcb_input_device_time_coord_sizeof(xcb_tmp, _aux->num_axes); + xcb_block_len += xcb_tmp_len; + xcb_tmp += xcb_tmp_len; + } + xcb_align_to = ALIGNOF(xcb_input_device_time_coord_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +xcb_input_get_device_motion_events_cookie_t +xcb_input_get_device_motion_events (xcb_connection_t *c, + xcb_timestamp_t start, + xcb_timestamp_t stop, + uint8_t device_id) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_GET_DEVICE_MOTION_EVENTS, + .isvoid = 0 + }; + + struct iovec xcb_parts[4]; + xcb_input_get_device_motion_events_cookie_t xcb_ret; + xcb_input_get_device_motion_events_request_t xcb_out; + + xcb_out.start = start; + xcb_out.stop = stop; + xcb_out.device_id = device_id; + memset(xcb_out.pad0, 0, 3); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_get_device_motion_events_cookie_t +xcb_input_get_device_motion_events_unchecked (xcb_connection_t *c, + xcb_timestamp_t start, + xcb_timestamp_t stop, + uint8_t device_id) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_GET_DEVICE_MOTION_EVENTS, + .isvoid = 0 + }; + + struct iovec xcb_parts[4]; + xcb_input_get_device_motion_events_cookie_t xcb_ret; + xcb_input_get_device_motion_events_request_t xcb_out; + + xcb_out.start = start; + xcb_out.stop = stop; + xcb_out.device_id = device_id; + memset(xcb_out.pad0, 0, 3); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +int +xcb_input_get_device_motion_events_events_length (const xcb_input_get_device_motion_events_reply_t *R) +{ + return R->num_events; +} + +xcb_input_device_time_coord_iterator_t +xcb_input_get_device_motion_events_events_iterator (const xcb_input_get_device_motion_events_reply_t *R) +{ + xcb_input_device_time_coord_iterator_t i; + i.data = (xcb_input_device_time_coord_t *) (R + 1); + i.rem = R->num_events; + i.index = (char *) i.data - (char *) R; + i.num_axes = R->num_axes; + return i; +} + +xcb_input_get_device_motion_events_reply_t * +xcb_input_get_device_motion_events_reply (xcb_connection_t *c, + xcb_input_get_device_motion_events_cookie_t cookie /**< */, + xcb_generic_error_t **e) +{ + return (xcb_input_get_device_motion_events_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); +} + +xcb_input_change_keyboard_device_cookie_t +xcb_input_change_keyboard_device (xcb_connection_t *c, + uint8_t device_id) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_CHANGE_KEYBOARD_DEVICE, + .isvoid = 0 + }; + + struct iovec xcb_parts[4]; + xcb_input_change_keyboard_device_cookie_t xcb_ret; + xcb_input_change_keyboard_device_request_t xcb_out; + + xcb_out.device_id = device_id; + memset(xcb_out.pad0, 0, 3); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_change_keyboard_device_cookie_t +xcb_input_change_keyboard_device_unchecked (xcb_connection_t *c, + uint8_t device_id) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_CHANGE_KEYBOARD_DEVICE, + .isvoid = 0 + }; + + struct iovec xcb_parts[4]; + xcb_input_change_keyboard_device_cookie_t xcb_ret; + xcb_input_change_keyboard_device_request_t xcb_out; + + xcb_out.device_id = device_id; + memset(xcb_out.pad0, 0, 3); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_change_keyboard_device_reply_t * +xcb_input_change_keyboard_device_reply (xcb_connection_t *c, + xcb_input_change_keyboard_device_cookie_t cookie /**< */, + xcb_generic_error_t **e) +{ + return (xcb_input_change_keyboard_device_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); +} + +xcb_input_change_pointer_device_cookie_t +xcb_input_change_pointer_device (xcb_connection_t *c, + uint8_t x_axis, + uint8_t y_axis, + uint8_t device_id) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_CHANGE_POINTER_DEVICE, + .isvoid = 0 + }; + + struct iovec xcb_parts[4]; + xcb_input_change_pointer_device_cookie_t xcb_ret; + xcb_input_change_pointer_device_request_t xcb_out; + + xcb_out.x_axis = x_axis; + xcb_out.y_axis = y_axis; + xcb_out.device_id = device_id; + xcb_out.pad0 = 0; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_change_pointer_device_cookie_t +xcb_input_change_pointer_device_unchecked (xcb_connection_t *c, + uint8_t x_axis, + uint8_t y_axis, + uint8_t device_id) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_CHANGE_POINTER_DEVICE, + .isvoid = 0 + }; + + struct iovec xcb_parts[4]; + xcb_input_change_pointer_device_cookie_t xcb_ret; + xcb_input_change_pointer_device_request_t xcb_out; + + xcb_out.x_axis = x_axis; + xcb_out.y_axis = y_axis; + xcb_out.device_id = device_id; + xcb_out.pad0 = 0; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_change_pointer_device_reply_t * +xcb_input_change_pointer_device_reply (xcb_connection_t *c, + xcb_input_change_pointer_device_cookie_t cookie /**< */, + xcb_generic_error_t **e) +{ + return (xcb_input_change_pointer_device_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); +} + +int +xcb_input_grab_device_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_grab_device_request_t *_aux = (xcb_input_grab_device_request_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + + xcb_block_len += sizeof(xcb_input_grab_device_request_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* classes */ + xcb_block_len += _aux->num_classes * sizeof(xcb_input_event_class_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_input_event_class_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +xcb_input_grab_device_cookie_t +xcb_input_grab_device (xcb_connection_t *c, + xcb_window_t grab_window, + xcb_timestamp_t time, + uint16_t num_classes, + uint8_t this_device_mode, + uint8_t other_device_mode, + uint8_t owner_events, + uint8_t device_id, + const xcb_input_event_class_t *classes) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 4, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_GRAB_DEVICE, + .isvoid = 0 + }; + + struct iovec xcb_parts[6]; + xcb_input_grab_device_cookie_t xcb_ret; + xcb_input_grab_device_request_t xcb_out; + + xcb_out.grab_window = grab_window; + xcb_out.time = time; + xcb_out.num_classes = num_classes; + xcb_out.this_device_mode = this_device_mode; + xcb_out.other_device_mode = other_device_mode; + xcb_out.owner_events = owner_events; + xcb_out.device_id = device_id; + memset(xcb_out.pad0, 0, 2); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_input_event_class_t classes */ + xcb_parts[4].iov_base = (char *) classes; + xcb_parts[4].iov_len = num_classes * sizeof(uint32_t); + xcb_parts[5].iov_base = 0; + xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_grab_device_cookie_t +xcb_input_grab_device_unchecked (xcb_connection_t *c, + xcb_window_t grab_window, + xcb_timestamp_t time, + uint16_t num_classes, + uint8_t this_device_mode, + uint8_t other_device_mode, + uint8_t owner_events, + uint8_t device_id, + const xcb_input_event_class_t *classes) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 4, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_GRAB_DEVICE, + .isvoid = 0 + }; + + struct iovec xcb_parts[6]; + xcb_input_grab_device_cookie_t xcb_ret; + xcb_input_grab_device_request_t xcb_out; + + xcb_out.grab_window = grab_window; + xcb_out.time = time; + xcb_out.num_classes = num_classes; + xcb_out.this_device_mode = this_device_mode; + xcb_out.other_device_mode = other_device_mode; + xcb_out.owner_events = owner_events; + xcb_out.device_id = device_id; + memset(xcb_out.pad0, 0, 2); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_input_event_class_t classes */ + xcb_parts[4].iov_base = (char *) classes; + xcb_parts[4].iov_len = num_classes * sizeof(uint32_t); + xcb_parts[5].iov_base = 0; + xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_grab_device_reply_t * +xcb_input_grab_device_reply (xcb_connection_t *c, + xcb_input_grab_device_cookie_t cookie /**< */, + xcb_generic_error_t **e) +{ + return (xcb_input_grab_device_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); +} + +xcb_void_cookie_t +xcb_input_ungrab_device_checked (xcb_connection_t *c, + xcb_timestamp_t time, + uint8_t device_id) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_UNGRAB_DEVICE, + .isvoid = 1 + }; + + struct iovec xcb_parts[4]; + xcb_void_cookie_t xcb_ret; + xcb_input_ungrab_device_request_t xcb_out; + + xcb_out.time = time; + xcb_out.device_id = device_id; + memset(xcb_out.pad0, 0, 3); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_void_cookie_t +xcb_input_ungrab_device (xcb_connection_t *c, + xcb_timestamp_t time, + uint8_t device_id) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_UNGRAB_DEVICE, + .isvoid = 1 + }; + + struct iovec xcb_parts[4]; + xcb_void_cookie_t xcb_ret; + xcb_input_ungrab_device_request_t xcb_out; + + xcb_out.time = time; + xcb_out.device_id = device_id; + memset(xcb_out.pad0, 0, 3); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +int +xcb_input_grab_device_key_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_grab_device_key_request_t *_aux = (xcb_input_grab_device_key_request_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + + xcb_block_len += sizeof(xcb_input_grab_device_key_request_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* classes */ + xcb_block_len += _aux->num_classes * sizeof(xcb_input_event_class_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_input_event_class_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +xcb_void_cookie_t +xcb_input_grab_device_key_checked (xcb_connection_t *c, + xcb_window_t grab_window, + uint16_t num_classes, + uint16_t modifiers, + uint8_t modifier_device, + uint8_t grabbed_device, + uint8_t key, + uint8_t this_device_mode, + uint8_t other_device_mode, + uint8_t owner_events, + const xcb_input_event_class_t *classes) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 4, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_GRAB_DEVICE_KEY, + .isvoid = 1 + }; + + struct iovec xcb_parts[6]; + xcb_void_cookie_t xcb_ret; + xcb_input_grab_device_key_request_t xcb_out; + + xcb_out.grab_window = grab_window; + xcb_out.num_classes = num_classes; + xcb_out.modifiers = modifiers; + xcb_out.modifier_device = modifier_device; + xcb_out.grabbed_device = grabbed_device; + xcb_out.key = key; + xcb_out.this_device_mode = this_device_mode; + xcb_out.other_device_mode = other_device_mode; + xcb_out.owner_events = owner_events; + memset(xcb_out.pad0, 0, 2); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_input_event_class_t classes */ + xcb_parts[4].iov_base = (char *) classes; + xcb_parts[4].iov_len = num_classes * sizeof(xcb_input_event_class_t); + xcb_parts[5].iov_base = 0; + xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_void_cookie_t +xcb_input_grab_device_key (xcb_connection_t *c, + xcb_window_t grab_window, + uint16_t num_classes, + uint16_t modifiers, + uint8_t modifier_device, + uint8_t grabbed_device, + uint8_t key, + uint8_t this_device_mode, + uint8_t other_device_mode, + uint8_t owner_events, + const xcb_input_event_class_t *classes) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 4, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_GRAB_DEVICE_KEY, + .isvoid = 1 + }; + + struct iovec xcb_parts[6]; + xcb_void_cookie_t xcb_ret; + xcb_input_grab_device_key_request_t xcb_out; + + xcb_out.grab_window = grab_window; + xcb_out.num_classes = num_classes; + xcb_out.modifiers = modifiers; + xcb_out.modifier_device = modifier_device; + xcb_out.grabbed_device = grabbed_device; + xcb_out.key = key; + xcb_out.this_device_mode = this_device_mode; + xcb_out.other_device_mode = other_device_mode; + xcb_out.owner_events = owner_events; + memset(xcb_out.pad0, 0, 2); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_input_event_class_t classes */ + xcb_parts[4].iov_base = (char *) classes; + xcb_parts[4].iov_len = num_classes * sizeof(xcb_input_event_class_t); + xcb_parts[5].iov_base = 0; + xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_event_class_t * +xcb_input_grab_device_key_classes (const xcb_input_grab_device_key_request_t *R) +{ + return (xcb_input_event_class_t *) (R + 1); +} + +int +xcb_input_grab_device_key_classes_length (const xcb_input_grab_device_key_request_t *R) +{ + return R->num_classes; +} + +xcb_generic_iterator_t +xcb_input_grab_device_key_classes_end (const xcb_input_grab_device_key_request_t *R) +{ + xcb_generic_iterator_t i; + i.data = ((xcb_input_event_class_t *) (R + 1)) + (R->num_classes); + i.rem = 0; + i.index = (char *) i.data - (char *) R; + return i; +} + +xcb_void_cookie_t +xcb_input_ungrab_device_key_checked (xcb_connection_t *c, + xcb_window_t grabWindow, + uint16_t modifiers, + uint8_t modifier_device, + uint8_t key, + uint8_t grabbed_device) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_UNGRAB_DEVICE_KEY, + .isvoid = 1 + }; + + struct iovec xcb_parts[4]; + xcb_void_cookie_t xcb_ret; + xcb_input_ungrab_device_key_request_t xcb_out; + + xcb_out.grabWindow = grabWindow; + xcb_out.modifiers = modifiers; + xcb_out.modifier_device = modifier_device; + xcb_out.key = key; + xcb_out.grabbed_device = grabbed_device; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_void_cookie_t +xcb_input_ungrab_device_key (xcb_connection_t *c, + xcb_window_t grabWindow, + uint16_t modifiers, + uint8_t modifier_device, + uint8_t key, + uint8_t grabbed_device) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_UNGRAB_DEVICE_KEY, + .isvoid = 1 + }; + + struct iovec xcb_parts[4]; + xcb_void_cookie_t xcb_ret; + xcb_input_ungrab_device_key_request_t xcb_out; + + xcb_out.grabWindow = grabWindow; + xcb_out.modifiers = modifiers; + xcb_out.modifier_device = modifier_device; + xcb_out.key = key; + xcb_out.grabbed_device = grabbed_device; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +int +xcb_input_grab_device_button_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_grab_device_button_request_t *_aux = (xcb_input_grab_device_button_request_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + + xcb_block_len += sizeof(xcb_input_grab_device_button_request_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* classes */ + xcb_block_len += _aux->num_classes * sizeof(xcb_input_event_class_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_input_event_class_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +xcb_void_cookie_t +xcb_input_grab_device_button_checked (xcb_connection_t *c, + xcb_window_t grab_window, + uint8_t grabbed_device, + uint8_t modifier_device, + uint16_t num_classes, + uint16_t modifiers, + uint8_t this_device_mode, + uint8_t other_device_mode, + uint8_t button, + uint8_t owner_events, + const xcb_input_event_class_t *classes) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 4, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_GRAB_DEVICE_BUTTON, + .isvoid = 1 + }; + + struct iovec xcb_parts[6]; + xcb_void_cookie_t xcb_ret; + xcb_input_grab_device_button_request_t xcb_out; + + xcb_out.grab_window = grab_window; + xcb_out.grabbed_device = grabbed_device; + xcb_out.modifier_device = modifier_device; + xcb_out.num_classes = num_classes; + xcb_out.modifiers = modifiers; + xcb_out.this_device_mode = this_device_mode; + xcb_out.other_device_mode = other_device_mode; + xcb_out.button = button; + xcb_out.owner_events = owner_events; + memset(xcb_out.pad0, 0, 2); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_input_event_class_t classes */ + xcb_parts[4].iov_base = (char *) classes; + xcb_parts[4].iov_len = num_classes * sizeof(xcb_input_event_class_t); + xcb_parts[5].iov_base = 0; + xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_void_cookie_t +xcb_input_grab_device_button (xcb_connection_t *c, + xcb_window_t grab_window, + uint8_t grabbed_device, + uint8_t modifier_device, + uint16_t num_classes, + uint16_t modifiers, + uint8_t this_device_mode, + uint8_t other_device_mode, + uint8_t button, + uint8_t owner_events, + const xcb_input_event_class_t *classes) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 4, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_GRAB_DEVICE_BUTTON, + .isvoid = 1 + }; + + struct iovec xcb_parts[6]; + xcb_void_cookie_t xcb_ret; + xcb_input_grab_device_button_request_t xcb_out; + + xcb_out.grab_window = grab_window; + xcb_out.grabbed_device = grabbed_device; + xcb_out.modifier_device = modifier_device; + xcb_out.num_classes = num_classes; + xcb_out.modifiers = modifiers; + xcb_out.this_device_mode = this_device_mode; + xcb_out.other_device_mode = other_device_mode; + xcb_out.button = button; + xcb_out.owner_events = owner_events; + memset(xcb_out.pad0, 0, 2); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_input_event_class_t classes */ + xcb_parts[4].iov_base = (char *) classes; + xcb_parts[4].iov_len = num_classes * sizeof(xcb_input_event_class_t); + xcb_parts[5].iov_base = 0; + xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_event_class_t * +xcb_input_grab_device_button_classes (const xcb_input_grab_device_button_request_t *R) +{ + return (xcb_input_event_class_t *) (R + 1); +} + +int +xcb_input_grab_device_button_classes_length (const xcb_input_grab_device_button_request_t *R) +{ + return R->num_classes; +} + +xcb_generic_iterator_t +xcb_input_grab_device_button_classes_end (const xcb_input_grab_device_button_request_t *R) +{ + xcb_generic_iterator_t i; + i.data = ((xcb_input_event_class_t *) (R + 1)) + (R->num_classes); + i.rem = 0; + i.index = (char *) i.data - (char *) R; + return i; +} + +xcb_void_cookie_t +xcb_input_ungrab_device_button_checked (xcb_connection_t *c, + xcb_window_t grab_window, + uint16_t modifiers, + uint8_t modifier_device, + uint8_t button, + uint8_t grabbed_device) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_UNGRAB_DEVICE_BUTTON, + .isvoid = 1 + }; + + struct iovec xcb_parts[4]; + xcb_void_cookie_t xcb_ret; + xcb_input_ungrab_device_button_request_t xcb_out; + + xcb_out.grab_window = grab_window; + xcb_out.modifiers = modifiers; + xcb_out.modifier_device = modifier_device; + xcb_out.button = button; + xcb_out.grabbed_device = grabbed_device; + memset(xcb_out.pad0, 0, 3); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_void_cookie_t +xcb_input_ungrab_device_button (xcb_connection_t *c, + xcb_window_t grab_window, + uint16_t modifiers, + uint8_t modifier_device, + uint8_t button, + uint8_t grabbed_device) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_UNGRAB_DEVICE_BUTTON, + .isvoid = 1 + }; + + struct iovec xcb_parts[4]; + xcb_void_cookie_t xcb_ret; + xcb_input_ungrab_device_button_request_t xcb_out; + + xcb_out.grab_window = grab_window; + xcb_out.modifiers = modifiers; + xcb_out.modifier_device = modifier_device; + xcb_out.button = button; + xcb_out.grabbed_device = grabbed_device; + memset(xcb_out.pad0, 0, 3); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_void_cookie_t +xcb_input_allow_device_events_checked (xcb_connection_t *c, + xcb_timestamp_t time, + uint8_t mode, + uint8_t device_id) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_ALLOW_DEVICE_EVENTS, + .isvoid = 1 + }; + + struct iovec xcb_parts[4]; + xcb_void_cookie_t xcb_ret; + xcb_input_allow_device_events_request_t xcb_out; + + xcb_out.time = time; + xcb_out.mode = mode; + xcb_out.device_id = device_id; + memset(xcb_out.pad0, 0, 2); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_void_cookie_t +xcb_input_allow_device_events (xcb_connection_t *c, + xcb_timestamp_t time, + uint8_t mode, + uint8_t device_id) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_ALLOW_DEVICE_EVENTS, + .isvoid = 1 + }; + + struct iovec xcb_parts[4]; + xcb_void_cookie_t xcb_ret; + xcb_input_allow_device_events_request_t xcb_out; + + xcb_out.time = time; + xcb_out.mode = mode; + xcb_out.device_id = device_id; + memset(xcb_out.pad0, 0, 2); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_get_device_focus_cookie_t +xcb_input_get_device_focus (xcb_connection_t *c, + uint8_t device_id) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_GET_DEVICE_FOCUS, + .isvoid = 0 + }; + + struct iovec xcb_parts[4]; + xcb_input_get_device_focus_cookie_t xcb_ret; + xcb_input_get_device_focus_request_t xcb_out; + + xcb_out.device_id = device_id; + memset(xcb_out.pad0, 0, 3); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_get_device_focus_cookie_t +xcb_input_get_device_focus_unchecked (xcb_connection_t *c, + uint8_t device_id) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_GET_DEVICE_FOCUS, + .isvoid = 0 + }; + + struct iovec xcb_parts[4]; + xcb_input_get_device_focus_cookie_t xcb_ret; + xcb_input_get_device_focus_request_t xcb_out; + + xcb_out.device_id = device_id; + memset(xcb_out.pad0, 0, 3); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_get_device_focus_reply_t * +xcb_input_get_device_focus_reply (xcb_connection_t *c, + xcb_input_get_device_focus_cookie_t cookie /**< */, + xcb_generic_error_t **e) +{ + return (xcb_input_get_device_focus_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); +} + +xcb_void_cookie_t +xcb_input_set_device_focus_checked (xcb_connection_t *c, + xcb_window_t focus, + xcb_timestamp_t time, + uint8_t revert_to, + uint8_t device_id) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_SET_DEVICE_FOCUS, + .isvoid = 1 + }; + + struct iovec xcb_parts[4]; + xcb_void_cookie_t xcb_ret; + xcb_input_set_device_focus_request_t xcb_out; + + xcb_out.focus = focus; + xcb_out.time = time; + xcb_out.revert_to = revert_to; + xcb_out.device_id = device_id; + memset(xcb_out.pad0, 0, 2); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_void_cookie_t +xcb_input_set_device_focus (xcb_connection_t *c, + xcb_window_t focus, + xcb_timestamp_t time, + uint8_t revert_to, + uint8_t device_id) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_SET_DEVICE_FOCUS, + .isvoid = 1 + }; + + struct iovec xcb_parts[4]; + xcb_void_cookie_t xcb_ret; + xcb_input_set_device_focus_request_t xcb_out; + + xcb_out.focus = focus; + xcb_out.time = time; + xcb_out.revert_to = revert_to; + xcb_out.device_id = device_id; + memset(xcb_out.pad0, 0, 2); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +void +xcb_input_kbd_feedback_state_next (xcb_input_kbd_feedback_state_iterator_t *i) +{ + --i->rem; + ++i->data; + i->index += sizeof(xcb_input_kbd_feedback_state_t); +} + +xcb_generic_iterator_t +xcb_input_kbd_feedback_state_end (xcb_input_kbd_feedback_state_iterator_t i) +{ + xcb_generic_iterator_t ret; + ret.data = i.data + i.rem; + ret.index = i.index + ((char *) ret.data - (char *) i.data); + ret.rem = 0; + return ret; +} + +void +xcb_input_ptr_feedback_state_next (xcb_input_ptr_feedback_state_iterator_t *i) +{ + --i->rem; + ++i->data; + i->index += sizeof(xcb_input_ptr_feedback_state_t); +} + +xcb_generic_iterator_t +xcb_input_ptr_feedback_state_end (xcb_input_ptr_feedback_state_iterator_t i) +{ + xcb_generic_iterator_t ret; + ret.data = i.data + i.rem; + ret.index = i.index + ((char *) ret.data - (char *) i.data); + ret.rem = 0; + return ret; +} + +void +xcb_input_integer_feedback_state_next (xcb_input_integer_feedback_state_iterator_t *i) +{ + --i->rem; + ++i->data; + i->index += sizeof(xcb_input_integer_feedback_state_t); +} + +xcb_generic_iterator_t +xcb_input_integer_feedback_state_end (xcb_input_integer_feedback_state_iterator_t i) +{ + xcb_generic_iterator_t ret; + ret.data = i.data + i.rem; + ret.index = i.index + ((char *) ret.data - (char *) i.data); + ret.rem = 0; + return ret; +} + +int +xcb_input_string_feedback_state_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_string_feedback_state_t *_aux = (xcb_input_string_feedback_state_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + + xcb_block_len += sizeof(xcb_input_string_feedback_state_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* keysyms */ + xcb_block_len += _aux->num_keysyms * sizeof(xcb_keysym_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_keysym_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +xcb_keysym_t * +xcb_input_string_feedback_state_keysyms (const xcb_input_string_feedback_state_t *R) +{ + return (xcb_keysym_t *) (R + 1); +} + +int +xcb_input_string_feedback_state_keysyms_length (const xcb_input_string_feedback_state_t *R) +{ + return R->num_keysyms; +} + +xcb_generic_iterator_t +xcb_input_string_feedback_state_keysyms_end (const xcb_input_string_feedback_state_t *R) +{ + xcb_generic_iterator_t i; + i.data = ((xcb_keysym_t *) (R + 1)) + (R->num_keysyms); + i.rem = 0; + i.index = (char *) i.data - (char *) R; + return i; +} + +void +xcb_input_string_feedback_state_next (xcb_input_string_feedback_state_iterator_t *i) +{ + xcb_input_string_feedback_state_t *R = i->data; + xcb_generic_iterator_t child; + child.data = (xcb_input_string_feedback_state_t *)(((char *)R) + xcb_input_string_feedback_state_sizeof(R)); + i->index = (char *) child.data - (char *) i->data; + --i->rem; + i->data = (xcb_input_string_feedback_state_t *) child.data; +} + +xcb_generic_iterator_t +xcb_input_string_feedback_state_end (xcb_input_string_feedback_state_iterator_t i) +{ + xcb_generic_iterator_t ret; + while(i.rem > 0) + xcb_input_string_feedback_state_next(&i); + ret.data = i.data; + ret.rem = i.rem; + ret.index = i.index; + return ret; +} + +void +xcb_input_bell_feedback_state_next (xcb_input_bell_feedback_state_iterator_t *i) +{ + --i->rem; + ++i->data; + i->index += sizeof(xcb_input_bell_feedback_state_t); +} + +xcb_generic_iterator_t +xcb_input_bell_feedback_state_end (xcb_input_bell_feedback_state_iterator_t i) +{ + xcb_generic_iterator_t ret; + ret.data = i.data + i.rem; + ret.index = i.index + ((char *) ret.data - (char *) i.data); + ret.rem = 0; + return ret; +} + +void +xcb_input_led_feedback_state_next (xcb_input_led_feedback_state_iterator_t *i) +{ + --i->rem; + ++i->data; + i->index += sizeof(xcb_input_led_feedback_state_t); +} + +xcb_generic_iterator_t +xcb_input_led_feedback_state_end (xcb_input_led_feedback_state_iterator_t i) +{ + xcb_generic_iterator_t ret; + ret.data = i.data + i.rem; + ret.index = i.index + ((char *) ret.data - (char *) i.data); + ret.rem = 0; + return ret; +} + +xcb_keysym_t * +xcb_input_feedback_state_data_string_keysyms (const xcb_input_feedback_state_data_t *S) +{ + return S->string.keysyms; +} + +int +xcb_input_feedback_state_data_string_keysyms_length (const xcb_input_feedback_state_t *R, + const xcb_input_feedback_state_data_t *S) +{ + return S->string.num_keysyms; +} + +xcb_generic_iterator_t +xcb_input_feedback_state_data_string_keysyms_end (const xcb_input_feedback_state_t *R, + const xcb_input_feedback_state_data_t *S) +{ + xcb_generic_iterator_t i; + i.data = S->string.keysyms + S->string.num_keysyms; + i.rem = 0; + i.index = (char *) i.data - (char *) S; + return i; +} + +int +xcb_input_feedback_state_data_serialize (void **_buffer, + uint8_t class_id, + const xcb_input_feedback_state_data_t *_aux) +{ + char *xcb_out = *_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_align_to = 0; + unsigned int xcb_padding_offset = 0; + + unsigned int xcb_pad = 0; + char xcb_pad0[3] = {0, 0, 0}; + struct iovec xcb_parts[27]; + unsigned int xcb_parts_idx = 0; + unsigned int xcb_block_len = 0; + unsigned int i; + char *xcb_tmp; + + if(class_id == XCB_INPUT_FEEDBACK_CLASS_KEYBOARD) { + /* xcb_input_feedback_state_data_t.keyboard.pitch */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->keyboard.pitch; + xcb_block_len += sizeof(uint16_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint16_t); + /* xcb_input_feedback_state_data_t.keyboard.duration */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->keyboard.duration; + xcb_block_len += sizeof(uint16_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint16_t); + /* xcb_input_feedback_state_data_t.keyboard.led_mask */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->keyboard.led_mask; + xcb_block_len += sizeof(uint32_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint32_t); + /* xcb_input_feedback_state_data_t.keyboard.led_values */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->keyboard.led_values; + xcb_block_len += sizeof(uint32_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint32_t); + /* xcb_input_feedback_state_data_t.keyboard.global_auto_repeat */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->keyboard.global_auto_repeat; + xcb_block_len += sizeof(uint8_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_feedback_state_data_t.keyboard.click */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->keyboard.click; + xcb_block_len += sizeof(uint8_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_feedback_state_data_t.keyboard.percent */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->keyboard.percent; + xcb_block_len += sizeof(uint8_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_feedback_state_data_t.keyboard.pad0 */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &xcb_pad; + xcb_block_len += sizeof(uint8_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_feedback_state_data_t.keyboard.auto_repeats */ + xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->keyboard.auto_repeats; + xcb_block_len += 32; + xcb_parts[xcb_parts_idx].iov_len = 32; + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint8_t); + } + if(class_id == XCB_INPUT_FEEDBACK_CLASS_POINTER) { + /* xcb_input_feedback_state_data_t.pointer.pad1 */ + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_block_len += sizeof(uint8_t)*2; + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t)*2; + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_feedback_state_data_t.pointer.accel_num */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->pointer.accel_num; + xcb_block_len += sizeof(uint16_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint16_t); + /* xcb_input_feedback_state_data_t.pointer.accel_denom */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->pointer.accel_denom; + xcb_block_len += sizeof(uint16_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint16_t); + /* xcb_input_feedback_state_data_t.pointer.threshold */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->pointer.threshold; + xcb_block_len += sizeof(uint16_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint16_t); + } + if(class_id == XCB_INPUT_FEEDBACK_CLASS_STRING) { + /* xcb_input_feedback_state_data_t.string.max_symbols */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->string.max_symbols; + xcb_block_len += sizeof(uint16_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint16_t); + /* xcb_input_feedback_state_data_t.string.num_keysyms */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->string.num_keysyms; + xcb_block_len += sizeof(uint16_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint16_t); + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_parts[xcb_parts_idx].iov_len = xcb_pad; + xcb_parts_idx++; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + /* keysyms */ + xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->string.keysyms; + xcb_block_len += _aux->string.num_keysyms * sizeof(uint32_t); + xcb_parts[xcb_parts_idx].iov_len = _aux->string.num_keysyms * sizeof(uint32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(xcb_keysym_t); + } + if(class_id == XCB_INPUT_FEEDBACK_CLASS_INTEGER) { + /* xcb_input_feedback_state_data_t.integer.resolution */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->integer.resolution; + xcb_block_len += sizeof(uint32_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint32_t); + /* xcb_input_feedback_state_data_t.integer.min_value */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->integer.min_value; + xcb_block_len += sizeof(int32_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(int32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(int32_t); + /* xcb_input_feedback_state_data_t.integer.max_value */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->integer.max_value; + xcb_block_len += sizeof(int32_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(int32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(int32_t); + } + if(class_id == XCB_INPUT_FEEDBACK_CLASS_LED) { + /* xcb_input_feedback_state_data_t.led.led_mask */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->led.led_mask; + xcb_block_len += sizeof(uint32_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint32_t); + /* xcb_input_feedback_state_data_t.led.led_values */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->led.led_values; + xcb_block_len += sizeof(uint32_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint32_t); + } + if(class_id == XCB_INPUT_FEEDBACK_CLASS_BELL) { + /* xcb_input_feedback_state_data_t.bell.percent */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->bell.percent; + xcb_block_len += sizeof(uint8_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_feedback_state_data_t.bell.pad2 */ + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_block_len += sizeof(uint8_t)*3; + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t)*3; + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_feedback_state_data_t.bell.pitch */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->bell.pitch; + xcb_block_len += sizeof(uint16_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint16_t); + /* xcb_input_feedback_state_data_t.bell.duration */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->bell.duration; + xcb_block_len += sizeof(uint16_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint16_t); + } + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_parts[xcb_parts_idx].iov_len = xcb_pad; + xcb_parts_idx++; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + + if (NULL == xcb_out) { + /* allocate memory */ + xcb_out = malloc(xcb_buffer_len); + *_buffer = xcb_out; + } + + xcb_tmp = xcb_out; + for(i=0; i<xcb_parts_idx; i++) { + if (0 != xcb_parts[i].iov_base && 0 != xcb_parts[i].iov_len) + memcpy(xcb_tmp, xcb_parts[i].iov_base, xcb_parts[i].iov_len); + if (0 != xcb_parts[i].iov_len) + xcb_tmp += xcb_parts[i].iov_len; + } + + return xcb_buffer_len; +} + +int +xcb_input_feedback_state_data_unpack (const void *_buffer, + uint8_t class_id, + xcb_input_feedback_state_data_t *_aux) +{ + char *xcb_tmp = (char *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + unsigned int xcb_padding_offset = 0; + + + if(class_id == XCB_INPUT_FEEDBACK_CLASS_KEYBOARD) { + /* xcb_input_feedback_state_data_t.keyboard.pitch */ + _aux->keyboard.pitch = *(uint16_t *)xcb_tmp; + xcb_block_len += sizeof(uint16_t); + xcb_tmp += sizeof(uint16_t); + xcb_align_to = ALIGNOF(uint16_t); + /* xcb_input_feedback_state_data_t.keyboard.duration */ + _aux->keyboard.duration = *(uint16_t *)xcb_tmp; + xcb_block_len += sizeof(uint16_t); + xcb_tmp += sizeof(uint16_t); + xcb_align_to = ALIGNOF(uint16_t); + /* xcb_input_feedback_state_data_t.keyboard.led_mask */ + _aux->keyboard.led_mask = *(uint32_t *)xcb_tmp; + xcb_block_len += sizeof(uint32_t); + xcb_tmp += sizeof(uint32_t); + xcb_align_to = ALIGNOF(uint32_t); + /* xcb_input_feedback_state_data_t.keyboard.led_values */ + _aux->keyboard.led_values = *(uint32_t *)xcb_tmp; + xcb_block_len += sizeof(uint32_t); + xcb_tmp += sizeof(uint32_t); + xcb_align_to = ALIGNOF(uint32_t); + /* xcb_input_feedback_state_data_t.keyboard.global_auto_repeat */ + _aux->keyboard.global_auto_repeat = *(uint8_t *)xcb_tmp; + xcb_block_len += sizeof(uint8_t); + xcb_tmp += sizeof(uint8_t); + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_feedback_state_data_t.keyboard.click */ + _aux->keyboard.click = *(uint8_t *)xcb_tmp; + xcb_block_len += sizeof(uint8_t); + xcb_tmp += sizeof(uint8_t); + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_feedback_state_data_t.keyboard.percent */ + _aux->keyboard.percent = *(uint8_t *)xcb_tmp; + xcb_block_len += sizeof(uint8_t); + xcb_tmp += sizeof(uint8_t); + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_feedback_state_data_t.keyboard.pad0 */ + _aux->keyboard.pad0 = *(uint8_t *)xcb_tmp; + xcb_block_len += sizeof(uint8_t); + xcb_tmp += sizeof(uint8_t); + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_feedback_state_data_t.keyboard.auto_repeats */ + memcpy(_aux->keyboard.auto_repeats, xcb_tmp, sizeof(uint8_t) * 32); + xcb_block_len += sizeof(uint8_t) * 32; + xcb_tmp += sizeof(uint8_t) * 32; + xcb_align_to = ALIGNOF(uint8_t); + } + if(class_id == XCB_INPUT_FEEDBACK_CLASS_POINTER) { + /* xcb_input_feedback_state_data_t.pointer.pad1 */ + _aux->pointer.pad1[0] = *(uint8_t *)xcb_tmp; + _aux->pointer.pad1[1] = *(uint8_t *)xcb_tmp; + xcb_block_len += sizeof(uint8_t) * 2; + xcb_tmp += sizeof(uint8_t) * 2; + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_feedback_state_data_t.pointer.accel_num */ + _aux->pointer.accel_num = *(uint16_t *)xcb_tmp; + xcb_block_len += sizeof(uint16_t); + xcb_tmp += sizeof(uint16_t); + xcb_align_to = ALIGNOF(uint16_t); + /* xcb_input_feedback_state_data_t.pointer.accel_denom */ + _aux->pointer.accel_denom = *(uint16_t *)xcb_tmp; + xcb_block_len += sizeof(uint16_t); + xcb_tmp += sizeof(uint16_t); + xcb_align_to = ALIGNOF(uint16_t); + /* xcb_input_feedback_state_data_t.pointer.threshold */ + _aux->pointer.threshold = *(uint16_t *)xcb_tmp; + xcb_block_len += sizeof(uint16_t); + xcb_tmp += sizeof(uint16_t); + xcb_align_to = ALIGNOF(uint16_t); + } + if(class_id == XCB_INPUT_FEEDBACK_CLASS_STRING) { + /* xcb_input_feedback_state_data_t.string.max_symbols */ + _aux->string.max_symbols = *(uint16_t *)xcb_tmp; + xcb_block_len += sizeof(uint16_t); + xcb_tmp += sizeof(uint16_t); + xcb_align_to = ALIGNOF(uint16_t); + /* xcb_input_feedback_state_data_t.string.num_keysyms */ + _aux->string.num_keysyms = *(uint16_t *)xcb_tmp; + xcb_block_len += sizeof(uint16_t); + xcb_tmp += sizeof(uint16_t); + xcb_align_to = ALIGNOF(uint16_t); + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + /* keysyms */ + _aux->string.keysyms = (xcb_keysym_t *)xcb_tmp; + xcb_block_len += _aux->string.num_keysyms * sizeof(uint32_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_keysym_t); + } + if(class_id == XCB_INPUT_FEEDBACK_CLASS_INTEGER) { + /* xcb_input_feedback_state_data_t.integer.resolution */ + _aux->integer.resolution = *(uint32_t *)xcb_tmp; + xcb_block_len += sizeof(uint32_t); + xcb_tmp += sizeof(uint32_t); + xcb_align_to = ALIGNOF(uint32_t); + /* xcb_input_feedback_state_data_t.integer.min_value */ + _aux->integer.min_value = *(int32_t *)xcb_tmp; + xcb_block_len += sizeof(int32_t); + xcb_tmp += sizeof(int32_t); + xcb_align_to = ALIGNOF(int32_t); + /* xcb_input_feedback_state_data_t.integer.max_value */ + _aux->integer.max_value = *(int32_t *)xcb_tmp; + xcb_block_len += sizeof(int32_t); + xcb_tmp += sizeof(int32_t); + xcb_align_to = ALIGNOF(int32_t); + } + if(class_id == XCB_INPUT_FEEDBACK_CLASS_LED) { + /* xcb_input_feedback_state_data_t.led.led_mask */ + _aux->led.led_mask = *(uint32_t *)xcb_tmp; + xcb_block_len += sizeof(uint32_t); + xcb_tmp += sizeof(uint32_t); + xcb_align_to = ALIGNOF(uint32_t); + /* xcb_input_feedback_state_data_t.led.led_values */ + _aux->led.led_values = *(uint32_t *)xcb_tmp; + xcb_block_len += sizeof(uint32_t); + xcb_tmp += sizeof(uint32_t); + xcb_align_to = ALIGNOF(uint32_t); + } + if(class_id == XCB_INPUT_FEEDBACK_CLASS_BELL) { + /* xcb_input_feedback_state_data_t.bell.percent */ + _aux->bell.percent = *(uint8_t *)xcb_tmp; + xcb_block_len += sizeof(uint8_t); + xcb_tmp += sizeof(uint8_t); + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_feedback_state_data_t.bell.pad2 */ + _aux->bell.pad2[0] = *(uint8_t *)xcb_tmp; + _aux->bell.pad2[1] = *(uint8_t *)xcb_tmp; + _aux->bell.pad2[2] = *(uint8_t *)xcb_tmp; + xcb_block_len += sizeof(uint8_t) * 3; + xcb_tmp += sizeof(uint8_t) * 3; + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_feedback_state_data_t.bell.pitch */ + _aux->bell.pitch = *(uint16_t *)xcb_tmp; + xcb_block_len += sizeof(uint16_t); + xcb_tmp += sizeof(uint16_t); + xcb_align_to = ALIGNOF(uint16_t); + /* xcb_input_feedback_state_data_t.bell.duration */ + _aux->bell.duration = *(uint16_t *)xcb_tmp; + xcb_block_len += sizeof(uint16_t); + xcb_tmp += sizeof(uint16_t); + xcb_align_to = ALIGNOF(uint16_t); + } + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + + return xcb_buffer_len; +} + +int +xcb_input_feedback_state_data_sizeof (const void *_buffer, + uint8_t class_id) +{ + xcb_input_feedback_state_data_t _aux; + return xcb_input_feedback_state_data_unpack(_buffer, class_id, &_aux); +} + +int +xcb_input_feedback_state_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_feedback_state_t *_aux = (xcb_input_feedback_state_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + + xcb_block_len += sizeof(xcb_input_feedback_state_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* data */ + xcb_block_len += xcb_input_feedback_state_data_sizeof(xcb_tmp, _aux->class_id); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(char); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +void * +xcb_input_feedback_state_data (const xcb_input_feedback_state_t *R) +{ + return (void *) (R + 1); +} + +void +xcb_input_feedback_state_next (xcb_input_feedback_state_iterator_t *i) +{ + xcb_input_feedback_state_t *R = i->data; + xcb_generic_iterator_t child; + child.data = (xcb_input_feedback_state_t *)(((char *)R) + xcb_input_feedback_state_sizeof(R)); + i->index = (char *) child.data - (char *) i->data; + --i->rem; + i->data = (xcb_input_feedback_state_t *) child.data; +} + +xcb_generic_iterator_t +xcb_input_feedback_state_end (xcb_input_feedback_state_iterator_t i) +{ + xcb_generic_iterator_t ret; + while(i.rem > 0) + xcb_input_feedback_state_next(&i); + ret.data = i.data; + ret.rem = i.rem; + ret.index = i.index; + return ret; +} + +int +xcb_input_get_feedback_control_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_get_feedback_control_reply_t *_aux = (xcb_input_get_feedback_control_reply_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + unsigned int i; + unsigned int xcb_tmp_len; + + xcb_block_len += sizeof(xcb_input_get_feedback_control_reply_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* feedbacks */ + for(i=0; i<_aux->num_feedbacks; i++) { + xcb_tmp_len = xcb_input_feedback_state_sizeof(xcb_tmp); + xcb_block_len += xcb_tmp_len; + xcb_tmp += xcb_tmp_len; + } + xcb_align_to = ALIGNOF(xcb_input_feedback_state_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +xcb_input_get_feedback_control_cookie_t +xcb_input_get_feedback_control (xcb_connection_t *c, + uint8_t device_id) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_GET_FEEDBACK_CONTROL, + .isvoid = 0 + }; + + struct iovec xcb_parts[4]; + xcb_input_get_feedback_control_cookie_t xcb_ret; + xcb_input_get_feedback_control_request_t xcb_out; + + xcb_out.device_id = device_id; + memset(xcb_out.pad0, 0, 3); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_get_feedback_control_cookie_t +xcb_input_get_feedback_control_unchecked (xcb_connection_t *c, + uint8_t device_id) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_GET_FEEDBACK_CONTROL, + .isvoid = 0 + }; + + struct iovec xcb_parts[4]; + xcb_input_get_feedback_control_cookie_t xcb_ret; + xcb_input_get_feedback_control_request_t xcb_out; + + xcb_out.device_id = device_id; + memset(xcb_out.pad0, 0, 3); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +int +xcb_input_get_feedback_control_feedbacks_length (const xcb_input_get_feedback_control_reply_t *R) +{ + return R->num_feedbacks; +} + +xcb_input_feedback_state_iterator_t +xcb_input_get_feedback_control_feedbacks_iterator (const xcb_input_get_feedback_control_reply_t *R) +{ + xcb_input_feedback_state_iterator_t i; + i.data = (xcb_input_feedback_state_t *) (R + 1); + i.rem = R->num_feedbacks; + i.index = (char *) i.data - (char *) R; + return i; +} + +xcb_input_get_feedback_control_reply_t * +xcb_input_get_feedback_control_reply (xcb_connection_t *c, + xcb_input_get_feedback_control_cookie_t cookie /**< */, + xcb_generic_error_t **e) +{ + return (xcb_input_get_feedback_control_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); +} + +void +xcb_input_kbd_feedback_ctl_next (xcb_input_kbd_feedback_ctl_iterator_t *i) +{ + --i->rem; + ++i->data; + i->index += sizeof(xcb_input_kbd_feedback_ctl_t); +} + +xcb_generic_iterator_t +xcb_input_kbd_feedback_ctl_end (xcb_input_kbd_feedback_ctl_iterator_t i) +{ + xcb_generic_iterator_t ret; + ret.data = i.data + i.rem; + ret.index = i.index + ((char *) ret.data - (char *) i.data); + ret.rem = 0; + return ret; +} + +void +xcb_input_ptr_feedback_ctl_next (xcb_input_ptr_feedback_ctl_iterator_t *i) +{ + --i->rem; + ++i->data; + i->index += sizeof(xcb_input_ptr_feedback_ctl_t); +} + +xcb_generic_iterator_t +xcb_input_ptr_feedback_ctl_end (xcb_input_ptr_feedback_ctl_iterator_t i) +{ + xcb_generic_iterator_t ret; + ret.data = i.data + i.rem; + ret.index = i.index + ((char *) ret.data - (char *) i.data); + ret.rem = 0; + return ret; +} + +void +xcb_input_integer_feedback_ctl_next (xcb_input_integer_feedback_ctl_iterator_t *i) +{ + --i->rem; + ++i->data; + i->index += sizeof(xcb_input_integer_feedback_ctl_t); +} + +xcb_generic_iterator_t +xcb_input_integer_feedback_ctl_end (xcb_input_integer_feedback_ctl_iterator_t i) +{ + xcb_generic_iterator_t ret; + ret.data = i.data + i.rem; + ret.index = i.index + ((char *) ret.data - (char *) i.data); + ret.rem = 0; + return ret; +} + +int +xcb_input_string_feedback_ctl_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_string_feedback_ctl_t *_aux = (xcb_input_string_feedback_ctl_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + + xcb_block_len += sizeof(xcb_input_string_feedback_ctl_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* keysyms */ + xcb_block_len += _aux->num_keysyms * sizeof(xcb_keysym_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_keysym_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +xcb_keysym_t * +xcb_input_string_feedback_ctl_keysyms (const xcb_input_string_feedback_ctl_t *R) +{ + return (xcb_keysym_t *) (R + 1); +} + +int +xcb_input_string_feedback_ctl_keysyms_length (const xcb_input_string_feedback_ctl_t *R) +{ + return R->num_keysyms; +} + +xcb_generic_iterator_t +xcb_input_string_feedback_ctl_keysyms_end (const xcb_input_string_feedback_ctl_t *R) +{ + xcb_generic_iterator_t i; + i.data = ((xcb_keysym_t *) (R + 1)) + (R->num_keysyms); + i.rem = 0; + i.index = (char *) i.data - (char *) R; + return i; +} + +void +xcb_input_string_feedback_ctl_next (xcb_input_string_feedback_ctl_iterator_t *i) +{ + xcb_input_string_feedback_ctl_t *R = i->data; + xcb_generic_iterator_t child; + child.data = (xcb_input_string_feedback_ctl_t *)(((char *)R) + xcb_input_string_feedback_ctl_sizeof(R)); + i->index = (char *) child.data - (char *) i->data; + --i->rem; + i->data = (xcb_input_string_feedback_ctl_t *) child.data; +} + +xcb_generic_iterator_t +xcb_input_string_feedback_ctl_end (xcb_input_string_feedback_ctl_iterator_t i) +{ + xcb_generic_iterator_t ret; + while(i.rem > 0) + xcb_input_string_feedback_ctl_next(&i); + ret.data = i.data; + ret.rem = i.rem; + ret.index = i.index; + return ret; +} + +void +xcb_input_bell_feedback_ctl_next (xcb_input_bell_feedback_ctl_iterator_t *i) +{ + --i->rem; + ++i->data; + i->index += sizeof(xcb_input_bell_feedback_ctl_t); +} + +xcb_generic_iterator_t +xcb_input_bell_feedback_ctl_end (xcb_input_bell_feedback_ctl_iterator_t i) +{ + xcb_generic_iterator_t ret; + ret.data = i.data + i.rem; + ret.index = i.index + ((char *) ret.data - (char *) i.data); + ret.rem = 0; + return ret; +} + +void +xcb_input_led_feedback_ctl_next (xcb_input_led_feedback_ctl_iterator_t *i) +{ + --i->rem; + ++i->data; + i->index += sizeof(xcb_input_led_feedback_ctl_t); +} + +xcb_generic_iterator_t +xcb_input_led_feedback_ctl_end (xcb_input_led_feedback_ctl_iterator_t i) +{ + xcb_generic_iterator_t ret; + ret.data = i.data + i.rem; + ret.index = i.index + ((char *) ret.data - (char *) i.data); + ret.rem = 0; + return ret; +} + +xcb_keysym_t * +xcb_input_feedback_ctl_data_string_keysyms (const xcb_input_feedback_ctl_data_t *S) +{ + return S->string.keysyms; +} + +int +xcb_input_feedback_ctl_data_string_keysyms_length (const xcb_input_feedback_ctl_t *R, + const xcb_input_feedback_ctl_data_t *S) +{ + return S->string.num_keysyms; +} + +xcb_generic_iterator_t +xcb_input_feedback_ctl_data_string_keysyms_end (const xcb_input_feedback_ctl_t *R, + const xcb_input_feedback_ctl_data_t *S) +{ + xcb_generic_iterator_t i; + i.data = S->string.keysyms + S->string.num_keysyms; + i.rem = 0; + i.index = (char *) i.data - (char *) S; + return i; +} + +int +xcb_input_feedback_ctl_data_serialize (void **_buffer, + uint8_t class_id, + const xcb_input_feedback_ctl_data_t *_aux) +{ + char *xcb_out = *_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_align_to = 0; + unsigned int xcb_padding_offset = 0; + + unsigned int xcb_pad = 0; + char xcb_pad0[3] = {0, 0, 0}; + struct iovec xcb_parts[24]; + unsigned int xcb_parts_idx = 0; + unsigned int xcb_block_len = 0; + unsigned int i; + char *xcb_tmp; + + if(class_id == XCB_INPUT_FEEDBACK_CLASS_KEYBOARD) { + /* xcb_input_feedback_ctl_data_t.keyboard.key */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->keyboard.key; + xcb_block_len += sizeof(xcb_input_key_code_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_input_key_code_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(xcb_input_key_code_t); + /* xcb_input_feedback_ctl_data_t.keyboard.auto_repeat_mode */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->keyboard.auto_repeat_mode; + xcb_block_len += sizeof(uint8_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_feedback_ctl_data_t.keyboard.key_click_percent */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->keyboard.key_click_percent; + xcb_block_len += sizeof(int8_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(int8_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(int8_t); + /* xcb_input_feedback_ctl_data_t.keyboard.bell_percent */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->keyboard.bell_percent; + xcb_block_len += sizeof(int8_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(int8_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(int8_t); + /* xcb_input_feedback_ctl_data_t.keyboard.bell_pitch */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->keyboard.bell_pitch; + xcb_block_len += sizeof(int16_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(int16_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(int16_t); + /* xcb_input_feedback_ctl_data_t.keyboard.bell_duration */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->keyboard.bell_duration; + xcb_block_len += sizeof(int16_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(int16_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(int16_t); + /* xcb_input_feedback_ctl_data_t.keyboard.led_mask */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->keyboard.led_mask; + xcb_block_len += sizeof(uint32_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint32_t); + /* xcb_input_feedback_ctl_data_t.keyboard.led_values */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->keyboard.led_values; + xcb_block_len += sizeof(uint32_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint32_t); + } + if(class_id == XCB_INPUT_FEEDBACK_CLASS_POINTER) { + /* xcb_input_feedback_ctl_data_t.pointer.pad0 */ + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_block_len += sizeof(uint8_t)*2; + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t)*2; + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_feedback_ctl_data_t.pointer.num */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->pointer.num; + xcb_block_len += sizeof(int16_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(int16_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(int16_t); + /* xcb_input_feedback_ctl_data_t.pointer.denom */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->pointer.denom; + xcb_block_len += sizeof(int16_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(int16_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(int16_t); + /* xcb_input_feedback_ctl_data_t.pointer.threshold */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->pointer.threshold; + xcb_block_len += sizeof(int16_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(int16_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(int16_t); + } + if(class_id == XCB_INPUT_FEEDBACK_CLASS_STRING) { + /* xcb_input_feedback_ctl_data_t.string.pad1 */ + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_block_len += sizeof(uint8_t)*2; + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t)*2; + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_feedback_ctl_data_t.string.num_keysyms */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->string.num_keysyms; + xcb_block_len += sizeof(uint16_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint16_t); + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_parts[xcb_parts_idx].iov_len = xcb_pad; + xcb_parts_idx++; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + /* keysyms */ + xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->string.keysyms; + xcb_block_len += _aux->string.num_keysyms * sizeof(uint32_t); + xcb_parts[xcb_parts_idx].iov_len = _aux->string.num_keysyms * sizeof(uint32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(xcb_keysym_t); + } + if(class_id == XCB_INPUT_FEEDBACK_CLASS_INTEGER) { + /* xcb_input_feedback_ctl_data_t.integer.int_to_display */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->integer.int_to_display; + xcb_block_len += sizeof(int32_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(int32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(int32_t); + } + if(class_id == XCB_INPUT_FEEDBACK_CLASS_LED) { + /* xcb_input_feedback_ctl_data_t.led.led_mask */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->led.led_mask; + xcb_block_len += sizeof(uint32_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint32_t); + /* xcb_input_feedback_ctl_data_t.led.led_values */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->led.led_values; + xcb_block_len += sizeof(uint32_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint32_t); + } + if(class_id == XCB_INPUT_FEEDBACK_CLASS_BELL) { + /* xcb_input_feedback_ctl_data_t.bell.percent */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->bell.percent; + xcb_block_len += sizeof(int8_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(int8_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(int8_t); + /* xcb_input_feedback_ctl_data_t.bell.pad2 */ + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_block_len += sizeof(uint8_t)*3; + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t)*3; + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_feedback_ctl_data_t.bell.pitch */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->bell.pitch; + xcb_block_len += sizeof(int16_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(int16_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(int16_t); + /* xcb_input_feedback_ctl_data_t.bell.duration */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->bell.duration; + xcb_block_len += sizeof(int16_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(int16_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(int16_t); + } + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_parts[xcb_parts_idx].iov_len = xcb_pad; + xcb_parts_idx++; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + + if (NULL == xcb_out) { + /* allocate memory */ + xcb_out = malloc(xcb_buffer_len); + *_buffer = xcb_out; + } + + xcb_tmp = xcb_out; + for(i=0; i<xcb_parts_idx; i++) { + if (0 != xcb_parts[i].iov_base && 0 != xcb_parts[i].iov_len) + memcpy(xcb_tmp, xcb_parts[i].iov_base, xcb_parts[i].iov_len); + if (0 != xcb_parts[i].iov_len) + xcb_tmp += xcb_parts[i].iov_len; + } + + return xcb_buffer_len; +} + +int +xcb_input_feedback_ctl_data_unpack (const void *_buffer, + uint8_t class_id, + xcb_input_feedback_ctl_data_t *_aux) +{ + char *xcb_tmp = (char *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + unsigned int xcb_padding_offset = 0; + + + if(class_id == XCB_INPUT_FEEDBACK_CLASS_KEYBOARD) { + /* xcb_input_feedback_ctl_data_t.keyboard.key */ + _aux->keyboard.key = *(xcb_input_key_code_t *)xcb_tmp; + xcb_block_len += sizeof(xcb_input_key_code_t); + xcb_tmp += sizeof(xcb_input_key_code_t); + xcb_align_to = ALIGNOF(xcb_input_key_code_t); + /* xcb_input_feedback_ctl_data_t.keyboard.auto_repeat_mode */ + _aux->keyboard.auto_repeat_mode = *(uint8_t *)xcb_tmp; + xcb_block_len += sizeof(uint8_t); + xcb_tmp += sizeof(uint8_t); + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_feedback_ctl_data_t.keyboard.key_click_percent */ + _aux->keyboard.key_click_percent = *(int8_t *)xcb_tmp; + xcb_block_len += sizeof(int8_t); + xcb_tmp += sizeof(int8_t); + xcb_align_to = ALIGNOF(int8_t); + /* xcb_input_feedback_ctl_data_t.keyboard.bell_percent */ + _aux->keyboard.bell_percent = *(int8_t *)xcb_tmp; + xcb_block_len += sizeof(int8_t); + xcb_tmp += sizeof(int8_t); + xcb_align_to = ALIGNOF(int8_t); + /* xcb_input_feedback_ctl_data_t.keyboard.bell_pitch */ + _aux->keyboard.bell_pitch = *(int16_t *)xcb_tmp; + xcb_block_len += sizeof(int16_t); + xcb_tmp += sizeof(int16_t); + xcb_align_to = ALIGNOF(int16_t); + /* xcb_input_feedback_ctl_data_t.keyboard.bell_duration */ + _aux->keyboard.bell_duration = *(int16_t *)xcb_tmp; + xcb_block_len += sizeof(int16_t); + xcb_tmp += sizeof(int16_t); + xcb_align_to = ALIGNOF(int16_t); + /* xcb_input_feedback_ctl_data_t.keyboard.led_mask */ + _aux->keyboard.led_mask = *(uint32_t *)xcb_tmp; + xcb_block_len += sizeof(uint32_t); + xcb_tmp += sizeof(uint32_t); + xcb_align_to = ALIGNOF(uint32_t); + /* xcb_input_feedback_ctl_data_t.keyboard.led_values */ + _aux->keyboard.led_values = *(uint32_t *)xcb_tmp; + xcb_block_len += sizeof(uint32_t); + xcb_tmp += sizeof(uint32_t); + xcb_align_to = ALIGNOF(uint32_t); + } + if(class_id == XCB_INPUT_FEEDBACK_CLASS_POINTER) { + /* xcb_input_feedback_ctl_data_t.pointer.pad0 */ + _aux->pointer.pad0[0] = *(uint8_t *)xcb_tmp; + _aux->pointer.pad0[1] = *(uint8_t *)xcb_tmp; + xcb_block_len += sizeof(uint8_t) * 2; + xcb_tmp += sizeof(uint8_t) * 2; + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_feedback_ctl_data_t.pointer.num */ + _aux->pointer.num = *(int16_t *)xcb_tmp; + xcb_block_len += sizeof(int16_t); + xcb_tmp += sizeof(int16_t); + xcb_align_to = ALIGNOF(int16_t); + /* xcb_input_feedback_ctl_data_t.pointer.denom */ + _aux->pointer.denom = *(int16_t *)xcb_tmp; + xcb_block_len += sizeof(int16_t); + xcb_tmp += sizeof(int16_t); + xcb_align_to = ALIGNOF(int16_t); + /* xcb_input_feedback_ctl_data_t.pointer.threshold */ + _aux->pointer.threshold = *(int16_t *)xcb_tmp; + xcb_block_len += sizeof(int16_t); + xcb_tmp += sizeof(int16_t); + xcb_align_to = ALIGNOF(int16_t); + } + if(class_id == XCB_INPUT_FEEDBACK_CLASS_STRING) { + /* xcb_input_feedback_ctl_data_t.string.pad1 */ + _aux->string.pad1[0] = *(uint8_t *)xcb_tmp; + _aux->string.pad1[1] = *(uint8_t *)xcb_tmp; + xcb_block_len += sizeof(uint8_t) * 2; + xcb_tmp += sizeof(uint8_t) * 2; + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_feedback_ctl_data_t.string.num_keysyms */ + _aux->string.num_keysyms = *(uint16_t *)xcb_tmp; + xcb_block_len += sizeof(uint16_t); + xcb_tmp += sizeof(uint16_t); + xcb_align_to = ALIGNOF(uint16_t); + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + /* keysyms */ + _aux->string.keysyms = (xcb_keysym_t *)xcb_tmp; + xcb_block_len += _aux->string.num_keysyms * sizeof(uint32_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_keysym_t); + } + if(class_id == XCB_INPUT_FEEDBACK_CLASS_INTEGER) { + /* xcb_input_feedback_ctl_data_t.integer.int_to_display */ + _aux->integer.int_to_display = *(int32_t *)xcb_tmp; + xcb_block_len += sizeof(int32_t); + xcb_tmp += sizeof(int32_t); + xcb_align_to = ALIGNOF(int32_t); + } + if(class_id == XCB_INPUT_FEEDBACK_CLASS_LED) { + /* xcb_input_feedback_ctl_data_t.led.led_mask */ + _aux->led.led_mask = *(uint32_t *)xcb_tmp; + xcb_block_len += sizeof(uint32_t); + xcb_tmp += sizeof(uint32_t); + xcb_align_to = ALIGNOF(uint32_t); + /* xcb_input_feedback_ctl_data_t.led.led_values */ + _aux->led.led_values = *(uint32_t *)xcb_tmp; + xcb_block_len += sizeof(uint32_t); + xcb_tmp += sizeof(uint32_t); + xcb_align_to = ALIGNOF(uint32_t); + } + if(class_id == XCB_INPUT_FEEDBACK_CLASS_BELL) { + /* xcb_input_feedback_ctl_data_t.bell.percent */ + _aux->bell.percent = *(int8_t *)xcb_tmp; + xcb_block_len += sizeof(int8_t); + xcb_tmp += sizeof(int8_t); + xcb_align_to = ALIGNOF(int8_t); + /* xcb_input_feedback_ctl_data_t.bell.pad2 */ + _aux->bell.pad2[0] = *(uint8_t *)xcb_tmp; + _aux->bell.pad2[1] = *(uint8_t *)xcb_tmp; + _aux->bell.pad2[2] = *(uint8_t *)xcb_tmp; + xcb_block_len += sizeof(uint8_t) * 3; + xcb_tmp += sizeof(uint8_t) * 3; + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_feedback_ctl_data_t.bell.pitch */ + _aux->bell.pitch = *(int16_t *)xcb_tmp; + xcb_block_len += sizeof(int16_t); + xcb_tmp += sizeof(int16_t); + xcb_align_to = ALIGNOF(int16_t); + /* xcb_input_feedback_ctl_data_t.bell.duration */ + _aux->bell.duration = *(int16_t *)xcb_tmp; + xcb_block_len += sizeof(int16_t); + xcb_tmp += sizeof(int16_t); + xcb_align_to = ALIGNOF(int16_t); + } + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + + return xcb_buffer_len; +} + +int +xcb_input_feedback_ctl_data_sizeof (const void *_buffer, + uint8_t class_id) +{ + xcb_input_feedback_ctl_data_t _aux; + return xcb_input_feedback_ctl_data_unpack(_buffer, class_id, &_aux); +} + +int +xcb_input_feedback_ctl_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_feedback_ctl_t *_aux = (xcb_input_feedback_ctl_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + + xcb_block_len += sizeof(xcb_input_feedback_ctl_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* data */ + xcb_block_len += xcb_input_feedback_ctl_data_sizeof(xcb_tmp, _aux->class_id); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(char); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +void * +xcb_input_feedback_ctl_data (const xcb_input_feedback_ctl_t *R) +{ + return (void *) (R + 1); +} + +void +xcb_input_feedback_ctl_next (xcb_input_feedback_ctl_iterator_t *i) +{ + xcb_input_feedback_ctl_t *R = i->data; + xcb_generic_iterator_t child; + child.data = (xcb_input_feedback_ctl_t *)(((char *)R) + xcb_input_feedback_ctl_sizeof(R)); + i->index = (char *) child.data - (char *) i->data; + --i->rem; + i->data = (xcb_input_feedback_ctl_t *) child.data; +} + +xcb_generic_iterator_t +xcb_input_feedback_ctl_end (xcb_input_feedback_ctl_iterator_t i) +{ + xcb_generic_iterator_t ret; + while(i.rem > 0) + xcb_input_feedback_ctl_next(&i); + ret.data = i.data; + ret.rem = i.rem; + ret.index = i.index; + return ret; +} + +int +xcb_input_change_feedback_control_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + + xcb_block_len += sizeof(xcb_input_change_feedback_control_request_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* feedback */ + xcb_block_len += xcb_input_feedback_ctl_sizeof(xcb_tmp); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_input_feedback_ctl_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +xcb_void_cookie_t +xcb_input_change_feedback_control_checked (xcb_connection_t *c, + uint32_t mask, + uint8_t device_id, + uint8_t feedback_id, + xcb_input_feedback_ctl_t *feedback) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 4, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_CHANGE_FEEDBACK_CONTROL, + .isvoid = 1 + }; + + struct iovec xcb_parts[6]; + xcb_void_cookie_t xcb_ret; + xcb_input_change_feedback_control_request_t xcb_out; + + xcb_out.mask = mask; + xcb_out.device_id = device_id; + xcb_out.feedback_id = feedback_id; + memset(xcb_out.pad0, 0, 2); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_input_feedback_ctl_t feedback */ + xcb_parts[4].iov_base = (char *) feedback; + xcb_parts[4].iov_len = + xcb_input_feedback_ctl_sizeof (feedback); + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_void_cookie_t +xcb_input_change_feedback_control (xcb_connection_t *c, + uint32_t mask, + uint8_t device_id, + uint8_t feedback_id, + xcb_input_feedback_ctl_t *feedback) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 4, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_CHANGE_FEEDBACK_CONTROL, + .isvoid = 1 + }; + + struct iovec xcb_parts[6]; + xcb_void_cookie_t xcb_ret; + xcb_input_change_feedback_control_request_t xcb_out; + + xcb_out.mask = mask; + xcb_out.device_id = device_id; + xcb_out.feedback_id = feedback_id; + memset(xcb_out.pad0, 0, 2); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_input_feedback_ctl_t feedback */ + xcb_parts[4].iov_base = (char *) feedback; + xcb_parts[4].iov_len = + xcb_input_feedback_ctl_sizeof (feedback); + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_feedback_ctl_t * +xcb_input_change_feedback_control_feedback (const xcb_input_change_feedback_control_request_t *R) +{ + return (xcb_input_feedback_ctl_t *) (R + 1); +} + +int +xcb_input_get_device_key_mapping_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_get_device_key_mapping_reply_t *_aux = (xcb_input_get_device_key_mapping_reply_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + + xcb_block_len += sizeof(xcb_input_get_device_key_mapping_reply_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* keysyms */ + xcb_block_len += _aux->length * sizeof(xcb_keysym_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_keysym_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +xcb_input_get_device_key_mapping_cookie_t +xcb_input_get_device_key_mapping (xcb_connection_t *c, + uint8_t device_id, + xcb_input_key_code_t first_keycode, + uint8_t count) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_GET_DEVICE_KEY_MAPPING, + .isvoid = 0 + }; + + struct iovec xcb_parts[4]; + xcb_input_get_device_key_mapping_cookie_t xcb_ret; + xcb_input_get_device_key_mapping_request_t xcb_out; + + xcb_out.device_id = device_id; + xcb_out.first_keycode = first_keycode; + xcb_out.count = count; + xcb_out.pad0 = 0; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_get_device_key_mapping_cookie_t +xcb_input_get_device_key_mapping_unchecked (xcb_connection_t *c, + uint8_t device_id, + xcb_input_key_code_t first_keycode, + uint8_t count) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_GET_DEVICE_KEY_MAPPING, + .isvoid = 0 + }; + + struct iovec xcb_parts[4]; + xcb_input_get_device_key_mapping_cookie_t xcb_ret; + xcb_input_get_device_key_mapping_request_t xcb_out; + + xcb_out.device_id = device_id; + xcb_out.first_keycode = first_keycode; + xcb_out.count = count; + xcb_out.pad0 = 0; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_keysym_t * +xcb_input_get_device_key_mapping_keysyms (const xcb_input_get_device_key_mapping_reply_t *R) +{ + return (xcb_keysym_t *) (R + 1); +} + +int +xcb_input_get_device_key_mapping_keysyms_length (const xcb_input_get_device_key_mapping_reply_t *R) +{ + return R->length; +} + +xcb_generic_iterator_t +xcb_input_get_device_key_mapping_keysyms_end (const xcb_input_get_device_key_mapping_reply_t *R) +{ + xcb_generic_iterator_t i; + i.data = ((xcb_keysym_t *) (R + 1)) + (R->length); + i.rem = 0; + i.index = (char *) i.data - (char *) R; + return i; +} + +xcb_input_get_device_key_mapping_reply_t * +xcb_input_get_device_key_mapping_reply (xcb_connection_t *c, + xcb_input_get_device_key_mapping_cookie_t cookie /**< */, + xcb_generic_error_t **e) +{ + return (xcb_input_get_device_key_mapping_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); +} + +int +xcb_input_change_device_key_mapping_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_change_device_key_mapping_request_t *_aux = (xcb_input_change_device_key_mapping_request_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + + xcb_block_len += sizeof(xcb_input_change_device_key_mapping_request_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* keysyms */ + xcb_block_len += (_aux->keycode_count * _aux->keysyms_per_keycode) * sizeof(xcb_keysym_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_keysym_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +xcb_void_cookie_t +xcb_input_change_device_key_mapping_checked (xcb_connection_t *c, + uint8_t device_id, + xcb_input_key_code_t first_keycode, + uint8_t keysyms_per_keycode, + uint8_t keycode_count, + const xcb_keysym_t *keysyms) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 4, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_CHANGE_DEVICE_KEY_MAPPING, + .isvoid = 1 + }; + + struct iovec xcb_parts[6]; + xcb_void_cookie_t xcb_ret; + xcb_input_change_device_key_mapping_request_t xcb_out; + + xcb_out.device_id = device_id; + xcb_out.first_keycode = first_keycode; + xcb_out.keysyms_per_keycode = keysyms_per_keycode; + xcb_out.keycode_count = keycode_count; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_keysym_t keysyms */ + xcb_parts[4].iov_base = (char *) keysyms; + xcb_parts[4].iov_len = (keycode_count * keysyms_per_keycode) * sizeof(xcb_keysym_t); + xcb_parts[5].iov_base = 0; + xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_void_cookie_t +xcb_input_change_device_key_mapping (xcb_connection_t *c, + uint8_t device_id, + xcb_input_key_code_t first_keycode, + uint8_t keysyms_per_keycode, + uint8_t keycode_count, + const xcb_keysym_t *keysyms) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 4, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_CHANGE_DEVICE_KEY_MAPPING, + .isvoid = 1 + }; + + struct iovec xcb_parts[6]; + xcb_void_cookie_t xcb_ret; + xcb_input_change_device_key_mapping_request_t xcb_out; + + xcb_out.device_id = device_id; + xcb_out.first_keycode = first_keycode; + xcb_out.keysyms_per_keycode = keysyms_per_keycode; + xcb_out.keycode_count = keycode_count; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_keysym_t keysyms */ + xcb_parts[4].iov_base = (char *) keysyms; + xcb_parts[4].iov_len = (keycode_count * keysyms_per_keycode) * sizeof(xcb_keysym_t); + xcb_parts[5].iov_base = 0; + xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_keysym_t * +xcb_input_change_device_key_mapping_keysyms (const xcb_input_change_device_key_mapping_request_t *R) +{ + return (xcb_keysym_t *) (R + 1); +} + +int +xcb_input_change_device_key_mapping_keysyms_length (const xcb_input_change_device_key_mapping_request_t *R) +{ + return (R->keycode_count * R->keysyms_per_keycode); +} + +xcb_generic_iterator_t +xcb_input_change_device_key_mapping_keysyms_end (const xcb_input_change_device_key_mapping_request_t *R) +{ + xcb_generic_iterator_t i; + i.data = ((xcb_keysym_t *) (R + 1)) + ((R->keycode_count * R->keysyms_per_keycode)); + i.rem = 0; + i.index = (char *) i.data - (char *) R; + return i; +} + +int +xcb_input_get_device_modifier_mapping_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_get_device_modifier_mapping_reply_t *_aux = (xcb_input_get_device_modifier_mapping_reply_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + + xcb_block_len += sizeof(xcb_input_get_device_modifier_mapping_reply_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* keymaps */ + xcb_block_len += (_aux->keycodes_per_modifier * 8) * sizeof(uint8_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint8_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +xcb_input_get_device_modifier_mapping_cookie_t +xcb_input_get_device_modifier_mapping (xcb_connection_t *c, + uint8_t device_id) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_GET_DEVICE_MODIFIER_MAPPING, + .isvoid = 0 + }; + + struct iovec xcb_parts[4]; + xcb_input_get_device_modifier_mapping_cookie_t xcb_ret; + xcb_input_get_device_modifier_mapping_request_t xcb_out; + + xcb_out.device_id = device_id; + memset(xcb_out.pad0, 0, 3); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_get_device_modifier_mapping_cookie_t +xcb_input_get_device_modifier_mapping_unchecked (xcb_connection_t *c, + uint8_t device_id) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_GET_DEVICE_MODIFIER_MAPPING, + .isvoid = 0 + }; + + struct iovec xcb_parts[4]; + xcb_input_get_device_modifier_mapping_cookie_t xcb_ret; + xcb_input_get_device_modifier_mapping_request_t xcb_out; + + xcb_out.device_id = device_id; + memset(xcb_out.pad0, 0, 3); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +uint8_t * +xcb_input_get_device_modifier_mapping_keymaps (const xcb_input_get_device_modifier_mapping_reply_t *R) +{ + return (uint8_t *) (R + 1); +} + +int +xcb_input_get_device_modifier_mapping_keymaps_length (const xcb_input_get_device_modifier_mapping_reply_t *R) +{ + return (R->keycodes_per_modifier * 8); +} + +xcb_generic_iterator_t +xcb_input_get_device_modifier_mapping_keymaps_end (const xcb_input_get_device_modifier_mapping_reply_t *R) +{ + xcb_generic_iterator_t i; + i.data = ((uint8_t *) (R + 1)) + ((R->keycodes_per_modifier * 8)); + i.rem = 0; + i.index = (char *) i.data - (char *) R; + return i; +} + +xcb_input_get_device_modifier_mapping_reply_t * +xcb_input_get_device_modifier_mapping_reply (xcb_connection_t *c, + xcb_input_get_device_modifier_mapping_cookie_t cookie /**< */, + xcb_generic_error_t **e) +{ + return (xcb_input_get_device_modifier_mapping_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); +} + +int +xcb_input_set_device_modifier_mapping_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_set_device_modifier_mapping_request_t *_aux = (xcb_input_set_device_modifier_mapping_request_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + + xcb_block_len += sizeof(xcb_input_set_device_modifier_mapping_request_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* keymaps */ + xcb_block_len += (_aux->keycodes_per_modifier * 8) * sizeof(uint8_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint8_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +xcb_input_set_device_modifier_mapping_cookie_t +xcb_input_set_device_modifier_mapping (xcb_connection_t *c, + uint8_t device_id, + uint8_t keycodes_per_modifier, + const uint8_t *keymaps) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 4, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_SET_DEVICE_MODIFIER_MAPPING, + .isvoid = 0 + }; + + struct iovec xcb_parts[6]; + xcb_input_set_device_modifier_mapping_cookie_t xcb_ret; + xcb_input_set_device_modifier_mapping_request_t xcb_out; + + xcb_out.device_id = device_id; + xcb_out.keycodes_per_modifier = keycodes_per_modifier; + memset(xcb_out.pad0, 0, 2); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* uint8_t keymaps */ + xcb_parts[4].iov_base = (char *) keymaps; + xcb_parts[4].iov_len = (keycodes_per_modifier * 8) * sizeof(uint8_t); + xcb_parts[5].iov_base = 0; + xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_set_device_modifier_mapping_cookie_t +xcb_input_set_device_modifier_mapping_unchecked (xcb_connection_t *c, + uint8_t device_id, + uint8_t keycodes_per_modifier, + const uint8_t *keymaps) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 4, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_SET_DEVICE_MODIFIER_MAPPING, + .isvoid = 0 + }; + + struct iovec xcb_parts[6]; + xcb_input_set_device_modifier_mapping_cookie_t xcb_ret; + xcb_input_set_device_modifier_mapping_request_t xcb_out; + + xcb_out.device_id = device_id; + xcb_out.keycodes_per_modifier = keycodes_per_modifier; + memset(xcb_out.pad0, 0, 2); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* uint8_t keymaps */ + xcb_parts[4].iov_base = (char *) keymaps; + xcb_parts[4].iov_len = (keycodes_per_modifier * 8) * sizeof(uint8_t); + xcb_parts[5].iov_base = 0; + xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_set_device_modifier_mapping_reply_t * +xcb_input_set_device_modifier_mapping_reply (xcb_connection_t *c, + xcb_input_set_device_modifier_mapping_cookie_t cookie /**< */, + xcb_generic_error_t **e) +{ + return (xcb_input_set_device_modifier_mapping_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); +} + +int +xcb_input_get_device_button_mapping_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_get_device_button_mapping_reply_t *_aux = (xcb_input_get_device_button_mapping_reply_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + + xcb_block_len += sizeof(xcb_input_get_device_button_mapping_reply_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* map */ + xcb_block_len += _aux->map_size * sizeof(uint8_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint8_t); + xcb_align_to = 4; + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +xcb_input_get_device_button_mapping_cookie_t +xcb_input_get_device_button_mapping (xcb_connection_t *c, + uint8_t device_id) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_GET_DEVICE_BUTTON_MAPPING, + .isvoid = 0 + }; + + struct iovec xcb_parts[4]; + xcb_input_get_device_button_mapping_cookie_t xcb_ret; + xcb_input_get_device_button_mapping_request_t xcb_out; + + xcb_out.device_id = device_id; + memset(xcb_out.pad0, 0, 3); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_get_device_button_mapping_cookie_t +xcb_input_get_device_button_mapping_unchecked (xcb_connection_t *c, + uint8_t device_id) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_GET_DEVICE_BUTTON_MAPPING, + .isvoid = 0 + }; + + struct iovec xcb_parts[4]; + xcb_input_get_device_button_mapping_cookie_t xcb_ret; + xcb_input_get_device_button_mapping_request_t xcb_out; + + xcb_out.device_id = device_id; + memset(xcb_out.pad0, 0, 3); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +uint8_t * +xcb_input_get_device_button_mapping_map (const xcb_input_get_device_button_mapping_reply_t *R) +{ + return (uint8_t *) (R + 1); +} + +int +xcb_input_get_device_button_mapping_map_length (const xcb_input_get_device_button_mapping_reply_t *R) +{ + return R->map_size; +} + +xcb_generic_iterator_t +xcb_input_get_device_button_mapping_map_end (const xcb_input_get_device_button_mapping_reply_t *R) +{ + xcb_generic_iterator_t i; + i.data = ((uint8_t *) (R + 1)) + (R->map_size); + i.rem = 0; + i.index = (char *) i.data - (char *) R; + return i; +} + +xcb_input_get_device_button_mapping_reply_t * +xcb_input_get_device_button_mapping_reply (xcb_connection_t *c, + xcb_input_get_device_button_mapping_cookie_t cookie /**< */, + xcb_generic_error_t **e) +{ + return (xcb_input_get_device_button_mapping_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); +} + +int +xcb_input_set_device_button_mapping_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_set_device_button_mapping_request_t *_aux = (xcb_input_set_device_button_mapping_request_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + + xcb_block_len += sizeof(xcb_input_set_device_button_mapping_request_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* map */ + xcb_block_len += _aux->map_size * sizeof(uint8_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint8_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +xcb_input_set_device_button_mapping_cookie_t +xcb_input_set_device_button_mapping (xcb_connection_t *c, + uint8_t device_id, + uint8_t map_size, + const uint8_t *map) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 4, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_SET_DEVICE_BUTTON_MAPPING, + .isvoid = 0 + }; + + struct iovec xcb_parts[6]; + xcb_input_set_device_button_mapping_cookie_t xcb_ret; + xcb_input_set_device_button_mapping_request_t xcb_out; + + xcb_out.device_id = device_id; + xcb_out.map_size = map_size; + memset(xcb_out.pad0, 0, 2); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* uint8_t map */ + xcb_parts[4].iov_base = (char *) map; + xcb_parts[4].iov_len = map_size * sizeof(uint8_t); + xcb_parts[5].iov_base = 0; + xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_set_device_button_mapping_cookie_t +xcb_input_set_device_button_mapping_unchecked (xcb_connection_t *c, + uint8_t device_id, + uint8_t map_size, + const uint8_t *map) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 4, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_SET_DEVICE_BUTTON_MAPPING, + .isvoid = 0 + }; + + struct iovec xcb_parts[6]; + xcb_input_set_device_button_mapping_cookie_t xcb_ret; + xcb_input_set_device_button_mapping_request_t xcb_out; + + xcb_out.device_id = device_id; + xcb_out.map_size = map_size; + memset(xcb_out.pad0, 0, 2); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* uint8_t map */ + xcb_parts[4].iov_base = (char *) map; + xcb_parts[4].iov_len = map_size * sizeof(uint8_t); + xcb_parts[5].iov_base = 0; + xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_set_device_button_mapping_reply_t * +xcb_input_set_device_button_mapping_reply (xcb_connection_t *c, + xcb_input_set_device_button_mapping_cookie_t cookie /**< */, + xcb_generic_error_t **e) +{ + return (xcb_input_set_device_button_mapping_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); +} + +void +xcb_input_key_state_next (xcb_input_key_state_iterator_t *i) +{ + --i->rem; + ++i->data; + i->index += sizeof(xcb_input_key_state_t); +} + +xcb_generic_iterator_t +xcb_input_key_state_end (xcb_input_key_state_iterator_t i) +{ + xcb_generic_iterator_t ret; + ret.data = i.data + i.rem; + ret.index = i.index + ((char *) ret.data - (char *) i.data); + ret.rem = 0; + return ret; +} + +void +xcb_input_button_state_next (xcb_input_button_state_iterator_t *i) +{ + --i->rem; + ++i->data; + i->index += sizeof(xcb_input_button_state_t); +} + +xcb_generic_iterator_t +xcb_input_button_state_end (xcb_input_button_state_iterator_t i) +{ + xcb_generic_iterator_t ret; + ret.data = i.data + i.rem; + ret.index = i.index + ((char *) ret.data - (char *) i.data); + ret.rem = 0; + return ret; +} + +int +xcb_input_valuator_state_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_valuator_state_t *_aux = (xcb_input_valuator_state_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + + xcb_block_len += sizeof(xcb_input_valuator_state_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* valuators */ + xcb_block_len += _aux->num_valuators * sizeof(int32_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(int32_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +int32_t * +xcb_input_valuator_state_valuators (const xcb_input_valuator_state_t *R) +{ + return (int32_t *) (R + 1); +} + +int +xcb_input_valuator_state_valuators_length (const xcb_input_valuator_state_t *R) +{ + return R->num_valuators; +} + +xcb_generic_iterator_t +xcb_input_valuator_state_valuators_end (const xcb_input_valuator_state_t *R) +{ + xcb_generic_iterator_t i; + i.data = ((int32_t *) (R + 1)) + (R->num_valuators); + i.rem = 0; + i.index = (char *) i.data - (char *) R; + return i; +} + +void +xcb_input_valuator_state_next (xcb_input_valuator_state_iterator_t *i) +{ + xcb_input_valuator_state_t *R = i->data; + xcb_generic_iterator_t child; + child.data = (xcb_input_valuator_state_t *)(((char *)R) + xcb_input_valuator_state_sizeof(R)); + i->index = (char *) child.data - (char *) i->data; + --i->rem; + i->data = (xcb_input_valuator_state_t *) child.data; +} + +xcb_generic_iterator_t +xcb_input_valuator_state_end (xcb_input_valuator_state_iterator_t i) +{ + xcb_generic_iterator_t ret; + while(i.rem > 0) + xcb_input_valuator_state_next(&i); + ret.data = i.data; + ret.rem = i.rem; + ret.index = i.index; + return ret; +} + +int32_t * +xcb_input_input_state_data_valuator_valuators (const xcb_input_input_state_data_t *S) +{ + return S->valuator.valuators; +} + +int +xcb_input_input_state_data_valuator_valuators_length (const xcb_input_input_state_t *R, + const xcb_input_input_state_data_t *S) +{ + return S->valuator.num_valuators; +} + +xcb_generic_iterator_t +xcb_input_input_state_data_valuator_valuators_end (const xcb_input_input_state_t *R, + const xcb_input_input_state_data_t *S) +{ + xcb_generic_iterator_t i; + i.data = S->valuator.valuators + S->valuator.num_valuators; + i.rem = 0; + i.index = (char *) i.data - (char *) S; + return i; +} + +int +xcb_input_input_state_data_serialize (void **_buffer, + uint8_t class_id, + const xcb_input_input_state_data_t *_aux) +{ + char *xcb_out = *_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_align_to = 0; + unsigned int xcb_padding_offset = 2; + + unsigned int xcb_pad = 0; + char xcb_pad0[3] = {0, 0, 0}; + struct iovec xcb_parts[11]; + unsigned int xcb_parts_idx = 0; + unsigned int xcb_block_len = 0; + unsigned int i; + char *xcb_tmp; + + if(class_id == XCB_INPUT_INPUT_CLASS_KEY) { + /* xcb_input_input_state_data_t.key.num_keys */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->key.num_keys; + xcb_block_len += sizeof(uint8_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_input_state_data_t.key.pad0 */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &xcb_pad; + xcb_block_len += sizeof(uint8_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_input_state_data_t.key.keys */ + xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->key.keys; + xcb_block_len += 32; + xcb_parts[xcb_parts_idx].iov_len = 32; + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint8_t); + } + if(class_id == XCB_INPUT_INPUT_CLASS_BUTTON) { + /* xcb_input_input_state_data_t.button.num_buttons */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->button.num_buttons; + xcb_block_len += sizeof(uint8_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_input_state_data_t.button.pad1 */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &xcb_pad; + xcb_block_len += sizeof(uint8_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_input_state_data_t.button.buttons */ + xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->button.buttons; + xcb_block_len += 32; + xcb_parts[xcb_parts_idx].iov_len = 32; + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint8_t); + } + if(class_id == XCB_INPUT_INPUT_CLASS_VALUATOR) { + /* xcb_input_input_state_data_t.valuator.num_valuators */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->valuator.num_valuators; + xcb_block_len += sizeof(uint8_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_input_state_data_t.valuator.mode */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->valuator.mode; + xcb_block_len += sizeof(uint8_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint8_t); + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_parts[xcb_parts_idx].iov_len = xcb_pad; + xcb_parts_idx++; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + /* valuators */ + xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->valuator.valuators; + xcb_block_len += _aux->valuator.num_valuators * sizeof(int32_t); + xcb_parts[xcb_parts_idx].iov_len = _aux->valuator.num_valuators * sizeof(int32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(int32_t); + } + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_parts[xcb_parts_idx].iov_len = xcb_pad; + xcb_parts_idx++; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + + if (NULL == xcb_out) { + /* allocate memory */ + xcb_out = malloc(xcb_buffer_len); + *_buffer = xcb_out; + } + + xcb_tmp = xcb_out; + for(i=0; i<xcb_parts_idx; i++) { + if (0 != xcb_parts[i].iov_base && 0 != xcb_parts[i].iov_len) + memcpy(xcb_tmp, xcb_parts[i].iov_base, xcb_parts[i].iov_len); + if (0 != xcb_parts[i].iov_len) + xcb_tmp += xcb_parts[i].iov_len; + } + + return xcb_buffer_len; +} + +int +xcb_input_input_state_data_unpack (const void *_buffer, + uint8_t class_id, + xcb_input_input_state_data_t *_aux) +{ + char *xcb_tmp = (char *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + unsigned int xcb_padding_offset = 2; + + + if(class_id == XCB_INPUT_INPUT_CLASS_KEY) { + /* xcb_input_input_state_data_t.key.num_keys */ + _aux->key.num_keys = *(uint8_t *)xcb_tmp; + xcb_block_len += sizeof(uint8_t); + xcb_tmp += sizeof(uint8_t); + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_input_state_data_t.key.pad0 */ + _aux->key.pad0 = *(uint8_t *)xcb_tmp; + xcb_block_len += sizeof(uint8_t); + xcb_tmp += sizeof(uint8_t); + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_input_state_data_t.key.keys */ + memcpy(_aux->key.keys, xcb_tmp, sizeof(uint8_t) * 32); + xcb_block_len += sizeof(uint8_t) * 32; + xcb_tmp += sizeof(uint8_t) * 32; + xcb_align_to = ALIGNOF(uint8_t); + } + if(class_id == XCB_INPUT_INPUT_CLASS_BUTTON) { + /* xcb_input_input_state_data_t.button.num_buttons */ + _aux->button.num_buttons = *(uint8_t *)xcb_tmp; + xcb_block_len += sizeof(uint8_t); + xcb_tmp += sizeof(uint8_t); + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_input_state_data_t.button.pad1 */ + _aux->button.pad1 = *(uint8_t *)xcb_tmp; + xcb_block_len += sizeof(uint8_t); + xcb_tmp += sizeof(uint8_t); + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_input_state_data_t.button.buttons */ + memcpy(_aux->button.buttons, xcb_tmp, sizeof(uint8_t) * 32); + xcb_block_len += sizeof(uint8_t) * 32; + xcb_tmp += sizeof(uint8_t) * 32; + xcb_align_to = ALIGNOF(uint8_t); + } + if(class_id == XCB_INPUT_INPUT_CLASS_VALUATOR) { + /* xcb_input_input_state_data_t.valuator.num_valuators */ + _aux->valuator.num_valuators = *(uint8_t *)xcb_tmp; + xcb_block_len += sizeof(uint8_t); + xcb_tmp += sizeof(uint8_t); + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_input_state_data_t.valuator.mode */ + _aux->valuator.mode = *(uint8_t *)xcb_tmp; + xcb_block_len += sizeof(uint8_t); + xcb_tmp += sizeof(uint8_t); + xcb_align_to = ALIGNOF(uint8_t); + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + /* valuators */ + _aux->valuator.valuators = (int32_t *)xcb_tmp; + xcb_block_len += _aux->valuator.num_valuators * sizeof(int32_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(int32_t); + } + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + + return xcb_buffer_len; +} + +int +xcb_input_input_state_data_sizeof (const void *_buffer, + uint8_t class_id) +{ + xcb_input_input_state_data_t _aux; + return xcb_input_input_state_data_unpack(_buffer, class_id, &_aux); +} + +int +xcb_input_input_state_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_input_state_t *_aux = (xcb_input_input_state_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + + xcb_block_len += sizeof(xcb_input_input_state_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* data */ + xcb_block_len += xcb_input_input_state_data_sizeof(xcb_tmp, _aux->class_id); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(char); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +void * +xcb_input_input_state_data (const xcb_input_input_state_t *R) +{ + return (void *) (R + 1); +} + +void +xcb_input_input_state_next (xcb_input_input_state_iterator_t *i) +{ + xcb_input_input_state_t *R = i->data; + xcb_generic_iterator_t child; + child.data = (xcb_input_input_state_t *)(((char *)R) + xcb_input_input_state_sizeof(R)); + i->index = (char *) child.data - (char *) i->data; + --i->rem; + i->data = (xcb_input_input_state_t *) child.data; +} + +xcb_generic_iterator_t +xcb_input_input_state_end (xcb_input_input_state_iterator_t i) +{ + xcb_generic_iterator_t ret; + while(i.rem > 0) + xcb_input_input_state_next(&i); + ret.data = i.data; + ret.rem = i.rem; + ret.index = i.index; + return ret; +} + +int +xcb_input_query_device_state_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_query_device_state_reply_t *_aux = (xcb_input_query_device_state_reply_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + unsigned int i; + unsigned int xcb_tmp_len; + + xcb_block_len += sizeof(xcb_input_query_device_state_reply_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* classes */ + for(i=0; i<_aux->num_classes; i++) { + xcb_tmp_len = xcb_input_input_state_sizeof(xcb_tmp); + xcb_block_len += xcb_tmp_len; + xcb_tmp += xcb_tmp_len; + } + xcb_align_to = ALIGNOF(xcb_input_input_state_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +xcb_input_query_device_state_cookie_t +xcb_input_query_device_state (xcb_connection_t *c, + uint8_t device_id) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_QUERY_DEVICE_STATE, + .isvoid = 0 + }; + + struct iovec xcb_parts[4]; + xcb_input_query_device_state_cookie_t xcb_ret; + xcb_input_query_device_state_request_t xcb_out; + + xcb_out.device_id = device_id; + memset(xcb_out.pad0, 0, 3); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_query_device_state_cookie_t +xcb_input_query_device_state_unchecked (xcb_connection_t *c, + uint8_t device_id) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_QUERY_DEVICE_STATE, + .isvoid = 0 + }; + + struct iovec xcb_parts[4]; + xcb_input_query_device_state_cookie_t xcb_ret; + xcb_input_query_device_state_request_t xcb_out; + + xcb_out.device_id = device_id; + memset(xcb_out.pad0, 0, 3); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +int +xcb_input_query_device_state_classes_length (const xcb_input_query_device_state_reply_t *R) +{ + return R->num_classes; +} + +xcb_input_input_state_iterator_t +xcb_input_query_device_state_classes_iterator (const xcb_input_query_device_state_reply_t *R) +{ + xcb_input_input_state_iterator_t i; + i.data = (xcb_input_input_state_t *) (R + 1); + i.rem = R->num_classes; + i.index = (char *) i.data - (char *) R; + return i; +} + +xcb_input_query_device_state_reply_t * +xcb_input_query_device_state_reply (xcb_connection_t *c, + xcb_input_query_device_state_cookie_t cookie /**< */, + xcb_generic_error_t **e) +{ + return (xcb_input_query_device_state_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); +} + +xcb_void_cookie_t +xcb_input_device_bell_checked (xcb_connection_t *c, + uint8_t device_id, + uint8_t feedback_id, + uint8_t feedback_class, + int8_t percent) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_DEVICE_BELL, + .isvoid = 1 + }; + + struct iovec xcb_parts[4]; + xcb_void_cookie_t xcb_ret; + xcb_input_device_bell_request_t xcb_out; + + xcb_out.device_id = device_id; + xcb_out.feedback_id = feedback_id; + xcb_out.feedback_class = feedback_class; + xcb_out.percent = percent; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_void_cookie_t +xcb_input_device_bell (xcb_connection_t *c, + uint8_t device_id, + uint8_t feedback_id, + uint8_t feedback_class, + int8_t percent) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_DEVICE_BELL, + .isvoid = 1 + }; + + struct iovec xcb_parts[4]; + xcb_void_cookie_t xcb_ret; + xcb_input_device_bell_request_t xcb_out; + + xcb_out.device_id = device_id; + xcb_out.feedback_id = feedback_id; + xcb_out.feedback_class = feedback_class; + xcb_out.percent = percent; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +int +xcb_input_set_device_valuators_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_set_device_valuators_request_t *_aux = (xcb_input_set_device_valuators_request_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + + xcb_block_len += sizeof(xcb_input_set_device_valuators_request_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* valuators */ + xcb_block_len += _aux->num_valuators * sizeof(int32_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(int32_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +xcb_input_set_device_valuators_cookie_t +xcb_input_set_device_valuators (xcb_connection_t *c, + uint8_t device_id, + uint8_t first_valuator, + uint8_t num_valuators, + const int32_t *valuators) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 4, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_SET_DEVICE_VALUATORS, + .isvoid = 0 + }; + + struct iovec xcb_parts[6]; + xcb_input_set_device_valuators_cookie_t xcb_ret; + xcb_input_set_device_valuators_request_t xcb_out; + + xcb_out.device_id = device_id; + xcb_out.first_valuator = first_valuator; + xcb_out.num_valuators = num_valuators; + xcb_out.pad0 = 0; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* int32_t valuators */ + xcb_parts[4].iov_base = (char *) valuators; + xcb_parts[4].iov_len = num_valuators * sizeof(int32_t); + xcb_parts[5].iov_base = 0; + xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_set_device_valuators_cookie_t +xcb_input_set_device_valuators_unchecked (xcb_connection_t *c, + uint8_t device_id, + uint8_t first_valuator, + uint8_t num_valuators, + const int32_t *valuators) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 4, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_SET_DEVICE_VALUATORS, + .isvoid = 0 + }; + + struct iovec xcb_parts[6]; + xcb_input_set_device_valuators_cookie_t xcb_ret; + xcb_input_set_device_valuators_request_t xcb_out; + + xcb_out.device_id = device_id; + xcb_out.first_valuator = first_valuator; + xcb_out.num_valuators = num_valuators; + xcb_out.pad0 = 0; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* int32_t valuators */ + xcb_parts[4].iov_base = (char *) valuators; + xcb_parts[4].iov_len = num_valuators * sizeof(int32_t); + xcb_parts[5].iov_base = 0; + xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_set_device_valuators_reply_t * +xcb_input_set_device_valuators_reply (xcb_connection_t *c, + xcb_input_set_device_valuators_cookie_t cookie /**< */, + xcb_generic_error_t **e) +{ + return (xcb_input_set_device_valuators_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); +} + +int +xcb_input_device_resolution_state_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_device_resolution_state_t *_aux = (xcb_input_device_resolution_state_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + + xcb_block_len += sizeof(xcb_input_device_resolution_state_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* resolution_values */ + xcb_block_len += _aux->num_valuators * sizeof(uint32_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint32_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* resolution_min */ + xcb_block_len += _aux->num_valuators * sizeof(uint32_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint32_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* resolution_max */ + xcb_block_len += _aux->num_valuators * sizeof(uint32_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint32_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +uint32_t * +xcb_input_device_resolution_state_resolution_values (const xcb_input_device_resolution_state_t *R) +{ + return (uint32_t *) (R + 1); +} + +int +xcb_input_device_resolution_state_resolution_values_length (const xcb_input_device_resolution_state_t *R) +{ + return R->num_valuators; +} + +xcb_generic_iterator_t +xcb_input_device_resolution_state_resolution_values_end (const xcb_input_device_resolution_state_t *R) +{ + xcb_generic_iterator_t i; + i.data = ((uint32_t *) (R + 1)) + (R->num_valuators); + i.rem = 0; + i.index = (char *) i.data - (char *) R; + return i; +} + +uint32_t * +xcb_input_device_resolution_state_resolution_min (const xcb_input_device_resolution_state_t *R) +{ + xcb_generic_iterator_t prev = xcb_input_device_resolution_state_resolution_values_end(R); + return (uint32_t *) ((char *) prev.data + XCB_TYPE_PAD(uint32_t, prev.index) + 0); +} + +int +xcb_input_device_resolution_state_resolution_min_length (const xcb_input_device_resolution_state_t *R) +{ + return R->num_valuators; +} + +xcb_generic_iterator_t +xcb_input_device_resolution_state_resolution_min_end (const xcb_input_device_resolution_state_t *R) +{ + xcb_generic_iterator_t i; + xcb_generic_iterator_t prev = xcb_input_device_resolution_state_resolution_values_end(R); + i.data = ((uint32_t *) ((char*) prev.data + XCB_TYPE_PAD(uint32_t, prev.index))) + (R->num_valuators); + i.rem = 0; + i.index = (char *) i.data - (char *) R; + return i; +} + +uint32_t * +xcb_input_device_resolution_state_resolution_max (const xcb_input_device_resolution_state_t *R) +{ + xcb_generic_iterator_t prev = xcb_input_device_resolution_state_resolution_min_end(R); + return (uint32_t *) ((char *) prev.data + XCB_TYPE_PAD(uint32_t, prev.index) + 0); +} + +int +xcb_input_device_resolution_state_resolution_max_length (const xcb_input_device_resolution_state_t *R) +{ + return R->num_valuators; +} + +xcb_generic_iterator_t +xcb_input_device_resolution_state_resolution_max_end (const xcb_input_device_resolution_state_t *R) +{ + xcb_generic_iterator_t i; + xcb_generic_iterator_t prev = xcb_input_device_resolution_state_resolution_min_end(R); + i.data = ((uint32_t *) ((char*) prev.data + XCB_TYPE_PAD(uint32_t, prev.index))) + (R->num_valuators); + i.rem = 0; + i.index = (char *) i.data - (char *) R; + return i; +} + +void +xcb_input_device_resolution_state_next (xcb_input_device_resolution_state_iterator_t *i) +{ + xcb_input_device_resolution_state_t *R = i->data; + xcb_generic_iterator_t child; + child.data = (xcb_input_device_resolution_state_t *)(((char *)R) + xcb_input_device_resolution_state_sizeof(R)); + i->index = (char *) child.data - (char *) i->data; + --i->rem; + i->data = (xcb_input_device_resolution_state_t *) child.data; +} + +xcb_generic_iterator_t +xcb_input_device_resolution_state_end (xcb_input_device_resolution_state_iterator_t i) +{ + xcb_generic_iterator_t ret; + while(i.rem > 0) + xcb_input_device_resolution_state_next(&i); + ret.data = i.data; + ret.rem = i.rem; + ret.index = i.index; + return ret; +} + +void +xcb_input_device_abs_calib_state_next (xcb_input_device_abs_calib_state_iterator_t *i) +{ + --i->rem; + ++i->data; + i->index += sizeof(xcb_input_device_abs_calib_state_t); +} + +xcb_generic_iterator_t +xcb_input_device_abs_calib_state_end (xcb_input_device_abs_calib_state_iterator_t i) +{ + xcb_generic_iterator_t ret; + ret.data = i.data + i.rem; + ret.index = i.index + ((char *) ret.data - (char *) i.data); + ret.rem = 0; + return ret; +} + +void +xcb_input_device_abs_area_state_next (xcb_input_device_abs_area_state_iterator_t *i) +{ + --i->rem; + ++i->data; + i->index += sizeof(xcb_input_device_abs_area_state_t); +} + +xcb_generic_iterator_t +xcb_input_device_abs_area_state_end (xcb_input_device_abs_area_state_iterator_t i) +{ + xcb_generic_iterator_t ret; + ret.data = i.data + i.rem; + ret.index = i.index + ((char *) ret.data - (char *) i.data); + ret.rem = 0; + return ret; +} + +void +xcb_input_device_core_state_next (xcb_input_device_core_state_iterator_t *i) +{ + --i->rem; + ++i->data; + i->index += sizeof(xcb_input_device_core_state_t); +} + +xcb_generic_iterator_t +xcb_input_device_core_state_end (xcb_input_device_core_state_iterator_t i) +{ + xcb_generic_iterator_t ret; + ret.data = i.data + i.rem; + ret.index = i.index + ((char *) ret.data - (char *) i.data); + ret.rem = 0; + return ret; +} + +void +xcb_input_device_enable_state_next (xcb_input_device_enable_state_iterator_t *i) +{ + --i->rem; + ++i->data; + i->index += sizeof(xcb_input_device_enable_state_t); +} + +xcb_generic_iterator_t +xcb_input_device_enable_state_end (xcb_input_device_enable_state_iterator_t i) +{ + xcb_generic_iterator_t ret; + ret.data = i.data + i.rem; + ret.index = i.index + ((char *) ret.data - (char *) i.data); + ret.rem = 0; + return ret; +} + +uint32_t * +xcb_input_device_state_data_resolution_resolution_values (const xcb_input_device_state_data_t *S) +{ + return S->resolution.resolution_values; +} + +int +xcb_input_device_state_data_resolution_resolution_values_length (const xcb_input_device_state_t *R, + const xcb_input_device_state_data_t *S) +{ + return S->resolution.num_valuators; +} + +xcb_generic_iterator_t +xcb_input_device_state_data_resolution_resolution_values_end (const xcb_input_device_state_t *R, + const xcb_input_device_state_data_t *S) +{ + xcb_generic_iterator_t i; + i.data = S->resolution.resolution_values + S->resolution.num_valuators; + i.rem = 0; + i.index = (char *) i.data - (char *) S; + return i; +} + +uint32_t * +xcb_input_device_state_data_resolution_resolution_min (const xcb_input_device_state_data_t *S) +{ + return S->resolution.resolution_min; +} + +int +xcb_input_device_state_data_resolution_resolution_min_length (const xcb_input_device_state_t *R, + const xcb_input_device_state_data_t *S) +{ + return S->resolution.num_valuators; +} + +xcb_generic_iterator_t +xcb_input_device_state_data_resolution_resolution_min_end (const xcb_input_device_state_t *R, + const xcb_input_device_state_data_t *S) +{ + xcb_generic_iterator_t i; + i.data = S->resolution.resolution_min + S->resolution.num_valuators; + i.rem = 0; + i.index = (char *) i.data - (char *) S; + return i; +} + +uint32_t * +xcb_input_device_state_data_resolution_resolution_max (const xcb_input_device_state_data_t *S) +{ + return S->resolution.resolution_max; +} + +int +xcb_input_device_state_data_resolution_resolution_max_length (const xcb_input_device_state_t *R, + const xcb_input_device_state_data_t *S) +{ + return S->resolution.num_valuators; +} + +xcb_generic_iterator_t +xcb_input_device_state_data_resolution_resolution_max_end (const xcb_input_device_state_t *R, + const xcb_input_device_state_data_t *S) +{ + xcb_generic_iterator_t i; + i.data = S->resolution.resolution_max + S->resolution.num_valuators; + i.rem = 0; + i.index = (char *) i.data - (char *) S; + return i; +} + +int +xcb_input_device_state_data_serialize (void **_buffer, + uint16_t control_id, + const xcb_input_device_state_data_t *_aux) +{ + char *xcb_out = *_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_align_to = 0; + unsigned int xcb_padding_offset = 0; + + unsigned int xcb_pad = 0; + char xcb_pad0[3] = {0, 0, 0}; + struct iovec xcb_parts[27]; + unsigned int xcb_parts_idx = 0; + unsigned int xcb_block_len = 0; + unsigned int i; + char *xcb_tmp; + + if(control_id == XCB_INPUT_DEVICE_CONTROL_RESOLUTION) { + /* xcb_input_device_state_data_t.resolution.num_valuators */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->resolution.num_valuators; + xcb_block_len += sizeof(uint32_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint32_t); + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_parts[xcb_parts_idx].iov_len = xcb_pad; + xcb_parts_idx++; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + /* resolution_values */ + xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->resolution.resolution_values; + xcb_block_len += _aux->resolution.num_valuators * sizeof(uint32_t); + xcb_parts[xcb_parts_idx].iov_len = _aux->resolution.num_valuators * sizeof(uint32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint32_t); + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_parts[xcb_parts_idx].iov_len = xcb_pad; + xcb_parts_idx++; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + /* resolution_min */ + xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->resolution.resolution_min; + xcb_block_len += _aux->resolution.num_valuators * sizeof(uint32_t); + xcb_parts[xcb_parts_idx].iov_len = _aux->resolution.num_valuators * sizeof(uint32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint32_t); + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_parts[xcb_parts_idx].iov_len = xcb_pad; + xcb_parts_idx++; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + /* resolution_max */ + xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->resolution.resolution_max; + xcb_block_len += _aux->resolution.num_valuators * sizeof(uint32_t); + xcb_parts[xcb_parts_idx].iov_len = _aux->resolution.num_valuators * sizeof(uint32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint32_t); + } + if(control_id == XCB_INPUT_DEVICE_CONTROL_ABS_CALIB) { + /* xcb_input_device_state_data_t.abs_calib.min_x */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_calib.min_x; + xcb_block_len += sizeof(int32_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(int32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(int32_t); + /* xcb_input_device_state_data_t.abs_calib.max_x */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_calib.max_x; + xcb_block_len += sizeof(int32_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(int32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(int32_t); + /* xcb_input_device_state_data_t.abs_calib.min_y */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_calib.min_y; + xcb_block_len += sizeof(int32_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(int32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(int32_t); + /* xcb_input_device_state_data_t.abs_calib.max_y */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_calib.max_y; + xcb_block_len += sizeof(int32_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(int32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(int32_t); + /* xcb_input_device_state_data_t.abs_calib.flip_x */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_calib.flip_x; + xcb_block_len += sizeof(uint32_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint32_t); + /* xcb_input_device_state_data_t.abs_calib.flip_y */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_calib.flip_y; + xcb_block_len += sizeof(uint32_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint32_t); + /* xcb_input_device_state_data_t.abs_calib.rotation */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_calib.rotation; + xcb_block_len += sizeof(uint32_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint32_t); + /* xcb_input_device_state_data_t.abs_calib.button_threshold */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_calib.button_threshold; + xcb_block_len += sizeof(uint32_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint32_t); + } + if(control_id == XCB_INPUT_DEVICE_CONTROL_CORE) { + /* xcb_input_device_state_data_t.core.status */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->core.status; + xcb_block_len += sizeof(uint8_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_device_state_data_t.core.iscore */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->core.iscore; + xcb_block_len += sizeof(uint8_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_device_state_data_t.core.pad0 */ + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_block_len += sizeof(uint8_t)*2; + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t)*2; + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint8_t); + } + if(control_id == XCB_INPUT_DEVICE_CONTROL_ENABLE) { + /* xcb_input_device_state_data_t.enable.enable */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->enable.enable; + xcb_block_len += sizeof(uint8_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_device_state_data_t.enable.pad1 */ + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_block_len += sizeof(uint8_t)*3; + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t)*3; + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint8_t); + } + if(control_id == XCB_INPUT_DEVICE_CONTROL_ABS_AREA) { + /* xcb_input_device_state_data_t.abs_area.offset_x */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_area.offset_x; + xcb_block_len += sizeof(uint32_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint32_t); + /* xcb_input_device_state_data_t.abs_area.offset_y */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_area.offset_y; + xcb_block_len += sizeof(uint32_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint32_t); + /* xcb_input_device_state_data_t.abs_area.width */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_area.width; + xcb_block_len += sizeof(uint32_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint32_t); + /* xcb_input_device_state_data_t.abs_area.height */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_area.height; + xcb_block_len += sizeof(uint32_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint32_t); + /* xcb_input_device_state_data_t.abs_area.screen */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_area.screen; + xcb_block_len += sizeof(uint32_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint32_t); + /* xcb_input_device_state_data_t.abs_area.following */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_area.following; + xcb_block_len += sizeof(uint32_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint32_t); + } + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_parts[xcb_parts_idx].iov_len = xcb_pad; + xcb_parts_idx++; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + + if (NULL == xcb_out) { + /* allocate memory */ + xcb_out = malloc(xcb_buffer_len); + *_buffer = xcb_out; + } + + xcb_tmp = xcb_out; + for(i=0; i<xcb_parts_idx; i++) { + if (0 != xcb_parts[i].iov_base && 0 != xcb_parts[i].iov_len) + memcpy(xcb_tmp, xcb_parts[i].iov_base, xcb_parts[i].iov_len); + if (0 != xcb_parts[i].iov_len) + xcb_tmp += xcb_parts[i].iov_len; + } + + return xcb_buffer_len; +} + +int +xcb_input_device_state_data_unpack (const void *_buffer, + uint16_t control_id, + xcb_input_device_state_data_t *_aux) +{ + char *xcb_tmp = (char *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + unsigned int xcb_padding_offset = 0; + + + if(control_id == XCB_INPUT_DEVICE_CONTROL_RESOLUTION) { + /* xcb_input_device_state_data_t.resolution.num_valuators */ + _aux->resolution.num_valuators = *(uint32_t *)xcb_tmp; + xcb_block_len += sizeof(uint32_t); + xcb_tmp += sizeof(uint32_t); + xcb_align_to = ALIGNOF(uint32_t); + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + /* resolution_values */ + _aux->resolution.resolution_values = (uint32_t *)xcb_tmp; + xcb_block_len += _aux->resolution.num_valuators * sizeof(uint32_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint32_t); + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + /* resolution_min */ + _aux->resolution.resolution_min = (uint32_t *)xcb_tmp; + xcb_block_len += _aux->resolution.num_valuators * sizeof(uint32_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint32_t); + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + /* resolution_max */ + _aux->resolution.resolution_max = (uint32_t *)xcb_tmp; + xcb_block_len += _aux->resolution.num_valuators * sizeof(uint32_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint32_t); + } + if(control_id == XCB_INPUT_DEVICE_CONTROL_ABS_CALIB) { + /* xcb_input_device_state_data_t.abs_calib.min_x */ + _aux->abs_calib.min_x = *(int32_t *)xcb_tmp; + xcb_block_len += sizeof(int32_t); + xcb_tmp += sizeof(int32_t); + xcb_align_to = ALIGNOF(int32_t); + /* xcb_input_device_state_data_t.abs_calib.max_x */ + _aux->abs_calib.max_x = *(int32_t *)xcb_tmp; + xcb_block_len += sizeof(int32_t); + xcb_tmp += sizeof(int32_t); + xcb_align_to = ALIGNOF(int32_t); + /* xcb_input_device_state_data_t.abs_calib.min_y */ + _aux->abs_calib.min_y = *(int32_t *)xcb_tmp; + xcb_block_len += sizeof(int32_t); + xcb_tmp += sizeof(int32_t); + xcb_align_to = ALIGNOF(int32_t); + /* xcb_input_device_state_data_t.abs_calib.max_y */ + _aux->abs_calib.max_y = *(int32_t *)xcb_tmp; + xcb_block_len += sizeof(int32_t); + xcb_tmp += sizeof(int32_t); + xcb_align_to = ALIGNOF(int32_t); + /* xcb_input_device_state_data_t.abs_calib.flip_x */ + _aux->abs_calib.flip_x = *(uint32_t *)xcb_tmp; + xcb_block_len += sizeof(uint32_t); + xcb_tmp += sizeof(uint32_t); + xcb_align_to = ALIGNOF(uint32_t); + /* xcb_input_device_state_data_t.abs_calib.flip_y */ + _aux->abs_calib.flip_y = *(uint32_t *)xcb_tmp; + xcb_block_len += sizeof(uint32_t); + xcb_tmp += sizeof(uint32_t); + xcb_align_to = ALIGNOF(uint32_t); + /* xcb_input_device_state_data_t.abs_calib.rotation */ + _aux->abs_calib.rotation = *(uint32_t *)xcb_tmp; + xcb_block_len += sizeof(uint32_t); + xcb_tmp += sizeof(uint32_t); + xcb_align_to = ALIGNOF(uint32_t); + /* xcb_input_device_state_data_t.abs_calib.button_threshold */ + _aux->abs_calib.button_threshold = *(uint32_t *)xcb_tmp; + xcb_block_len += sizeof(uint32_t); + xcb_tmp += sizeof(uint32_t); + xcb_align_to = ALIGNOF(uint32_t); + } + if(control_id == XCB_INPUT_DEVICE_CONTROL_CORE) { + /* xcb_input_device_state_data_t.core.status */ + _aux->core.status = *(uint8_t *)xcb_tmp; + xcb_block_len += sizeof(uint8_t); + xcb_tmp += sizeof(uint8_t); + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_device_state_data_t.core.iscore */ + _aux->core.iscore = *(uint8_t *)xcb_tmp; + xcb_block_len += sizeof(uint8_t); + xcb_tmp += sizeof(uint8_t); + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_device_state_data_t.core.pad0 */ + _aux->core.pad0[0] = *(uint8_t *)xcb_tmp; + _aux->core.pad0[1] = *(uint8_t *)xcb_tmp; + xcb_block_len += sizeof(uint8_t) * 2; + xcb_tmp += sizeof(uint8_t) * 2; + xcb_align_to = ALIGNOF(uint8_t); + } + if(control_id == XCB_INPUT_DEVICE_CONTROL_ENABLE) { + /* xcb_input_device_state_data_t.enable.enable */ + _aux->enable.enable = *(uint8_t *)xcb_tmp; + xcb_block_len += sizeof(uint8_t); + xcb_tmp += sizeof(uint8_t); + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_device_state_data_t.enable.pad1 */ + _aux->enable.pad1[0] = *(uint8_t *)xcb_tmp; + _aux->enable.pad1[1] = *(uint8_t *)xcb_tmp; + _aux->enable.pad1[2] = *(uint8_t *)xcb_tmp; + xcb_block_len += sizeof(uint8_t) * 3; + xcb_tmp += sizeof(uint8_t) * 3; + xcb_align_to = ALIGNOF(uint8_t); + } + if(control_id == XCB_INPUT_DEVICE_CONTROL_ABS_AREA) { + /* xcb_input_device_state_data_t.abs_area.offset_x */ + _aux->abs_area.offset_x = *(uint32_t *)xcb_tmp; + xcb_block_len += sizeof(uint32_t); + xcb_tmp += sizeof(uint32_t); + xcb_align_to = ALIGNOF(uint32_t); + /* xcb_input_device_state_data_t.abs_area.offset_y */ + _aux->abs_area.offset_y = *(uint32_t *)xcb_tmp; + xcb_block_len += sizeof(uint32_t); + xcb_tmp += sizeof(uint32_t); + xcb_align_to = ALIGNOF(uint32_t); + /* xcb_input_device_state_data_t.abs_area.width */ + _aux->abs_area.width = *(uint32_t *)xcb_tmp; + xcb_block_len += sizeof(uint32_t); + xcb_tmp += sizeof(uint32_t); + xcb_align_to = ALIGNOF(uint32_t); + /* xcb_input_device_state_data_t.abs_area.height */ + _aux->abs_area.height = *(uint32_t *)xcb_tmp; + xcb_block_len += sizeof(uint32_t); + xcb_tmp += sizeof(uint32_t); + xcb_align_to = ALIGNOF(uint32_t); + /* xcb_input_device_state_data_t.abs_area.screen */ + _aux->abs_area.screen = *(uint32_t *)xcb_tmp; + xcb_block_len += sizeof(uint32_t); + xcb_tmp += sizeof(uint32_t); + xcb_align_to = ALIGNOF(uint32_t); + /* xcb_input_device_state_data_t.abs_area.following */ + _aux->abs_area.following = *(uint32_t *)xcb_tmp; + xcb_block_len += sizeof(uint32_t); + xcb_tmp += sizeof(uint32_t); + xcb_align_to = ALIGNOF(uint32_t); + } + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + + return xcb_buffer_len; +} + +int +xcb_input_device_state_data_sizeof (const void *_buffer, + uint16_t control_id) +{ + xcb_input_device_state_data_t _aux; + return xcb_input_device_state_data_unpack(_buffer, control_id, &_aux); +} + +int +xcb_input_device_state_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_device_state_t *_aux = (xcb_input_device_state_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + + xcb_block_len += sizeof(xcb_input_device_state_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* data */ + xcb_block_len += xcb_input_device_state_data_sizeof(xcb_tmp, _aux->control_id); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(char); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +void * +xcb_input_device_state_data (const xcb_input_device_state_t *R) +{ + return (void *) (R + 1); +} + +void +xcb_input_device_state_next (xcb_input_device_state_iterator_t *i) +{ + xcb_input_device_state_t *R = i->data; + xcb_generic_iterator_t child; + child.data = (xcb_input_device_state_t *)(((char *)R) + xcb_input_device_state_sizeof(R)); + i->index = (char *) child.data - (char *) i->data; + --i->rem; + i->data = (xcb_input_device_state_t *) child.data; +} + +xcb_generic_iterator_t +xcb_input_device_state_end (xcb_input_device_state_iterator_t i) +{ + xcb_generic_iterator_t ret; + while(i.rem > 0) + xcb_input_device_state_next(&i); + ret.data = i.data; + ret.rem = i.rem; + ret.index = i.index; + return ret; +} + +int +xcb_input_get_device_control_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + + xcb_block_len += sizeof(xcb_input_get_device_control_reply_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* control */ + xcb_block_len += xcb_input_device_state_sizeof(xcb_tmp); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_input_device_state_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +xcb_input_get_device_control_cookie_t +xcb_input_get_device_control (xcb_connection_t *c, + uint16_t control_id, + uint8_t device_id) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_GET_DEVICE_CONTROL, + .isvoid = 0 + }; + + struct iovec xcb_parts[4]; + xcb_input_get_device_control_cookie_t xcb_ret; + xcb_input_get_device_control_request_t xcb_out; + + xcb_out.control_id = control_id; + xcb_out.device_id = device_id; + xcb_out.pad0 = 0; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_get_device_control_cookie_t +xcb_input_get_device_control_unchecked (xcb_connection_t *c, + uint16_t control_id, + uint8_t device_id) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_GET_DEVICE_CONTROL, + .isvoid = 0 + }; + + struct iovec xcb_parts[4]; + xcb_input_get_device_control_cookie_t xcb_ret; + xcb_input_get_device_control_request_t xcb_out; + + xcb_out.control_id = control_id; + xcb_out.device_id = device_id; + xcb_out.pad0 = 0; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_device_state_t * +xcb_input_get_device_control_control (const xcb_input_get_device_control_reply_t *R) +{ + return (xcb_input_device_state_t *) (R + 1); +} + +xcb_input_get_device_control_reply_t * +xcb_input_get_device_control_reply (xcb_connection_t *c, + xcb_input_get_device_control_cookie_t cookie /**< */, + xcb_generic_error_t **e) +{ + return (xcb_input_get_device_control_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); +} + +int +xcb_input_device_resolution_ctl_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_device_resolution_ctl_t *_aux = (xcb_input_device_resolution_ctl_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + + xcb_block_len += sizeof(xcb_input_device_resolution_ctl_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* resolution_values */ + xcb_block_len += _aux->num_valuators * sizeof(uint32_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint32_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +uint32_t * +xcb_input_device_resolution_ctl_resolution_values (const xcb_input_device_resolution_ctl_t *R) +{ + return (uint32_t *) (R + 1); +} + +int +xcb_input_device_resolution_ctl_resolution_values_length (const xcb_input_device_resolution_ctl_t *R) +{ + return R->num_valuators; +} + +xcb_generic_iterator_t +xcb_input_device_resolution_ctl_resolution_values_end (const xcb_input_device_resolution_ctl_t *R) +{ + xcb_generic_iterator_t i; + i.data = ((uint32_t *) (R + 1)) + (R->num_valuators); + i.rem = 0; + i.index = (char *) i.data - (char *) R; + return i; +} + +void +xcb_input_device_resolution_ctl_next (xcb_input_device_resolution_ctl_iterator_t *i) +{ + xcb_input_device_resolution_ctl_t *R = i->data; + xcb_generic_iterator_t child; + child.data = (xcb_input_device_resolution_ctl_t *)(((char *)R) + xcb_input_device_resolution_ctl_sizeof(R)); + i->index = (char *) child.data - (char *) i->data; + --i->rem; + i->data = (xcb_input_device_resolution_ctl_t *) child.data; +} + +xcb_generic_iterator_t +xcb_input_device_resolution_ctl_end (xcb_input_device_resolution_ctl_iterator_t i) +{ + xcb_generic_iterator_t ret; + while(i.rem > 0) + xcb_input_device_resolution_ctl_next(&i); + ret.data = i.data; + ret.rem = i.rem; + ret.index = i.index; + return ret; +} + +void +xcb_input_device_abs_calib_ctl_next (xcb_input_device_abs_calib_ctl_iterator_t *i) +{ + --i->rem; + ++i->data; + i->index += sizeof(xcb_input_device_abs_calib_ctl_t); +} + +xcb_generic_iterator_t +xcb_input_device_abs_calib_ctl_end (xcb_input_device_abs_calib_ctl_iterator_t i) +{ + xcb_generic_iterator_t ret; + ret.data = i.data + i.rem; + ret.index = i.index + ((char *) ret.data - (char *) i.data); + ret.rem = 0; + return ret; +} + +void +xcb_input_device_abs_area_ctrl_next (xcb_input_device_abs_area_ctrl_iterator_t *i) +{ + --i->rem; + ++i->data; + i->index += sizeof(xcb_input_device_abs_area_ctrl_t); +} + +xcb_generic_iterator_t +xcb_input_device_abs_area_ctrl_end (xcb_input_device_abs_area_ctrl_iterator_t i) +{ + xcb_generic_iterator_t ret; + ret.data = i.data + i.rem; + ret.index = i.index + ((char *) ret.data - (char *) i.data); + ret.rem = 0; + return ret; +} + +void +xcb_input_device_core_ctrl_next (xcb_input_device_core_ctrl_iterator_t *i) +{ + --i->rem; + ++i->data; + i->index += sizeof(xcb_input_device_core_ctrl_t); +} + +xcb_generic_iterator_t +xcb_input_device_core_ctrl_end (xcb_input_device_core_ctrl_iterator_t i) +{ + xcb_generic_iterator_t ret; + ret.data = i.data + i.rem; + ret.index = i.index + ((char *) ret.data - (char *) i.data); + ret.rem = 0; + return ret; +} + +void +xcb_input_device_enable_ctrl_next (xcb_input_device_enable_ctrl_iterator_t *i) +{ + --i->rem; + ++i->data; + i->index += sizeof(xcb_input_device_enable_ctrl_t); +} + +xcb_generic_iterator_t +xcb_input_device_enable_ctrl_end (xcb_input_device_enable_ctrl_iterator_t i) +{ + xcb_generic_iterator_t ret; + ret.data = i.data + i.rem; + ret.index = i.index + ((char *) ret.data - (char *) i.data); + ret.rem = 0; + return ret; +} + +uint32_t * +xcb_input_device_ctl_data_resolution_resolution_values (const xcb_input_device_ctl_data_t *S) +{ + return S->resolution.resolution_values; +} + +int +xcb_input_device_ctl_data_resolution_resolution_values_length (const xcb_input_device_ctl_t *R, + const xcb_input_device_ctl_data_t *S) +{ + return S->resolution.num_valuators; +} + +xcb_generic_iterator_t +xcb_input_device_ctl_data_resolution_resolution_values_end (const xcb_input_device_ctl_t *R, + const xcb_input_device_ctl_data_t *S) +{ + xcb_generic_iterator_t i; + i.data = S->resolution.resolution_values + S->resolution.num_valuators; + i.rem = 0; + i.index = (char *) i.data - (char *) S; + return i; +} + +int +xcb_input_device_ctl_data_serialize (void **_buffer, + uint16_t control_id, + const xcb_input_device_ctl_data_t *_aux) +{ + char *xcb_out = *_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_align_to = 0; + unsigned int xcb_padding_offset = 0; + + unsigned int xcb_pad = 0; + char xcb_pad0[3] = {0, 0, 0}; + struct iovec xcb_parts[24]; + unsigned int xcb_parts_idx = 0; + unsigned int xcb_block_len = 0; + unsigned int i; + char *xcb_tmp; + + if(control_id == XCB_INPUT_DEVICE_CONTROL_RESOLUTION) { + /* xcb_input_device_ctl_data_t.resolution.first_valuator */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->resolution.first_valuator; + xcb_block_len += sizeof(uint8_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_device_ctl_data_t.resolution.num_valuators */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->resolution.num_valuators; + xcb_block_len += sizeof(uint8_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_device_ctl_data_t.resolution.pad0 */ + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_block_len += sizeof(uint8_t)*2; + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t)*2; + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint8_t); + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_parts[xcb_parts_idx].iov_len = xcb_pad; + xcb_parts_idx++; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + /* resolution_values */ + xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->resolution.resolution_values; + xcb_block_len += _aux->resolution.num_valuators * sizeof(uint32_t); + xcb_parts[xcb_parts_idx].iov_len = _aux->resolution.num_valuators * sizeof(uint32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint32_t); + } + if(control_id == XCB_INPUT_DEVICE_CONTROL_ABS_CALIB) { + /* xcb_input_device_ctl_data_t.abs_calib.min_x */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_calib.min_x; + xcb_block_len += sizeof(int32_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(int32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(int32_t); + /* xcb_input_device_ctl_data_t.abs_calib.max_x */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_calib.max_x; + xcb_block_len += sizeof(int32_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(int32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(int32_t); + /* xcb_input_device_ctl_data_t.abs_calib.min_y */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_calib.min_y; + xcb_block_len += sizeof(int32_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(int32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(int32_t); + /* xcb_input_device_ctl_data_t.abs_calib.max_y */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_calib.max_y; + xcb_block_len += sizeof(int32_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(int32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(int32_t); + /* xcb_input_device_ctl_data_t.abs_calib.flip_x */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_calib.flip_x; + xcb_block_len += sizeof(uint32_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint32_t); + /* xcb_input_device_ctl_data_t.abs_calib.flip_y */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_calib.flip_y; + xcb_block_len += sizeof(uint32_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint32_t); + /* xcb_input_device_ctl_data_t.abs_calib.rotation */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_calib.rotation; + xcb_block_len += sizeof(uint32_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint32_t); + /* xcb_input_device_ctl_data_t.abs_calib.button_threshold */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_calib.button_threshold; + xcb_block_len += sizeof(uint32_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint32_t); + } + if(control_id == XCB_INPUT_DEVICE_CONTROL_CORE) { + /* xcb_input_device_ctl_data_t.core.status */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->core.status; + xcb_block_len += sizeof(uint8_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_device_ctl_data_t.core.pad1 */ + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_block_len += sizeof(uint8_t)*3; + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t)*3; + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint8_t); + } + if(control_id == XCB_INPUT_DEVICE_CONTROL_ENABLE) { + /* xcb_input_device_ctl_data_t.enable.enable */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->enable.enable; + xcb_block_len += sizeof(uint8_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_device_ctl_data_t.enable.pad2 */ + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_block_len += sizeof(uint8_t)*3; + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t)*3; + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint8_t); + } + if(control_id == XCB_INPUT_DEVICE_CONTROL_ABS_AREA) { + /* xcb_input_device_ctl_data_t.abs_area.offset_x */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_area.offset_x; + xcb_block_len += sizeof(uint32_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint32_t); + /* xcb_input_device_ctl_data_t.abs_area.offset_y */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_area.offset_y; + xcb_block_len += sizeof(uint32_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint32_t); + /* xcb_input_device_ctl_data_t.abs_area.width */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_area.width; + xcb_block_len += sizeof(int32_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(int32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(int32_t); + /* xcb_input_device_ctl_data_t.abs_area.height */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_area.height; + xcb_block_len += sizeof(int32_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(int32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(int32_t); + /* xcb_input_device_ctl_data_t.abs_area.screen */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_area.screen; + xcb_block_len += sizeof(int32_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(int32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(int32_t); + /* xcb_input_device_ctl_data_t.abs_area.following */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->abs_area.following; + xcb_block_len += sizeof(uint32_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint32_t); + } + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_parts[xcb_parts_idx].iov_len = xcb_pad; + xcb_parts_idx++; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + + if (NULL == xcb_out) { + /* allocate memory */ + xcb_out = malloc(xcb_buffer_len); + *_buffer = xcb_out; + } + + xcb_tmp = xcb_out; + for(i=0; i<xcb_parts_idx; i++) { + if (0 != xcb_parts[i].iov_base && 0 != xcb_parts[i].iov_len) + memcpy(xcb_tmp, xcb_parts[i].iov_base, xcb_parts[i].iov_len); + if (0 != xcb_parts[i].iov_len) + xcb_tmp += xcb_parts[i].iov_len; + } + + return xcb_buffer_len; +} + +int +xcb_input_device_ctl_data_unpack (const void *_buffer, + uint16_t control_id, + xcb_input_device_ctl_data_t *_aux) +{ + char *xcb_tmp = (char *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + unsigned int xcb_padding_offset = 0; + + + if(control_id == XCB_INPUT_DEVICE_CONTROL_RESOLUTION) { + /* xcb_input_device_ctl_data_t.resolution.first_valuator */ + _aux->resolution.first_valuator = *(uint8_t *)xcb_tmp; + xcb_block_len += sizeof(uint8_t); + xcb_tmp += sizeof(uint8_t); + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_device_ctl_data_t.resolution.num_valuators */ + _aux->resolution.num_valuators = *(uint8_t *)xcb_tmp; + xcb_block_len += sizeof(uint8_t); + xcb_tmp += sizeof(uint8_t); + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_device_ctl_data_t.resolution.pad0 */ + _aux->resolution.pad0[0] = *(uint8_t *)xcb_tmp; + _aux->resolution.pad0[1] = *(uint8_t *)xcb_tmp; + xcb_block_len += sizeof(uint8_t) * 2; + xcb_tmp += sizeof(uint8_t) * 2; + xcb_align_to = ALIGNOF(uint8_t); + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + /* resolution_values */ + _aux->resolution.resolution_values = (uint32_t *)xcb_tmp; + xcb_block_len += _aux->resolution.num_valuators * sizeof(uint32_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint32_t); + } + if(control_id == XCB_INPUT_DEVICE_CONTROL_ABS_CALIB) { + /* xcb_input_device_ctl_data_t.abs_calib.min_x */ + _aux->abs_calib.min_x = *(int32_t *)xcb_tmp; + xcb_block_len += sizeof(int32_t); + xcb_tmp += sizeof(int32_t); + xcb_align_to = ALIGNOF(int32_t); + /* xcb_input_device_ctl_data_t.abs_calib.max_x */ + _aux->abs_calib.max_x = *(int32_t *)xcb_tmp; + xcb_block_len += sizeof(int32_t); + xcb_tmp += sizeof(int32_t); + xcb_align_to = ALIGNOF(int32_t); + /* xcb_input_device_ctl_data_t.abs_calib.min_y */ + _aux->abs_calib.min_y = *(int32_t *)xcb_tmp; + xcb_block_len += sizeof(int32_t); + xcb_tmp += sizeof(int32_t); + xcb_align_to = ALIGNOF(int32_t); + /* xcb_input_device_ctl_data_t.abs_calib.max_y */ + _aux->abs_calib.max_y = *(int32_t *)xcb_tmp; + xcb_block_len += sizeof(int32_t); + xcb_tmp += sizeof(int32_t); + xcb_align_to = ALIGNOF(int32_t); + /* xcb_input_device_ctl_data_t.abs_calib.flip_x */ + _aux->abs_calib.flip_x = *(uint32_t *)xcb_tmp; + xcb_block_len += sizeof(uint32_t); + xcb_tmp += sizeof(uint32_t); + xcb_align_to = ALIGNOF(uint32_t); + /* xcb_input_device_ctl_data_t.abs_calib.flip_y */ + _aux->abs_calib.flip_y = *(uint32_t *)xcb_tmp; + xcb_block_len += sizeof(uint32_t); + xcb_tmp += sizeof(uint32_t); + xcb_align_to = ALIGNOF(uint32_t); + /* xcb_input_device_ctl_data_t.abs_calib.rotation */ + _aux->abs_calib.rotation = *(uint32_t *)xcb_tmp; + xcb_block_len += sizeof(uint32_t); + xcb_tmp += sizeof(uint32_t); + xcb_align_to = ALIGNOF(uint32_t); + /* xcb_input_device_ctl_data_t.abs_calib.button_threshold */ + _aux->abs_calib.button_threshold = *(uint32_t *)xcb_tmp; + xcb_block_len += sizeof(uint32_t); + xcb_tmp += sizeof(uint32_t); + xcb_align_to = ALIGNOF(uint32_t); + } + if(control_id == XCB_INPUT_DEVICE_CONTROL_CORE) { + /* xcb_input_device_ctl_data_t.core.status */ + _aux->core.status = *(uint8_t *)xcb_tmp; + xcb_block_len += sizeof(uint8_t); + xcb_tmp += sizeof(uint8_t); + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_device_ctl_data_t.core.pad1 */ + _aux->core.pad1[0] = *(uint8_t *)xcb_tmp; + _aux->core.pad1[1] = *(uint8_t *)xcb_tmp; + _aux->core.pad1[2] = *(uint8_t *)xcb_tmp; + xcb_block_len += sizeof(uint8_t) * 3; + xcb_tmp += sizeof(uint8_t) * 3; + xcb_align_to = ALIGNOF(uint8_t); + } + if(control_id == XCB_INPUT_DEVICE_CONTROL_ENABLE) { + /* xcb_input_device_ctl_data_t.enable.enable */ + _aux->enable.enable = *(uint8_t *)xcb_tmp; + xcb_block_len += sizeof(uint8_t); + xcb_tmp += sizeof(uint8_t); + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_device_ctl_data_t.enable.pad2 */ + _aux->enable.pad2[0] = *(uint8_t *)xcb_tmp; + _aux->enable.pad2[1] = *(uint8_t *)xcb_tmp; + _aux->enable.pad2[2] = *(uint8_t *)xcb_tmp; + xcb_block_len += sizeof(uint8_t) * 3; + xcb_tmp += sizeof(uint8_t) * 3; + xcb_align_to = ALIGNOF(uint8_t); + } + if(control_id == XCB_INPUT_DEVICE_CONTROL_ABS_AREA) { + /* xcb_input_device_ctl_data_t.abs_area.offset_x */ + _aux->abs_area.offset_x = *(uint32_t *)xcb_tmp; + xcb_block_len += sizeof(uint32_t); + xcb_tmp += sizeof(uint32_t); + xcb_align_to = ALIGNOF(uint32_t); + /* xcb_input_device_ctl_data_t.abs_area.offset_y */ + _aux->abs_area.offset_y = *(uint32_t *)xcb_tmp; + xcb_block_len += sizeof(uint32_t); + xcb_tmp += sizeof(uint32_t); + xcb_align_to = ALIGNOF(uint32_t); + /* xcb_input_device_ctl_data_t.abs_area.width */ + _aux->abs_area.width = *(int32_t *)xcb_tmp; + xcb_block_len += sizeof(int32_t); + xcb_tmp += sizeof(int32_t); + xcb_align_to = ALIGNOF(int32_t); + /* xcb_input_device_ctl_data_t.abs_area.height */ + _aux->abs_area.height = *(int32_t *)xcb_tmp; + xcb_block_len += sizeof(int32_t); + xcb_tmp += sizeof(int32_t); + xcb_align_to = ALIGNOF(int32_t); + /* xcb_input_device_ctl_data_t.abs_area.screen */ + _aux->abs_area.screen = *(int32_t *)xcb_tmp; + xcb_block_len += sizeof(int32_t); + xcb_tmp += sizeof(int32_t); + xcb_align_to = ALIGNOF(int32_t); + /* xcb_input_device_ctl_data_t.abs_area.following */ + _aux->abs_area.following = *(uint32_t *)xcb_tmp; + xcb_block_len += sizeof(uint32_t); + xcb_tmp += sizeof(uint32_t); + xcb_align_to = ALIGNOF(uint32_t); + } + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + + return xcb_buffer_len; +} + +int +xcb_input_device_ctl_data_sizeof (const void *_buffer, + uint16_t control_id) +{ + xcb_input_device_ctl_data_t _aux; + return xcb_input_device_ctl_data_unpack(_buffer, control_id, &_aux); +} + +int +xcb_input_device_ctl_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_device_ctl_t *_aux = (xcb_input_device_ctl_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + + xcb_block_len += sizeof(xcb_input_device_ctl_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* data */ + xcb_block_len += xcb_input_device_ctl_data_sizeof(xcb_tmp, _aux->control_id); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(char); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +void * +xcb_input_device_ctl_data (const xcb_input_device_ctl_t *R) +{ + return (void *) (R + 1); +} + +void +xcb_input_device_ctl_next (xcb_input_device_ctl_iterator_t *i) +{ + xcb_input_device_ctl_t *R = i->data; + xcb_generic_iterator_t child; + child.data = (xcb_input_device_ctl_t *)(((char *)R) + xcb_input_device_ctl_sizeof(R)); + i->index = (char *) child.data - (char *) i->data; + --i->rem; + i->data = (xcb_input_device_ctl_t *) child.data; +} + +xcb_generic_iterator_t +xcb_input_device_ctl_end (xcb_input_device_ctl_iterator_t i) +{ + xcb_generic_iterator_t ret; + while(i.rem > 0) + xcb_input_device_ctl_next(&i); + ret.data = i.data; + ret.rem = i.rem; + ret.index = i.index; + return ret; +} + +int +xcb_input_change_device_control_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + + xcb_block_len += sizeof(xcb_input_change_device_control_request_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* control */ + xcb_block_len += xcb_input_device_ctl_sizeof(xcb_tmp); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_input_device_ctl_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +xcb_input_change_device_control_cookie_t +xcb_input_change_device_control (xcb_connection_t *c, + uint16_t control_id, + uint8_t device_id, + xcb_input_device_ctl_t *control) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 4, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_CHANGE_DEVICE_CONTROL, + .isvoid = 0 + }; + + struct iovec xcb_parts[6]; + xcb_input_change_device_control_cookie_t xcb_ret; + xcb_input_change_device_control_request_t xcb_out; + + xcb_out.control_id = control_id; + xcb_out.device_id = device_id; + xcb_out.pad0 = 0; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_input_device_ctl_t control */ + xcb_parts[4].iov_base = (char *) control; + xcb_parts[4].iov_len = + xcb_input_device_ctl_sizeof (control); + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_change_device_control_cookie_t +xcb_input_change_device_control_unchecked (xcb_connection_t *c, + uint16_t control_id, + uint8_t device_id, + xcb_input_device_ctl_t *control) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 4, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_CHANGE_DEVICE_CONTROL, + .isvoid = 0 + }; + + struct iovec xcb_parts[6]; + xcb_input_change_device_control_cookie_t xcb_ret; + xcb_input_change_device_control_request_t xcb_out; + + xcb_out.control_id = control_id; + xcb_out.device_id = device_id; + xcb_out.pad0 = 0; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_input_device_ctl_t control */ + xcb_parts[4].iov_base = (char *) control; + xcb_parts[4].iov_len = + xcb_input_device_ctl_sizeof (control); + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_change_device_control_reply_t * +xcb_input_change_device_control_reply (xcb_connection_t *c, + xcb_input_change_device_control_cookie_t cookie /**< */, + xcb_generic_error_t **e) +{ + return (xcb_input_change_device_control_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); +} + +int +xcb_input_list_device_properties_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_list_device_properties_reply_t *_aux = (xcb_input_list_device_properties_reply_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + + xcb_block_len += sizeof(xcb_input_list_device_properties_reply_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* atoms */ + xcb_block_len += _aux->num_atoms * sizeof(xcb_atom_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_atom_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +xcb_input_list_device_properties_cookie_t +xcb_input_list_device_properties (xcb_connection_t *c, + uint8_t device_id) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_LIST_DEVICE_PROPERTIES, + .isvoid = 0 + }; + + struct iovec xcb_parts[4]; + xcb_input_list_device_properties_cookie_t xcb_ret; + xcb_input_list_device_properties_request_t xcb_out; + + xcb_out.device_id = device_id; + memset(xcb_out.pad0, 0, 3); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_list_device_properties_cookie_t +xcb_input_list_device_properties_unchecked (xcb_connection_t *c, + uint8_t device_id) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_LIST_DEVICE_PROPERTIES, + .isvoid = 0 + }; + + struct iovec xcb_parts[4]; + xcb_input_list_device_properties_cookie_t xcb_ret; + xcb_input_list_device_properties_request_t xcb_out; + + xcb_out.device_id = device_id; + memset(xcb_out.pad0, 0, 3); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_atom_t * +xcb_input_list_device_properties_atoms (const xcb_input_list_device_properties_reply_t *R) +{ + return (xcb_atom_t *) (R + 1); +} + +int +xcb_input_list_device_properties_atoms_length (const xcb_input_list_device_properties_reply_t *R) +{ + return R->num_atoms; +} + +xcb_generic_iterator_t +xcb_input_list_device_properties_atoms_end (const xcb_input_list_device_properties_reply_t *R) +{ + xcb_generic_iterator_t i; + i.data = ((xcb_atom_t *) (R + 1)) + (R->num_atoms); + i.rem = 0; + i.index = (char *) i.data - (char *) R; + return i; +} + +xcb_input_list_device_properties_reply_t * +xcb_input_list_device_properties_reply (xcb_connection_t *c, + xcb_input_list_device_properties_cookie_t cookie /**< */, + xcb_generic_error_t **e) +{ + return (xcb_input_list_device_properties_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); +} + +uint8_t * +xcb_input_change_device_property_items_data_8 (const xcb_input_change_device_property_items_t *S) +{ + return S->data8; +} + +int +xcb_input_change_device_property_items_data_8_length (const xcb_input_change_device_property_request_t *R, + const xcb_input_change_device_property_items_t *S) +{ + return R->num_items; +} + +xcb_generic_iterator_t +xcb_input_change_device_property_items_data_8_end (const xcb_input_change_device_property_request_t *R, + const xcb_input_change_device_property_items_t *S) +{ + xcb_generic_iterator_t i; + i.data = S->data8 + R->num_items; + i.rem = 0; + i.index = (char *) i.data - (char *) S; + return i; +} + +uint16_t * +xcb_input_change_device_property_items_data_16 (const xcb_input_change_device_property_items_t *S) +{ + return S->data16; +} + +int +xcb_input_change_device_property_items_data_16_length (const xcb_input_change_device_property_request_t *R, + const xcb_input_change_device_property_items_t *S) +{ + return R->num_items; +} + +xcb_generic_iterator_t +xcb_input_change_device_property_items_data_16_end (const xcb_input_change_device_property_request_t *R, + const xcb_input_change_device_property_items_t *S) +{ + xcb_generic_iterator_t i; + i.data = S->data16 + R->num_items; + i.rem = 0; + i.index = (char *) i.data - (char *) S; + return i; +} + +uint32_t * +xcb_input_change_device_property_items_data_32 (const xcb_input_change_device_property_items_t *S) +{ + return S->data32; +} + +int +xcb_input_change_device_property_items_data_32_length (const xcb_input_change_device_property_request_t *R, + const xcb_input_change_device_property_items_t *S) +{ + return R->num_items; +} + +xcb_generic_iterator_t +xcb_input_change_device_property_items_data_32_end (const xcb_input_change_device_property_request_t *R, + const xcb_input_change_device_property_items_t *S) +{ + xcb_generic_iterator_t i; + i.data = S->data32 + R->num_items; + i.rem = 0; + i.index = (char *) i.data - (char *) S; + return i; +} + +int +xcb_input_change_device_property_items_serialize (void **_buffer, + uint32_t num_items, + uint8_t format, + const xcb_input_change_device_property_items_t *_aux) +{ + char *xcb_out = *_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_align_to = 0; + unsigned int xcb_padding_offset = 0; + + unsigned int xcb_pad = 0; + char xcb_pad0[3] = {0, 0, 0}; + struct iovec xcb_parts[9]; + unsigned int xcb_parts_idx = 0; + unsigned int xcb_block_len = 0; + unsigned int i; + char *xcb_tmp; + + if(format == XCB_INPUT_PROPERTY_FORMAT_8_BITS) { + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_parts[xcb_parts_idx].iov_len = xcb_pad; + xcb_parts_idx++; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + /* data8 */ + xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->data8; + xcb_block_len += num_items * sizeof(uint8_t); + xcb_parts[xcb_parts_idx].iov_len = num_items * sizeof(uint8_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint8_t); + xcb_align_to = 4; + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_parts[xcb_parts_idx].iov_len = xcb_pad; + xcb_parts_idx++; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + } + if(format == XCB_INPUT_PROPERTY_FORMAT_16_BITS) { + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_parts[xcb_parts_idx].iov_len = xcb_pad; + xcb_parts_idx++; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + /* data16 */ + xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->data16; + xcb_block_len += num_items * sizeof(uint16_t); + xcb_parts[xcb_parts_idx].iov_len = num_items * sizeof(uint16_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint16_t); + xcb_align_to = 4; + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_parts[xcb_parts_idx].iov_len = xcb_pad; + xcb_parts_idx++; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + } + if(format == XCB_INPUT_PROPERTY_FORMAT_32_BITS) { + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_parts[xcb_parts_idx].iov_len = xcb_pad; + xcb_parts_idx++; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + /* data32 */ + xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->data32; + xcb_block_len += num_items * sizeof(uint32_t); + xcb_parts[xcb_parts_idx].iov_len = num_items * sizeof(uint32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint32_t); + } + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_parts[xcb_parts_idx].iov_len = xcb_pad; + xcb_parts_idx++; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + + if (NULL == xcb_out) { + /* allocate memory */ + xcb_out = malloc(xcb_buffer_len); + *_buffer = xcb_out; + } + + xcb_tmp = xcb_out; + for(i=0; i<xcb_parts_idx; i++) { + if (0 != xcb_parts[i].iov_base && 0 != xcb_parts[i].iov_len) + memcpy(xcb_tmp, xcb_parts[i].iov_base, xcb_parts[i].iov_len); + if (0 != xcb_parts[i].iov_len) + xcb_tmp += xcb_parts[i].iov_len; + } + + return xcb_buffer_len; +} + +int +xcb_input_change_device_property_items_unpack (const void *_buffer, + uint32_t num_items, + uint8_t format, + xcb_input_change_device_property_items_t *_aux) +{ + char *xcb_tmp = (char *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + unsigned int xcb_padding_offset = 0; + + + if(format == XCB_INPUT_PROPERTY_FORMAT_8_BITS) { + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + /* data8 */ + _aux->data8 = (uint8_t *)xcb_tmp; + xcb_block_len += num_items * sizeof(uint8_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint8_t); + xcb_align_to = 4; + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + } + if(format == XCB_INPUT_PROPERTY_FORMAT_16_BITS) { + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + /* data16 */ + _aux->data16 = (uint16_t *)xcb_tmp; + xcb_block_len += num_items * sizeof(uint16_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint16_t); + xcb_align_to = 4; + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + } + if(format == XCB_INPUT_PROPERTY_FORMAT_32_BITS) { + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + /* data32 */ + _aux->data32 = (uint32_t *)xcb_tmp; + xcb_block_len += num_items * sizeof(uint32_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint32_t); + } + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + + return xcb_buffer_len; +} + +int +xcb_input_change_device_property_items_sizeof (const void *_buffer, + uint32_t num_items, + uint8_t format) +{ + xcb_input_change_device_property_items_t _aux; + return xcb_input_change_device_property_items_unpack(_buffer, num_items, format, &_aux); +} + +int +xcb_input_change_device_property_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_change_device_property_request_t *_aux = (xcb_input_change_device_property_request_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + + xcb_block_len += sizeof(xcb_input_change_device_property_request_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* items */ + xcb_block_len += xcb_input_change_device_property_items_sizeof(xcb_tmp, _aux->num_items, _aux->format); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(char); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +xcb_void_cookie_t +xcb_input_change_device_property_checked (xcb_connection_t *c, + xcb_atom_t property, + xcb_atom_t type, + uint8_t device_id, + uint8_t format, + uint8_t mode, + uint32_t num_items, + const void *items) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 3, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_CHANGE_DEVICE_PROPERTY, + .isvoid = 1 + }; + + struct iovec xcb_parts[5]; + xcb_void_cookie_t xcb_ret; + xcb_input_change_device_property_request_t xcb_out; + + xcb_out.property = property; + xcb_out.type = type; + xcb_out.device_id = device_id; + xcb_out.format = format; + xcb_out.mode = mode; + xcb_out.pad0 = 0; + xcb_out.num_items = num_items; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_input_change_device_property_items_t items */ + xcb_parts[4].iov_base = (char *) items; + xcb_parts[4].iov_len = + xcb_input_change_device_property_items_sizeof (items, num_items, format); + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_void_cookie_t +xcb_input_change_device_property (xcb_connection_t *c, + xcb_atom_t property, + xcb_atom_t type, + uint8_t device_id, + uint8_t format, + uint8_t mode, + uint32_t num_items, + const void *items) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 3, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_CHANGE_DEVICE_PROPERTY, + .isvoid = 1 + }; + + struct iovec xcb_parts[5]; + xcb_void_cookie_t xcb_ret; + xcb_input_change_device_property_request_t xcb_out; + + xcb_out.property = property; + xcb_out.type = type; + xcb_out.device_id = device_id; + xcb_out.format = format; + xcb_out.mode = mode; + xcb_out.pad0 = 0; + xcb_out.num_items = num_items; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_input_change_device_property_items_t items */ + xcb_parts[4].iov_base = (char *) items; + xcb_parts[4].iov_len = + xcb_input_change_device_property_items_sizeof (items, num_items, format); + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_void_cookie_t +xcb_input_change_device_property_aux_checked (xcb_connection_t *c, + xcb_atom_t property, + xcb_atom_t type, + uint8_t device_id, + uint8_t format, + uint8_t mode, + uint32_t num_items, + const xcb_input_change_device_property_items_t *items) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 3, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_CHANGE_DEVICE_PROPERTY, + .isvoid = 1 + }; + + struct iovec xcb_parts[5]; + xcb_void_cookie_t xcb_ret; + xcb_input_change_device_property_request_t xcb_out; + void *xcb_aux0 = 0; + + xcb_out.property = property; + xcb_out.type = type; + xcb_out.device_id = device_id; + xcb_out.format = format; + xcb_out.mode = mode; + xcb_out.pad0 = 0; + xcb_out.num_items = num_items; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_input_change_device_property_items_t items */ + xcb_parts[4].iov_len = + xcb_input_change_device_property_items_serialize (&xcb_aux0, num_items, format, items); + xcb_parts[4].iov_base = xcb_aux0; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + free(xcb_aux0); + return xcb_ret; +} + +xcb_void_cookie_t +xcb_input_change_device_property_aux (xcb_connection_t *c, + xcb_atom_t property, + xcb_atom_t type, + uint8_t device_id, + uint8_t format, + uint8_t mode, + uint32_t num_items, + const xcb_input_change_device_property_items_t *items) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 3, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_CHANGE_DEVICE_PROPERTY, + .isvoid = 1 + }; + + struct iovec xcb_parts[5]; + xcb_void_cookie_t xcb_ret; + xcb_input_change_device_property_request_t xcb_out; + void *xcb_aux0 = 0; + + xcb_out.property = property; + xcb_out.type = type; + xcb_out.device_id = device_id; + xcb_out.format = format; + xcb_out.mode = mode; + xcb_out.pad0 = 0; + xcb_out.num_items = num_items; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_input_change_device_property_items_t items */ + xcb_parts[4].iov_len = + xcb_input_change_device_property_items_serialize (&xcb_aux0, num_items, format, items); + xcb_parts[4].iov_base = xcb_aux0; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + free(xcb_aux0); + return xcb_ret; +} + +void * +xcb_input_change_device_property_items (const xcb_input_change_device_property_request_t *R) +{ + return (void *) (R + 1); +} + +xcb_void_cookie_t +xcb_input_delete_device_property_checked (xcb_connection_t *c, + xcb_atom_t property, + uint8_t device_id) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_DELETE_DEVICE_PROPERTY, + .isvoid = 1 + }; + + struct iovec xcb_parts[4]; + xcb_void_cookie_t xcb_ret; + xcb_input_delete_device_property_request_t xcb_out; + + xcb_out.property = property; + xcb_out.device_id = device_id; + memset(xcb_out.pad0, 0, 3); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_void_cookie_t +xcb_input_delete_device_property (xcb_connection_t *c, + xcb_atom_t property, + uint8_t device_id) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_DELETE_DEVICE_PROPERTY, + .isvoid = 1 + }; + + struct iovec xcb_parts[4]; + xcb_void_cookie_t xcb_ret; + xcb_input_delete_device_property_request_t xcb_out; + + xcb_out.property = property; + xcb_out.device_id = device_id; + memset(xcb_out.pad0, 0, 3); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +uint8_t * +xcb_input_get_device_property_items_data_8 (const xcb_input_get_device_property_items_t *S) +{ + return S->data8; +} + +int +xcb_input_get_device_property_items_data_8_length (const xcb_input_get_device_property_reply_t *R, + const xcb_input_get_device_property_items_t *S) +{ + return R->num_items; +} + +xcb_generic_iterator_t +xcb_input_get_device_property_items_data_8_end (const xcb_input_get_device_property_reply_t *R, + const xcb_input_get_device_property_items_t *S) +{ + xcb_generic_iterator_t i; + i.data = S->data8 + R->num_items; + i.rem = 0; + i.index = (char *) i.data - (char *) S; + return i; +} + +uint16_t * +xcb_input_get_device_property_items_data_16 (const xcb_input_get_device_property_items_t *S) +{ + return S->data16; +} + +int +xcb_input_get_device_property_items_data_16_length (const xcb_input_get_device_property_reply_t *R, + const xcb_input_get_device_property_items_t *S) +{ + return R->num_items; +} + +xcb_generic_iterator_t +xcb_input_get_device_property_items_data_16_end (const xcb_input_get_device_property_reply_t *R, + const xcb_input_get_device_property_items_t *S) +{ + xcb_generic_iterator_t i; + i.data = S->data16 + R->num_items; + i.rem = 0; + i.index = (char *) i.data - (char *) S; + return i; +} + +uint32_t * +xcb_input_get_device_property_items_data_32 (const xcb_input_get_device_property_items_t *S) +{ + return S->data32; +} + +int +xcb_input_get_device_property_items_data_32_length (const xcb_input_get_device_property_reply_t *R, + const xcb_input_get_device_property_items_t *S) +{ + return R->num_items; +} + +xcb_generic_iterator_t +xcb_input_get_device_property_items_data_32_end (const xcb_input_get_device_property_reply_t *R, + const xcb_input_get_device_property_items_t *S) +{ + xcb_generic_iterator_t i; + i.data = S->data32 + R->num_items; + i.rem = 0; + i.index = (char *) i.data - (char *) S; + return i; +} + +int +xcb_input_get_device_property_items_serialize (void **_buffer, + uint32_t num_items, + uint8_t format, + const xcb_input_get_device_property_items_t *_aux) +{ + char *xcb_out = *_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_align_to = 0; + unsigned int xcb_padding_offset = 0; + + unsigned int xcb_pad = 0; + char xcb_pad0[3] = {0, 0, 0}; + struct iovec xcb_parts[9]; + unsigned int xcb_parts_idx = 0; + unsigned int xcb_block_len = 0; + unsigned int i; + char *xcb_tmp; + + if(format == XCB_INPUT_PROPERTY_FORMAT_8_BITS) { + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_parts[xcb_parts_idx].iov_len = xcb_pad; + xcb_parts_idx++; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + /* data8 */ + xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->data8; + xcb_block_len += num_items * sizeof(uint8_t); + xcb_parts[xcb_parts_idx].iov_len = num_items * sizeof(uint8_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint8_t); + xcb_align_to = 4; + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_parts[xcb_parts_idx].iov_len = xcb_pad; + xcb_parts_idx++; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + } + if(format == XCB_INPUT_PROPERTY_FORMAT_16_BITS) { + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_parts[xcb_parts_idx].iov_len = xcb_pad; + xcb_parts_idx++; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + /* data16 */ + xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->data16; + xcb_block_len += num_items * sizeof(uint16_t); + xcb_parts[xcb_parts_idx].iov_len = num_items * sizeof(uint16_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint16_t); + xcb_align_to = 4; + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_parts[xcb_parts_idx].iov_len = xcb_pad; + xcb_parts_idx++; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + } + if(format == XCB_INPUT_PROPERTY_FORMAT_32_BITS) { + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_parts[xcb_parts_idx].iov_len = xcb_pad; + xcb_parts_idx++; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + /* data32 */ + xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->data32; + xcb_block_len += num_items * sizeof(uint32_t); + xcb_parts[xcb_parts_idx].iov_len = num_items * sizeof(uint32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint32_t); + } + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_parts[xcb_parts_idx].iov_len = xcb_pad; + xcb_parts_idx++; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + + if (NULL == xcb_out) { + /* allocate memory */ + xcb_out = malloc(xcb_buffer_len); + *_buffer = xcb_out; + } + + xcb_tmp = xcb_out; + for(i=0; i<xcb_parts_idx; i++) { + if (0 != xcb_parts[i].iov_base && 0 != xcb_parts[i].iov_len) + memcpy(xcb_tmp, xcb_parts[i].iov_base, xcb_parts[i].iov_len); + if (0 != xcb_parts[i].iov_len) + xcb_tmp += xcb_parts[i].iov_len; + } + + return xcb_buffer_len; +} + +int +xcb_input_get_device_property_items_unpack (const void *_buffer, + uint32_t num_items, + uint8_t format, + xcb_input_get_device_property_items_t *_aux) +{ + char *xcb_tmp = (char *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + unsigned int xcb_padding_offset = 0; + + + if(format == XCB_INPUT_PROPERTY_FORMAT_8_BITS) { + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + /* data8 */ + _aux->data8 = (uint8_t *)xcb_tmp; + xcb_block_len += num_items * sizeof(uint8_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint8_t); + xcb_align_to = 4; + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + } + if(format == XCB_INPUT_PROPERTY_FORMAT_16_BITS) { + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + /* data16 */ + _aux->data16 = (uint16_t *)xcb_tmp; + xcb_block_len += num_items * sizeof(uint16_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint16_t); + xcb_align_to = 4; + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + } + if(format == XCB_INPUT_PROPERTY_FORMAT_32_BITS) { + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + /* data32 */ + _aux->data32 = (uint32_t *)xcb_tmp; + xcb_block_len += num_items * sizeof(uint32_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint32_t); + } + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + + return xcb_buffer_len; +} + +int +xcb_input_get_device_property_items_sizeof (const void *_buffer, + uint32_t num_items, + uint8_t format) +{ + xcb_input_get_device_property_items_t _aux; + return xcb_input_get_device_property_items_unpack(_buffer, num_items, format, &_aux); +} + +int +xcb_input_get_device_property_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_get_device_property_reply_t *_aux = (xcb_input_get_device_property_reply_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + + xcb_block_len += sizeof(xcb_input_get_device_property_reply_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* items */ + xcb_block_len += xcb_input_get_device_property_items_sizeof(xcb_tmp, _aux->num_items, _aux->format); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(char); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +xcb_input_get_device_property_cookie_t +xcb_input_get_device_property (xcb_connection_t *c, + xcb_atom_t property, + xcb_atom_t type, + uint32_t offset, + uint32_t len, + uint8_t device_id, + uint8_t _delete) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_GET_DEVICE_PROPERTY, + .isvoid = 0 + }; + + struct iovec xcb_parts[4]; + xcb_input_get_device_property_cookie_t xcb_ret; + xcb_input_get_device_property_request_t xcb_out; + + xcb_out.property = property; + xcb_out.type = type; + xcb_out.offset = offset; + xcb_out.len = len; + xcb_out.device_id = device_id; + xcb_out._delete = _delete; + memset(xcb_out.pad0, 0, 2); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_get_device_property_cookie_t +xcb_input_get_device_property_unchecked (xcb_connection_t *c, + xcb_atom_t property, + xcb_atom_t type, + uint32_t offset, + uint32_t len, + uint8_t device_id, + uint8_t _delete) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_GET_DEVICE_PROPERTY, + .isvoid = 0 + }; + + struct iovec xcb_parts[4]; + xcb_input_get_device_property_cookie_t xcb_ret; + xcb_input_get_device_property_request_t xcb_out; + + xcb_out.property = property; + xcb_out.type = type; + xcb_out.offset = offset; + xcb_out.len = len; + xcb_out.device_id = device_id; + xcb_out._delete = _delete; + memset(xcb_out.pad0, 0, 2); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +void * +xcb_input_get_device_property_items (const xcb_input_get_device_property_reply_t *R) +{ + return (void *) (R + 1); +} + +xcb_input_get_device_property_reply_t * +xcb_input_get_device_property_reply (xcb_connection_t *c, + xcb_input_get_device_property_cookie_t cookie /**< */, + xcb_generic_error_t **e) +{ + return (xcb_input_get_device_property_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); +} + +void +xcb_input_group_info_next (xcb_input_group_info_iterator_t *i) +{ + --i->rem; + ++i->data; + i->index += sizeof(xcb_input_group_info_t); +} + +xcb_generic_iterator_t +xcb_input_group_info_end (xcb_input_group_info_iterator_t i) +{ + xcb_generic_iterator_t ret; + ret.data = i.data + i.rem; + ret.index = i.index + ((char *) ret.data - (char *) i.data); + ret.rem = 0; + return ret; +} + +void +xcb_input_modifier_info_next (xcb_input_modifier_info_iterator_t *i) +{ + --i->rem; + ++i->data; + i->index += sizeof(xcb_input_modifier_info_t); +} + +xcb_generic_iterator_t +xcb_input_modifier_info_end (xcb_input_modifier_info_iterator_t i) +{ + xcb_generic_iterator_t ret; + ret.data = i.data + i.rem; + ret.index = i.index + ((char *) ret.data - (char *) i.data); + ret.rem = 0; + return ret; +} + +int +xcb_input_xi_query_pointer_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_xi_query_pointer_reply_t *_aux = (xcb_input_xi_query_pointer_reply_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + + xcb_block_len += sizeof(xcb_input_xi_query_pointer_reply_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* buttons */ + xcb_block_len += _aux->buttons_len * sizeof(uint32_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint32_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +xcb_input_xi_query_pointer_cookie_t +xcb_input_xi_query_pointer (xcb_connection_t *c, + xcb_window_t window, + xcb_input_device_id_t deviceid) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_XI_QUERY_POINTER, + .isvoid = 0 + }; + + struct iovec xcb_parts[4]; + xcb_input_xi_query_pointer_cookie_t xcb_ret; + xcb_input_xi_query_pointer_request_t xcb_out; + + xcb_out.window = window; + xcb_out.deviceid = deviceid; + memset(xcb_out.pad0, 0, 2); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_xi_query_pointer_cookie_t +xcb_input_xi_query_pointer_unchecked (xcb_connection_t *c, + xcb_window_t window, + xcb_input_device_id_t deviceid) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_XI_QUERY_POINTER, + .isvoid = 0 + }; + + struct iovec xcb_parts[4]; + xcb_input_xi_query_pointer_cookie_t xcb_ret; + xcb_input_xi_query_pointer_request_t xcb_out; + + xcb_out.window = window; + xcb_out.deviceid = deviceid; + memset(xcb_out.pad0, 0, 2); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +uint32_t * +xcb_input_xi_query_pointer_buttons (const xcb_input_xi_query_pointer_reply_t *R) +{ + return (uint32_t *) (R + 1); +} + +int +xcb_input_xi_query_pointer_buttons_length (const xcb_input_xi_query_pointer_reply_t *R) +{ + return R->buttons_len; +} + +xcb_generic_iterator_t +xcb_input_xi_query_pointer_buttons_end (const xcb_input_xi_query_pointer_reply_t *R) +{ + xcb_generic_iterator_t i; + i.data = ((uint32_t *) (R + 1)) + (R->buttons_len); + i.rem = 0; + i.index = (char *) i.data - (char *) R; + return i; +} + +xcb_input_xi_query_pointer_reply_t * +xcb_input_xi_query_pointer_reply (xcb_connection_t *c, + xcb_input_xi_query_pointer_cookie_t cookie /**< */, + xcb_generic_error_t **e) +{ + return (xcb_input_xi_query_pointer_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); +} + +xcb_void_cookie_t +xcb_input_xi_warp_pointer_checked (xcb_connection_t *c, + xcb_window_t src_win, + xcb_window_t dst_win, + xcb_input_fp1616_t src_x, + xcb_input_fp1616_t src_y, + uint16_t src_width, + uint16_t src_height, + xcb_input_fp1616_t dst_x, + xcb_input_fp1616_t dst_y, + xcb_input_device_id_t deviceid) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_XI_WARP_POINTER, + .isvoid = 1 + }; + + struct iovec xcb_parts[4]; + xcb_void_cookie_t xcb_ret; + xcb_input_xi_warp_pointer_request_t xcb_out; + + xcb_out.src_win = src_win; + xcb_out.dst_win = dst_win; + xcb_out.src_x = src_x; + xcb_out.src_y = src_y; + xcb_out.src_width = src_width; + xcb_out.src_height = src_height; + xcb_out.dst_x = dst_x; + xcb_out.dst_y = dst_y; + xcb_out.deviceid = deviceid; + memset(xcb_out.pad0, 0, 2); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_void_cookie_t +xcb_input_xi_warp_pointer (xcb_connection_t *c, + xcb_window_t src_win, + xcb_window_t dst_win, + xcb_input_fp1616_t src_x, + xcb_input_fp1616_t src_y, + uint16_t src_width, + uint16_t src_height, + xcb_input_fp1616_t dst_x, + xcb_input_fp1616_t dst_y, + xcb_input_device_id_t deviceid) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_XI_WARP_POINTER, + .isvoid = 1 + }; + + struct iovec xcb_parts[4]; + xcb_void_cookie_t xcb_ret; + xcb_input_xi_warp_pointer_request_t xcb_out; + + xcb_out.src_win = src_win; + xcb_out.dst_win = dst_win; + xcb_out.src_x = src_x; + xcb_out.src_y = src_y; + xcb_out.src_width = src_width; + xcb_out.src_height = src_height; + xcb_out.dst_x = dst_x; + xcb_out.dst_y = dst_y; + xcb_out.deviceid = deviceid; + memset(xcb_out.pad0, 0, 2); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_void_cookie_t +xcb_input_xi_change_cursor_checked (xcb_connection_t *c, + xcb_window_t window, + xcb_cursor_t cursor, + xcb_input_device_id_t deviceid) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_XI_CHANGE_CURSOR, + .isvoid = 1 + }; + + struct iovec xcb_parts[4]; + xcb_void_cookie_t xcb_ret; + xcb_input_xi_change_cursor_request_t xcb_out; + + xcb_out.window = window; + xcb_out.cursor = cursor; + xcb_out.deviceid = deviceid; + memset(xcb_out.pad0, 0, 2); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_void_cookie_t +xcb_input_xi_change_cursor (xcb_connection_t *c, + xcb_window_t window, + xcb_cursor_t cursor, + xcb_input_device_id_t deviceid) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_XI_CHANGE_CURSOR, + .isvoid = 1 + }; + + struct iovec xcb_parts[4]; + xcb_void_cookie_t xcb_ret; + xcb_input_xi_change_cursor_request_t xcb_out; + + xcb_out.window = window; + xcb_out.cursor = cursor; + xcb_out.deviceid = deviceid; + memset(xcb_out.pad0, 0, 2); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +int +xcb_input_add_master_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_add_master_t *_aux = (xcb_input_add_master_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + + xcb_block_len += sizeof(xcb_input_add_master_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* name */ + xcb_block_len += _aux->name_len * sizeof(char); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(char); + xcb_align_to = 4; + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +char * +xcb_input_add_master_name (const xcb_input_add_master_t *R) +{ + return (char *) (R + 1); +} + +int +xcb_input_add_master_name_length (const xcb_input_add_master_t *R) +{ + return R->name_len; +} + +xcb_generic_iterator_t +xcb_input_add_master_name_end (const xcb_input_add_master_t *R) +{ + xcb_generic_iterator_t i; + i.data = ((char *) (R + 1)) + (R->name_len); + i.rem = 0; + i.index = (char *) i.data - (char *) R; + return i; +} + +void +xcb_input_add_master_next (xcb_input_add_master_iterator_t *i) +{ + xcb_input_add_master_t *R = i->data; + xcb_generic_iterator_t child; + child.data = (xcb_input_add_master_t *)(((char *)R) + xcb_input_add_master_sizeof(R)); + i->index = (char *) child.data - (char *) i->data; + --i->rem; + i->data = (xcb_input_add_master_t *) child.data; +} + +xcb_generic_iterator_t +xcb_input_add_master_end (xcb_input_add_master_iterator_t i) +{ + xcb_generic_iterator_t ret; + while(i.rem > 0) + xcb_input_add_master_next(&i); + ret.data = i.data; + ret.rem = i.rem; + ret.index = i.index; + return ret; +} + +void +xcb_input_remove_master_next (xcb_input_remove_master_iterator_t *i) +{ + --i->rem; + ++i->data; + i->index += sizeof(xcb_input_remove_master_t); +} + +xcb_generic_iterator_t +xcb_input_remove_master_end (xcb_input_remove_master_iterator_t i) +{ + xcb_generic_iterator_t ret; + ret.data = i.data + i.rem; + ret.index = i.index + ((char *) ret.data - (char *) i.data); + ret.rem = 0; + return ret; +} + +void +xcb_input_attach_slave_next (xcb_input_attach_slave_iterator_t *i) +{ + --i->rem; + ++i->data; + i->index += sizeof(xcb_input_attach_slave_t); +} + +xcb_generic_iterator_t +xcb_input_attach_slave_end (xcb_input_attach_slave_iterator_t i) +{ + xcb_generic_iterator_t ret; + ret.data = i.data + i.rem; + ret.index = i.index + ((char *) ret.data - (char *) i.data); + ret.rem = 0; + return ret; +} + +void +xcb_input_detach_slave_next (xcb_input_detach_slave_iterator_t *i) +{ + --i->rem; + ++i->data; + i->index += sizeof(xcb_input_detach_slave_t); +} + +xcb_generic_iterator_t +xcb_input_detach_slave_end (xcb_input_detach_slave_iterator_t i) +{ + xcb_generic_iterator_t ret; + ret.data = i.data + i.rem; + ret.index = i.index + ((char *) ret.data - (char *) i.data); + ret.rem = 0; + return ret; +} + +char * +xcb_input_hierarchy_change_data_add_master_name (const xcb_input_hierarchy_change_data_t *S) +{ + return S->add_master.name; +} + +int +xcb_input_hierarchy_change_data_add_master_name_length (const xcb_input_hierarchy_change_t *R, + const xcb_input_hierarchy_change_data_t *S) +{ + return S->add_master.name_len; +} + +xcb_generic_iterator_t +xcb_input_hierarchy_change_data_add_master_name_end (const xcb_input_hierarchy_change_t *R, + const xcb_input_hierarchy_change_data_t *S) +{ + xcb_generic_iterator_t i; + i.data = S->add_master.name + S->add_master.name_len; + i.rem = 0; + i.index = (char *) i.data - (char *) S; + return i; +} + +int +xcb_input_hierarchy_change_data_serialize (void **_buffer, + uint16_t type, + const xcb_input_hierarchy_change_data_t *_aux) +{ + char *xcb_out = *_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_align_to = 0; + unsigned int xcb_padding_offset = 0; + + unsigned int xcb_pad = 0; + char xcb_pad0[3] = {0, 0, 0}; + struct iovec xcb_parts[16]; + unsigned int xcb_parts_idx = 0; + unsigned int xcb_block_len = 0; + unsigned int i; + char *xcb_tmp; + + if(type == XCB_INPUT_HIERARCHY_CHANGE_TYPE_ADD_MASTER) { + /* xcb_input_hierarchy_change_data_t.add_master.name_len */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->add_master.name_len; + xcb_block_len += sizeof(uint16_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint16_t); + /* xcb_input_hierarchy_change_data_t.add_master.send_core */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->add_master.send_core; + xcb_block_len += sizeof(uint8_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_hierarchy_change_data_t.add_master.enable */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->add_master.enable; + xcb_block_len += sizeof(uint8_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint8_t); + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_parts[xcb_parts_idx].iov_len = xcb_pad; + xcb_parts_idx++; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + /* name */ + xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->add_master.name; + xcb_block_len += _aux->add_master.name_len * sizeof(char); + xcb_parts[xcb_parts_idx].iov_len = _aux->add_master.name_len * sizeof(char); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(char); + xcb_align_to = 4; + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_parts[xcb_parts_idx].iov_len = xcb_pad; + xcb_parts_idx++; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + } + if(type == XCB_INPUT_HIERARCHY_CHANGE_TYPE_REMOVE_MASTER) { + /* xcb_input_hierarchy_change_data_t.remove_master.deviceid */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->remove_master.deviceid; + xcb_block_len += sizeof(xcb_input_device_id_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_input_device_id_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(xcb_input_device_id_t); + /* xcb_input_hierarchy_change_data_t.remove_master.return_mode */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->remove_master.return_mode; + xcb_block_len += sizeof(uint8_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_hierarchy_change_data_t.remove_master.pad1 */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &xcb_pad; + xcb_block_len += sizeof(uint8_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_hierarchy_change_data_t.remove_master.return_pointer */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->remove_master.return_pointer; + xcb_block_len += sizeof(xcb_input_device_id_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_input_device_id_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(xcb_input_device_id_t); + /* xcb_input_hierarchy_change_data_t.remove_master.return_keyboard */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->remove_master.return_keyboard; + xcb_block_len += sizeof(xcb_input_device_id_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_input_device_id_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(xcb_input_device_id_t); + } + if(type == XCB_INPUT_HIERARCHY_CHANGE_TYPE_ATTACH_SLAVE) { + /* xcb_input_hierarchy_change_data_t.attach_slave.deviceid */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->attach_slave.deviceid; + xcb_block_len += sizeof(xcb_input_device_id_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_input_device_id_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(xcb_input_device_id_t); + /* xcb_input_hierarchy_change_data_t.attach_slave.master */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->attach_slave.master; + xcb_block_len += sizeof(xcb_input_device_id_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_input_device_id_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(xcb_input_device_id_t); + } + if(type == XCB_INPUT_HIERARCHY_CHANGE_TYPE_DETACH_SLAVE) { + /* xcb_input_hierarchy_change_data_t.detach_slave.deviceid */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->detach_slave.deviceid; + xcb_block_len += sizeof(xcb_input_device_id_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_input_device_id_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(xcb_input_device_id_t); + /* xcb_input_hierarchy_change_data_t.detach_slave.pad2 */ + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_block_len += sizeof(uint8_t)*2; + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t)*2; + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint8_t); + } + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_parts[xcb_parts_idx].iov_len = xcb_pad; + xcb_parts_idx++; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + + if (NULL == xcb_out) { + /* allocate memory */ + xcb_out = malloc(xcb_buffer_len); + *_buffer = xcb_out; + } + + xcb_tmp = xcb_out; + for(i=0; i<xcb_parts_idx; i++) { + if (0 != xcb_parts[i].iov_base && 0 != xcb_parts[i].iov_len) + memcpy(xcb_tmp, xcb_parts[i].iov_base, xcb_parts[i].iov_len); + if (0 != xcb_parts[i].iov_len) + xcb_tmp += xcb_parts[i].iov_len; + } + + return xcb_buffer_len; +} + +int +xcb_input_hierarchy_change_data_unpack (const void *_buffer, + uint16_t type, + xcb_input_hierarchy_change_data_t *_aux) +{ + char *xcb_tmp = (char *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + unsigned int xcb_padding_offset = 0; + + + if(type == XCB_INPUT_HIERARCHY_CHANGE_TYPE_ADD_MASTER) { + /* xcb_input_hierarchy_change_data_t.add_master.name_len */ + _aux->add_master.name_len = *(uint16_t *)xcb_tmp; + xcb_block_len += sizeof(uint16_t); + xcb_tmp += sizeof(uint16_t); + xcb_align_to = ALIGNOF(uint16_t); + /* xcb_input_hierarchy_change_data_t.add_master.send_core */ + _aux->add_master.send_core = *(uint8_t *)xcb_tmp; + xcb_block_len += sizeof(uint8_t); + xcb_tmp += sizeof(uint8_t); + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_hierarchy_change_data_t.add_master.enable */ + _aux->add_master.enable = *(uint8_t *)xcb_tmp; + xcb_block_len += sizeof(uint8_t); + xcb_tmp += sizeof(uint8_t); + xcb_align_to = ALIGNOF(uint8_t); + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + /* name */ + _aux->add_master.name = (char *)xcb_tmp; + xcb_block_len += _aux->add_master.name_len * sizeof(char); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(char); + xcb_align_to = 4; + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + } + if(type == XCB_INPUT_HIERARCHY_CHANGE_TYPE_REMOVE_MASTER) { + /* xcb_input_hierarchy_change_data_t.remove_master.deviceid */ + _aux->remove_master.deviceid = *(xcb_input_device_id_t *)xcb_tmp; + xcb_block_len += sizeof(xcb_input_device_id_t); + xcb_tmp += sizeof(xcb_input_device_id_t); + xcb_align_to = ALIGNOF(xcb_input_device_id_t); + /* xcb_input_hierarchy_change_data_t.remove_master.return_mode */ + _aux->remove_master.return_mode = *(uint8_t *)xcb_tmp; + xcb_block_len += sizeof(uint8_t); + xcb_tmp += sizeof(uint8_t); + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_hierarchy_change_data_t.remove_master.pad1 */ + _aux->remove_master.pad1 = *(uint8_t *)xcb_tmp; + xcb_block_len += sizeof(uint8_t); + xcb_tmp += sizeof(uint8_t); + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_hierarchy_change_data_t.remove_master.return_pointer */ + _aux->remove_master.return_pointer = *(xcb_input_device_id_t *)xcb_tmp; + xcb_block_len += sizeof(xcb_input_device_id_t); + xcb_tmp += sizeof(xcb_input_device_id_t); + xcb_align_to = ALIGNOF(xcb_input_device_id_t); + /* xcb_input_hierarchy_change_data_t.remove_master.return_keyboard */ + _aux->remove_master.return_keyboard = *(xcb_input_device_id_t *)xcb_tmp; + xcb_block_len += sizeof(xcb_input_device_id_t); + xcb_tmp += sizeof(xcb_input_device_id_t); + xcb_align_to = ALIGNOF(xcb_input_device_id_t); + } + if(type == XCB_INPUT_HIERARCHY_CHANGE_TYPE_ATTACH_SLAVE) { + /* xcb_input_hierarchy_change_data_t.attach_slave.deviceid */ + _aux->attach_slave.deviceid = *(xcb_input_device_id_t *)xcb_tmp; + xcb_block_len += sizeof(xcb_input_device_id_t); + xcb_tmp += sizeof(xcb_input_device_id_t); + xcb_align_to = ALIGNOF(xcb_input_device_id_t); + /* xcb_input_hierarchy_change_data_t.attach_slave.master */ + _aux->attach_slave.master = *(xcb_input_device_id_t *)xcb_tmp; + xcb_block_len += sizeof(xcb_input_device_id_t); + xcb_tmp += sizeof(xcb_input_device_id_t); + xcb_align_to = ALIGNOF(xcb_input_device_id_t); + } + if(type == XCB_INPUT_HIERARCHY_CHANGE_TYPE_DETACH_SLAVE) { + /* xcb_input_hierarchy_change_data_t.detach_slave.deviceid */ + _aux->detach_slave.deviceid = *(xcb_input_device_id_t *)xcb_tmp; + xcb_block_len += sizeof(xcb_input_device_id_t); + xcb_tmp += sizeof(xcb_input_device_id_t); + xcb_align_to = ALIGNOF(xcb_input_device_id_t); + /* xcb_input_hierarchy_change_data_t.detach_slave.pad2 */ + _aux->detach_slave.pad2[0] = *(uint8_t *)xcb_tmp; + _aux->detach_slave.pad2[1] = *(uint8_t *)xcb_tmp; + xcb_block_len += sizeof(uint8_t) * 2; + xcb_tmp += sizeof(uint8_t) * 2; + xcb_align_to = ALIGNOF(uint8_t); + } + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + + return xcb_buffer_len; +} + +int +xcb_input_hierarchy_change_data_sizeof (const void *_buffer, + uint16_t type) +{ + xcb_input_hierarchy_change_data_t _aux; + return xcb_input_hierarchy_change_data_unpack(_buffer, type, &_aux); +} + +int +xcb_input_hierarchy_change_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_hierarchy_change_t *_aux = (xcb_input_hierarchy_change_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + + xcb_block_len += sizeof(xcb_input_hierarchy_change_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* data */ + xcb_block_len += xcb_input_hierarchy_change_data_sizeof(xcb_tmp, _aux->type); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(char); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +void * +xcb_input_hierarchy_change_data (const xcb_input_hierarchy_change_t *R) +{ + return (void *) (R + 1); +} + +void +xcb_input_hierarchy_change_next (xcb_input_hierarchy_change_iterator_t *i) +{ + xcb_input_hierarchy_change_t *R = i->data; + xcb_generic_iterator_t child; + child.data = (xcb_input_hierarchy_change_t *)(((char *)R) + xcb_input_hierarchy_change_sizeof(R)); + i->index = (char *) child.data - (char *) i->data; + --i->rem; + i->data = (xcb_input_hierarchy_change_t *) child.data; +} + +xcb_generic_iterator_t +xcb_input_hierarchy_change_end (xcb_input_hierarchy_change_iterator_t i) +{ + xcb_generic_iterator_t ret; + while(i.rem > 0) + xcb_input_hierarchy_change_next(&i); + ret.data = i.data; + ret.rem = i.rem; + ret.index = i.index; + return ret; +} + +int +xcb_input_xi_change_hierarchy_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_xi_change_hierarchy_request_t *_aux = (xcb_input_xi_change_hierarchy_request_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + unsigned int i; + unsigned int xcb_tmp_len; + + xcb_block_len += sizeof(xcb_input_xi_change_hierarchy_request_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* changes */ + for(i=0; i<_aux->num_changes; i++) { + xcb_tmp_len = xcb_input_hierarchy_change_sizeof(xcb_tmp); + xcb_block_len += xcb_tmp_len; + xcb_tmp += xcb_tmp_len; + } + xcb_align_to = ALIGNOF(xcb_input_hierarchy_change_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +xcb_void_cookie_t +xcb_input_xi_change_hierarchy_checked (xcb_connection_t *c, + uint8_t num_changes, + const xcb_input_hierarchy_change_t *changes) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 4, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_XI_CHANGE_HIERARCHY, + .isvoid = 1 + }; + + struct iovec xcb_parts[6]; + xcb_void_cookie_t xcb_ret; + xcb_input_xi_change_hierarchy_request_t xcb_out; + unsigned int xcb_tmp_len; + char *xcb_tmp; + unsigned int i; + + xcb_out.num_changes = num_changes; + memset(xcb_out.pad0, 0, 3); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_input_hierarchy_change_t changes */ + xcb_parts[4].iov_base = (char *) changes; + xcb_parts[4].iov_len = 0; + xcb_tmp = (char *)changes; + for(i=0; i<num_changes; i++) { + xcb_tmp_len = xcb_input_hierarchy_change_sizeof(xcb_tmp); + xcb_parts[4].iov_len += xcb_tmp_len; + xcb_tmp += xcb_tmp_len; + } + xcb_parts[5].iov_base = 0; + xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_void_cookie_t +xcb_input_xi_change_hierarchy (xcb_connection_t *c, + uint8_t num_changes, + const xcb_input_hierarchy_change_t *changes) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 4, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_XI_CHANGE_HIERARCHY, + .isvoid = 1 + }; + + struct iovec xcb_parts[6]; + xcb_void_cookie_t xcb_ret; + xcb_input_xi_change_hierarchy_request_t xcb_out; + unsigned int xcb_tmp_len; + char *xcb_tmp; + unsigned int i; + + xcb_out.num_changes = num_changes; + memset(xcb_out.pad0, 0, 3); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_input_hierarchy_change_t changes */ + xcb_parts[4].iov_base = (char *) changes; + xcb_parts[4].iov_len = 0; + xcb_tmp = (char *)changes; + for(i=0; i<num_changes; i++) { + xcb_tmp_len = xcb_input_hierarchy_change_sizeof(xcb_tmp); + xcb_parts[4].iov_len += xcb_tmp_len; + xcb_tmp += xcb_tmp_len; + } + xcb_parts[5].iov_base = 0; + xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +int +xcb_input_xi_change_hierarchy_changes_length (const xcb_input_xi_change_hierarchy_request_t *R) +{ + return R->num_changes; +} + +xcb_input_hierarchy_change_iterator_t +xcb_input_xi_change_hierarchy_changes_iterator (const xcb_input_xi_change_hierarchy_request_t *R) +{ + xcb_input_hierarchy_change_iterator_t i; + i.data = (xcb_input_hierarchy_change_t *) (R + 1); + i.rem = R->num_changes; + i.index = (char *) i.data - (char *) R; + return i; +} + +xcb_void_cookie_t +xcb_input_xi_set_client_pointer_checked (xcb_connection_t *c, + xcb_window_t window, + xcb_input_device_id_t deviceid) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_XI_SET_CLIENT_POINTER, + .isvoid = 1 + }; + + struct iovec xcb_parts[4]; + xcb_void_cookie_t xcb_ret; + xcb_input_xi_set_client_pointer_request_t xcb_out; + + xcb_out.window = window; + xcb_out.deviceid = deviceid; + memset(xcb_out.pad0, 0, 2); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_void_cookie_t +xcb_input_xi_set_client_pointer (xcb_connection_t *c, + xcb_window_t window, + xcb_input_device_id_t deviceid) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_XI_SET_CLIENT_POINTER, + .isvoid = 1 + }; + + struct iovec xcb_parts[4]; + xcb_void_cookie_t xcb_ret; + xcb_input_xi_set_client_pointer_request_t xcb_out; + + xcb_out.window = window; + xcb_out.deviceid = deviceid; + memset(xcb_out.pad0, 0, 2); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_xi_get_client_pointer_cookie_t +xcb_input_xi_get_client_pointer (xcb_connection_t *c, + xcb_window_t window) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_XI_GET_CLIENT_POINTER, + .isvoid = 0 + }; + + struct iovec xcb_parts[4]; + xcb_input_xi_get_client_pointer_cookie_t xcb_ret; + xcb_input_xi_get_client_pointer_request_t xcb_out; + + xcb_out.window = window; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_xi_get_client_pointer_cookie_t +xcb_input_xi_get_client_pointer_unchecked (xcb_connection_t *c, + xcb_window_t window) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_XI_GET_CLIENT_POINTER, + .isvoid = 0 + }; + + struct iovec xcb_parts[4]; + xcb_input_xi_get_client_pointer_cookie_t xcb_ret; + xcb_input_xi_get_client_pointer_request_t xcb_out; + + xcb_out.window = window; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_xi_get_client_pointer_reply_t * +xcb_input_xi_get_client_pointer_reply (xcb_connection_t *c, + xcb_input_xi_get_client_pointer_cookie_t cookie /**< */, + xcb_generic_error_t **e) +{ + return (xcb_input_xi_get_client_pointer_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); +} + +int +xcb_input_event_mask_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_event_mask_t *_aux = (xcb_input_event_mask_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + + xcb_block_len += sizeof(xcb_input_event_mask_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* mask */ + xcb_block_len += _aux->mask_len * sizeof(uint32_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint32_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +uint32_t * +xcb_input_event_mask_mask (const xcb_input_event_mask_t *R) +{ + return (uint32_t *) (R + 1); +} + +int +xcb_input_event_mask_mask_length (const xcb_input_event_mask_t *R) +{ + return R->mask_len; +} + +xcb_generic_iterator_t +xcb_input_event_mask_mask_end (const xcb_input_event_mask_t *R) +{ + xcb_generic_iterator_t i; + i.data = ((uint32_t *) (R + 1)) + (R->mask_len); + i.rem = 0; + i.index = (char *) i.data - (char *) R; + return i; +} + +void +xcb_input_event_mask_next (xcb_input_event_mask_iterator_t *i) +{ + xcb_input_event_mask_t *R = i->data; + xcb_generic_iterator_t child; + child.data = (xcb_input_event_mask_t *)(((char *)R) + xcb_input_event_mask_sizeof(R)); + i->index = (char *) child.data - (char *) i->data; + --i->rem; + i->data = (xcb_input_event_mask_t *) child.data; +} + +xcb_generic_iterator_t +xcb_input_event_mask_end (xcb_input_event_mask_iterator_t i) +{ + xcb_generic_iterator_t ret; + while(i.rem > 0) + xcb_input_event_mask_next(&i); + ret.data = i.data; + ret.rem = i.rem; + ret.index = i.index; + return ret; +} + +int +xcb_input_xi_select_events_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_xi_select_events_request_t *_aux = (xcb_input_xi_select_events_request_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + unsigned int i; + unsigned int xcb_tmp_len; + + xcb_block_len += sizeof(xcb_input_xi_select_events_request_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* masks */ + for(i=0; i<_aux->num_mask; i++) { + xcb_tmp_len = xcb_input_event_mask_sizeof(xcb_tmp); + xcb_block_len += xcb_tmp_len; + xcb_tmp += xcb_tmp_len; + } + xcb_align_to = ALIGNOF(xcb_input_event_mask_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +xcb_void_cookie_t +xcb_input_xi_select_events_checked (xcb_connection_t *c, + xcb_window_t window, + uint16_t num_mask, + const xcb_input_event_mask_t *masks) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 4, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_XI_SELECT_EVENTS, + .isvoid = 1 + }; + + struct iovec xcb_parts[6]; + xcb_void_cookie_t xcb_ret; + xcb_input_xi_select_events_request_t xcb_out; + unsigned int xcb_tmp_len; + char *xcb_tmp; + unsigned int i; + + xcb_out.window = window; + xcb_out.num_mask = num_mask; + memset(xcb_out.pad0, 0, 2); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_input_event_mask_t masks */ + xcb_parts[4].iov_base = (char *) masks; + xcb_parts[4].iov_len = 0; + xcb_tmp = (char *)masks; + for(i=0; i<num_mask; i++) { + xcb_tmp_len = xcb_input_event_mask_sizeof(xcb_tmp); + xcb_parts[4].iov_len += xcb_tmp_len; + xcb_tmp += xcb_tmp_len; + } + xcb_parts[5].iov_base = 0; + xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_void_cookie_t +xcb_input_xi_select_events (xcb_connection_t *c, + xcb_window_t window, + uint16_t num_mask, + const xcb_input_event_mask_t *masks) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 4, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_XI_SELECT_EVENTS, + .isvoid = 1 + }; + + struct iovec xcb_parts[6]; + xcb_void_cookie_t xcb_ret; + xcb_input_xi_select_events_request_t xcb_out; + unsigned int xcb_tmp_len; + char *xcb_tmp; + unsigned int i; + + xcb_out.window = window; + xcb_out.num_mask = num_mask; + memset(xcb_out.pad0, 0, 2); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_input_event_mask_t masks */ + xcb_parts[4].iov_base = (char *) masks; + xcb_parts[4].iov_len = 0; + xcb_tmp = (char *)masks; + for(i=0; i<num_mask; i++) { + xcb_tmp_len = xcb_input_event_mask_sizeof(xcb_tmp); + xcb_parts[4].iov_len += xcb_tmp_len; + xcb_tmp += xcb_tmp_len; + } + xcb_parts[5].iov_base = 0; + xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +int +xcb_input_xi_select_events_masks_length (const xcb_input_xi_select_events_request_t *R) +{ + return R->num_mask; +} + +xcb_input_event_mask_iterator_t +xcb_input_xi_select_events_masks_iterator (const xcb_input_xi_select_events_request_t *R) +{ + xcb_input_event_mask_iterator_t i; + i.data = (xcb_input_event_mask_t *) (R + 1); + i.rem = R->num_mask; + i.index = (char *) i.data - (char *) R; + return i; +} + +xcb_input_xi_query_version_cookie_t +xcb_input_xi_query_version (xcb_connection_t *c, + uint16_t major_version, + uint16_t minor_version) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_XI_QUERY_VERSION, + .isvoid = 0 + }; + + struct iovec xcb_parts[4]; + xcb_input_xi_query_version_cookie_t xcb_ret; + xcb_input_xi_query_version_request_t xcb_out; + + xcb_out.major_version = major_version; + xcb_out.minor_version = minor_version; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_xi_query_version_cookie_t +xcb_input_xi_query_version_unchecked (xcb_connection_t *c, + uint16_t major_version, + uint16_t minor_version) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_XI_QUERY_VERSION, + .isvoid = 0 + }; + + struct iovec xcb_parts[4]; + xcb_input_xi_query_version_cookie_t xcb_ret; + xcb_input_xi_query_version_request_t xcb_out; + + xcb_out.major_version = major_version; + xcb_out.minor_version = minor_version; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_xi_query_version_reply_t * +xcb_input_xi_query_version_reply (xcb_connection_t *c, + xcb_input_xi_query_version_cookie_t cookie /**< */, + xcb_generic_error_t **e) +{ + return (xcb_input_xi_query_version_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); +} + +int +xcb_input_button_class_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_button_class_t *_aux = (xcb_input_button_class_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + + xcb_block_len += sizeof(xcb_input_button_class_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* state */ + xcb_block_len += ((_aux->num_buttons + 31) / 32) * sizeof(xcb_atom_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint32_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* labels */ + xcb_block_len += _aux->num_buttons * sizeof(xcb_atom_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_atom_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +uint32_t * +xcb_input_button_class_state (const xcb_input_button_class_t *R) +{ + return (uint32_t *) (R + 1); +} + +int +xcb_input_button_class_state_length (const xcb_input_button_class_t *R) +{ + return ((R->num_buttons + 31) / 32); +} + +xcb_generic_iterator_t +xcb_input_button_class_state_end (const xcb_input_button_class_t *R) +{ + xcb_generic_iterator_t i; + i.data = ((uint32_t *) (R + 1)) + (((R->num_buttons + 31) / 32)); + i.rem = 0; + i.index = (char *) i.data - (char *) R; + return i; +} + +xcb_atom_t * +xcb_input_button_class_labels (const xcb_input_button_class_t *R) +{ + xcb_generic_iterator_t prev = xcb_input_button_class_state_end(R); + return (xcb_atom_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_atom_t, prev.index) + 0); +} + +int +xcb_input_button_class_labels_length (const xcb_input_button_class_t *R) +{ + return R->num_buttons; +} + +xcb_generic_iterator_t +xcb_input_button_class_labels_end (const xcb_input_button_class_t *R) +{ + xcb_generic_iterator_t i; + xcb_generic_iterator_t prev = xcb_input_button_class_state_end(R); + i.data = ((xcb_atom_t *) ((char*) prev.data + XCB_TYPE_PAD(xcb_atom_t, prev.index))) + (R->num_buttons); + i.rem = 0; + i.index = (char *) i.data - (char *) R; + return i; +} + +void +xcb_input_button_class_next (xcb_input_button_class_iterator_t *i) +{ + xcb_input_button_class_t *R = i->data; + xcb_generic_iterator_t child; + child.data = (xcb_input_button_class_t *)(((char *)R) + xcb_input_button_class_sizeof(R)); + i->index = (char *) child.data - (char *) i->data; + --i->rem; + i->data = (xcb_input_button_class_t *) child.data; +} + +xcb_generic_iterator_t +xcb_input_button_class_end (xcb_input_button_class_iterator_t i) +{ + xcb_generic_iterator_t ret; + while(i.rem > 0) + xcb_input_button_class_next(&i); + ret.data = i.data; + ret.rem = i.rem; + ret.index = i.index; + return ret; +} + +int +xcb_input_key_class_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_key_class_t *_aux = (xcb_input_key_class_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + + xcb_block_len += sizeof(xcb_input_key_class_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* keys */ + xcb_block_len += _aux->num_keys * sizeof(uint32_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint32_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +uint32_t * +xcb_input_key_class_keys (const xcb_input_key_class_t *R) +{ + return (uint32_t *) (R + 1); +} + +int +xcb_input_key_class_keys_length (const xcb_input_key_class_t *R) +{ + return R->num_keys; +} + +xcb_generic_iterator_t +xcb_input_key_class_keys_end (const xcb_input_key_class_t *R) +{ + xcb_generic_iterator_t i; + i.data = ((uint32_t *) (R + 1)) + (R->num_keys); + i.rem = 0; + i.index = (char *) i.data - (char *) R; + return i; +} + +void +xcb_input_key_class_next (xcb_input_key_class_iterator_t *i) +{ + xcb_input_key_class_t *R = i->data; + xcb_generic_iterator_t child; + child.data = (xcb_input_key_class_t *)(((char *)R) + xcb_input_key_class_sizeof(R)); + i->index = (char *) child.data - (char *) i->data; + --i->rem; + i->data = (xcb_input_key_class_t *) child.data; +} + +xcb_generic_iterator_t +xcb_input_key_class_end (xcb_input_key_class_iterator_t i) +{ + xcb_generic_iterator_t ret; + while(i.rem > 0) + xcb_input_key_class_next(&i); + ret.data = i.data; + ret.rem = i.rem; + ret.index = i.index; + return ret; +} + +void +xcb_input_scroll_class_next (xcb_input_scroll_class_iterator_t *i) +{ + --i->rem; + ++i->data; + i->index += sizeof(xcb_input_scroll_class_t); +} + +xcb_generic_iterator_t +xcb_input_scroll_class_end (xcb_input_scroll_class_iterator_t i) +{ + xcb_generic_iterator_t ret; + ret.data = i.data + i.rem; + ret.index = i.index + ((char *) ret.data - (char *) i.data); + ret.rem = 0; + return ret; +} + +void +xcb_input_touch_class_next (xcb_input_touch_class_iterator_t *i) +{ + --i->rem; + ++i->data; + i->index += sizeof(xcb_input_touch_class_t); +} + +xcb_generic_iterator_t +xcb_input_touch_class_end (xcb_input_touch_class_iterator_t i) +{ + xcb_generic_iterator_t ret; + ret.data = i.data + i.rem; + ret.index = i.index + ((char *) ret.data - (char *) i.data); + ret.rem = 0; + return ret; +} + +void +xcb_input_valuator_class_next (xcb_input_valuator_class_iterator_t *i) +{ + --i->rem; + ++i->data; + i->index += sizeof(xcb_input_valuator_class_t); +} + +xcb_generic_iterator_t +xcb_input_valuator_class_end (xcb_input_valuator_class_iterator_t i) +{ + xcb_generic_iterator_t ret; + ret.data = i.data + i.rem; + ret.index = i.index + ((char *) ret.data - (char *) i.data); + ret.rem = 0; + return ret; +} + +uint32_t * +xcb_input_device_class_data_key_keys (const xcb_input_device_class_data_t *S) +{ + return S->key.keys; +} + +int +xcb_input_device_class_data_key_keys_length (const xcb_input_device_class_t *R, + const xcb_input_device_class_data_t *S) +{ + return S->key.num_keys; +} + +xcb_generic_iterator_t +xcb_input_device_class_data_key_keys_end (const xcb_input_device_class_t *R, + const xcb_input_device_class_data_t *S) +{ + xcb_generic_iterator_t i; + i.data = S->key.keys + S->key.num_keys; + i.rem = 0; + i.index = (char *) i.data - (char *) S; + return i; +} + +uint32_t * +xcb_input_device_class_data_button_state (const xcb_input_device_class_data_t *S) +{ + return S->button.state; +} + +int +xcb_input_device_class_data_button_state_length (const xcb_input_device_class_t *R, + const xcb_input_device_class_data_t *S) +{ + return ((S->button.num_buttons + 31) / 32); +} + +xcb_generic_iterator_t +xcb_input_device_class_data_button_state_end (const xcb_input_device_class_t *R, + const xcb_input_device_class_data_t *S) +{ + xcb_generic_iterator_t i; + i.data = S->button.state + ((S->button.num_buttons + 31) / 32); + i.rem = 0; + i.index = (char *) i.data - (char *) S; + return i; +} + +xcb_atom_t * +xcb_input_device_class_data_button_labels (const xcb_input_device_class_data_t *S) +{ + return S->button.labels; +} + +int +xcb_input_device_class_data_button_labels_length (const xcb_input_device_class_t *R, + const xcb_input_device_class_data_t *S) +{ + return S->button.num_buttons; +} + +xcb_generic_iterator_t +xcb_input_device_class_data_button_labels_end (const xcb_input_device_class_t *R, + const xcb_input_device_class_data_t *S) +{ + xcb_generic_iterator_t i; + i.data = S->button.labels + S->button.num_buttons; + i.rem = 0; + i.index = (char *) i.data - (char *) S; + return i; +} + +int +xcb_input_device_class_data_serialize (void **_buffer, + uint16_t type, + const xcb_input_device_class_data_t *_aux) +{ + char *xcb_out = *_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_align_to = 0; + unsigned int xcb_padding_offset = 2; + + unsigned int xcb_pad = 0; + char xcb_pad0[3] = {0, 0, 0}; + struct iovec xcb_parts[24]; + unsigned int xcb_parts_idx = 0; + unsigned int xcb_block_len = 0; + unsigned int i; + char *xcb_tmp; + + if(type == XCB_INPUT_DEVICE_CLASS_TYPE_KEY) { + /* xcb_input_device_class_data_t.key.num_keys */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->key.num_keys; + xcb_block_len += sizeof(uint16_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint16_t); + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_parts[xcb_parts_idx].iov_len = xcb_pad; + xcb_parts_idx++; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + /* keys */ + xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->key.keys; + xcb_block_len += _aux->key.num_keys * sizeof(uint32_t); + xcb_parts[xcb_parts_idx].iov_len = _aux->key.num_keys * sizeof(uint32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint32_t); + } + if(type == XCB_INPUT_DEVICE_CLASS_TYPE_BUTTON) { + /* xcb_input_device_class_data_t.button.num_buttons */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->button.num_buttons; + xcb_block_len += sizeof(uint16_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint16_t); + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_parts[xcb_parts_idx].iov_len = xcb_pad; + xcb_parts_idx++; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + /* state */ + xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->button.state; + xcb_block_len += ((_aux->button.num_buttons + 31) / 32) * sizeof(uint32_t); + xcb_parts[xcb_parts_idx].iov_len = ((_aux->button.num_buttons + 31) / 32) * sizeof(uint32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint32_t); + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_parts[xcb_parts_idx].iov_len = xcb_pad; + xcb_parts_idx++; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + /* labels */ + xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->button.labels; + xcb_block_len += _aux->button.num_buttons * sizeof(uint32_t); + xcb_parts[xcb_parts_idx].iov_len = _aux->button.num_buttons * sizeof(uint32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(xcb_atom_t); + } + if(type == XCB_INPUT_DEVICE_CLASS_TYPE_VALUATOR) { + /* xcb_input_device_class_data_t.valuator.number */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->valuator.number; + xcb_block_len += sizeof(uint16_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint16_t); + /* xcb_input_device_class_data_t.valuator.label */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->valuator.label; + xcb_block_len += sizeof(xcb_atom_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_atom_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(xcb_atom_t); + /* xcb_input_device_class_data_t.valuator.min */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->valuator.min; + xcb_block_len += sizeof(xcb_input_fp3232_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_input_fp3232_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(xcb_input_fp3232_t); + /* xcb_input_device_class_data_t.valuator.max */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->valuator.max; + xcb_block_len += sizeof(xcb_input_fp3232_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_input_fp3232_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(xcb_input_fp3232_t); + /* xcb_input_device_class_data_t.valuator.value */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->valuator.value; + xcb_block_len += sizeof(xcb_input_fp3232_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_input_fp3232_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(xcb_input_fp3232_t); + /* xcb_input_device_class_data_t.valuator.resolution */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->valuator.resolution; + xcb_block_len += sizeof(uint32_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint32_t); + /* xcb_input_device_class_data_t.valuator.mode */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->valuator.mode; + xcb_block_len += sizeof(uint8_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_device_class_data_t.valuator.pad0 */ + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_block_len += sizeof(uint8_t)*3; + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t)*3; + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint8_t); + } + if(type == XCB_INPUT_DEVICE_CLASS_TYPE_SCROLL) { + /* xcb_input_device_class_data_t.scroll.number */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->scroll.number; + xcb_block_len += sizeof(uint16_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint16_t); + /* xcb_input_device_class_data_t.scroll.scroll_type */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->scroll.scroll_type; + xcb_block_len += sizeof(uint16_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint16_t); + /* xcb_input_device_class_data_t.scroll.pad1 */ + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_block_len += sizeof(uint8_t)*2; + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t)*2; + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_device_class_data_t.scroll.flags */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->scroll.flags; + xcb_block_len += sizeof(uint32_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint32_t); + /* xcb_input_device_class_data_t.scroll.increment */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->scroll.increment; + xcb_block_len += sizeof(xcb_input_fp3232_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_input_fp3232_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(xcb_input_fp3232_t); + } + if(type == XCB_INPUT_DEVICE_CLASS_TYPE_TOUCH) { + /* xcb_input_device_class_data_t.touch.mode */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->touch.mode; + xcb_block_len += sizeof(uint8_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_device_class_data_t.touch.num_touches */ + xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->touch.num_touches; + xcb_block_len += sizeof(uint8_t); + xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint8_t); + } + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_parts[xcb_parts_idx].iov_len = xcb_pad; + xcb_parts_idx++; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + + if (NULL == xcb_out) { + /* allocate memory */ + xcb_out = malloc(xcb_buffer_len); + *_buffer = xcb_out; + } + + xcb_tmp = xcb_out; + for(i=0; i<xcb_parts_idx; i++) { + if (0 != xcb_parts[i].iov_base && 0 != xcb_parts[i].iov_len) + memcpy(xcb_tmp, xcb_parts[i].iov_base, xcb_parts[i].iov_len); + if (0 != xcb_parts[i].iov_len) + xcb_tmp += xcb_parts[i].iov_len; + } + + return xcb_buffer_len; +} + +int +xcb_input_device_class_data_unpack (const void *_buffer, + uint16_t type, + xcb_input_device_class_data_t *_aux) +{ + char *xcb_tmp = (char *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + unsigned int xcb_padding_offset = 2; + + + if(type == XCB_INPUT_DEVICE_CLASS_TYPE_KEY) { + /* xcb_input_device_class_data_t.key.num_keys */ + _aux->key.num_keys = *(uint16_t *)xcb_tmp; + xcb_block_len += sizeof(uint16_t); + xcb_tmp += sizeof(uint16_t); + xcb_align_to = ALIGNOF(uint16_t); + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + /* keys */ + _aux->key.keys = (uint32_t *)xcb_tmp; + xcb_block_len += _aux->key.num_keys * sizeof(uint32_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint32_t); + } + if(type == XCB_INPUT_DEVICE_CLASS_TYPE_BUTTON) { + /* xcb_input_device_class_data_t.button.num_buttons */ + _aux->button.num_buttons = *(uint16_t *)xcb_tmp; + xcb_block_len += sizeof(uint16_t); + xcb_tmp += sizeof(uint16_t); + xcb_align_to = ALIGNOF(uint16_t); + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + /* state */ + _aux->button.state = (uint32_t *)xcb_tmp; + xcb_block_len += ((_aux->button.num_buttons + 31) / 32) * sizeof(uint32_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint32_t); + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + /* labels */ + _aux->button.labels = (xcb_atom_t *)xcb_tmp; + xcb_block_len += _aux->button.num_buttons * sizeof(uint32_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_atom_t); + } + if(type == XCB_INPUT_DEVICE_CLASS_TYPE_VALUATOR) { + /* xcb_input_device_class_data_t.valuator.number */ + _aux->valuator.number = *(uint16_t *)xcb_tmp; + xcb_block_len += sizeof(uint16_t); + xcb_tmp += sizeof(uint16_t); + xcb_align_to = ALIGNOF(uint16_t); + /* xcb_input_device_class_data_t.valuator.label */ + _aux->valuator.label = *(xcb_atom_t *)xcb_tmp; + xcb_block_len += sizeof(xcb_atom_t); + xcb_tmp += sizeof(xcb_atom_t); + xcb_align_to = ALIGNOF(xcb_atom_t); + /* xcb_input_device_class_data_t.valuator.min */ + _aux->valuator.min = *(xcb_input_fp3232_t *)xcb_tmp; + xcb_block_len += sizeof(xcb_input_fp3232_t); + xcb_tmp += sizeof(xcb_input_fp3232_t); + xcb_align_to = ALIGNOF(xcb_input_fp3232_t); + /* xcb_input_device_class_data_t.valuator.max */ + _aux->valuator.max = *(xcb_input_fp3232_t *)xcb_tmp; + xcb_block_len += sizeof(xcb_input_fp3232_t); + xcb_tmp += sizeof(xcb_input_fp3232_t); + xcb_align_to = ALIGNOF(xcb_input_fp3232_t); + /* xcb_input_device_class_data_t.valuator.value */ + _aux->valuator.value = *(xcb_input_fp3232_t *)xcb_tmp; + xcb_block_len += sizeof(xcb_input_fp3232_t); + xcb_tmp += sizeof(xcb_input_fp3232_t); + xcb_align_to = ALIGNOF(xcb_input_fp3232_t); + /* xcb_input_device_class_data_t.valuator.resolution */ + _aux->valuator.resolution = *(uint32_t *)xcb_tmp; + xcb_block_len += sizeof(uint32_t); + xcb_tmp += sizeof(uint32_t); + xcb_align_to = ALIGNOF(uint32_t); + /* xcb_input_device_class_data_t.valuator.mode */ + _aux->valuator.mode = *(uint8_t *)xcb_tmp; + xcb_block_len += sizeof(uint8_t); + xcb_tmp += sizeof(uint8_t); + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_device_class_data_t.valuator.pad0 */ + _aux->valuator.pad0[0] = *(uint8_t *)xcb_tmp; + _aux->valuator.pad0[1] = *(uint8_t *)xcb_tmp; + _aux->valuator.pad0[2] = *(uint8_t *)xcb_tmp; + xcb_block_len += sizeof(uint8_t) * 3; + xcb_tmp += sizeof(uint8_t) * 3; + xcb_align_to = ALIGNOF(uint8_t); + } + if(type == XCB_INPUT_DEVICE_CLASS_TYPE_SCROLL) { + /* xcb_input_device_class_data_t.scroll.number */ + _aux->scroll.number = *(uint16_t *)xcb_tmp; + xcb_block_len += sizeof(uint16_t); + xcb_tmp += sizeof(uint16_t); + xcb_align_to = ALIGNOF(uint16_t); + /* xcb_input_device_class_data_t.scroll.scroll_type */ + _aux->scroll.scroll_type = *(uint16_t *)xcb_tmp; + xcb_block_len += sizeof(uint16_t); + xcb_tmp += sizeof(uint16_t); + xcb_align_to = ALIGNOF(uint16_t); + /* xcb_input_device_class_data_t.scroll.pad1 */ + _aux->scroll.pad1[0] = *(uint8_t *)xcb_tmp; + _aux->scroll.pad1[1] = *(uint8_t *)xcb_tmp; + xcb_block_len += sizeof(uint8_t) * 2; + xcb_tmp += sizeof(uint8_t) * 2; + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_device_class_data_t.scroll.flags */ + _aux->scroll.flags = *(uint32_t *)xcb_tmp; + xcb_block_len += sizeof(uint32_t); + xcb_tmp += sizeof(uint32_t); + xcb_align_to = ALIGNOF(uint32_t); + /* xcb_input_device_class_data_t.scroll.increment */ + _aux->scroll.increment = *(xcb_input_fp3232_t *)xcb_tmp; + xcb_block_len += sizeof(xcb_input_fp3232_t); + xcb_tmp += sizeof(xcb_input_fp3232_t); + xcb_align_to = ALIGNOF(xcb_input_fp3232_t); + } + if(type == XCB_INPUT_DEVICE_CLASS_TYPE_TOUCH) { + /* xcb_input_device_class_data_t.touch.mode */ + _aux->touch.mode = *(uint8_t *)xcb_tmp; + xcb_block_len += sizeof(uint8_t); + xcb_tmp += sizeof(uint8_t); + xcb_align_to = ALIGNOF(uint8_t); + /* xcb_input_device_class_data_t.touch.num_touches */ + _aux->touch.num_touches = *(uint8_t *)xcb_tmp; + xcb_block_len += sizeof(uint8_t); + xcb_tmp += sizeof(uint8_t); + xcb_align_to = ALIGNOF(uint8_t); + } + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + + return xcb_buffer_len; +} + +int +xcb_input_device_class_data_sizeof (const void *_buffer, + uint16_t type) +{ + xcb_input_device_class_data_t _aux; + return xcb_input_device_class_data_unpack(_buffer, type, &_aux); +} + +int +xcb_input_device_class_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_device_class_t *_aux = (xcb_input_device_class_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + + xcb_block_len += sizeof(xcb_input_device_class_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* data */ + xcb_block_len += xcb_input_device_class_data_sizeof(xcb_tmp, _aux->type); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(char); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +void * +xcb_input_device_class_data (const xcb_input_device_class_t *R) +{ + return (void *) (R + 1); +} + +void +xcb_input_device_class_next (xcb_input_device_class_iterator_t *i) +{ + xcb_input_device_class_t *R = i->data; + xcb_generic_iterator_t child; + child.data = (xcb_input_device_class_t *)(((char *)R) + xcb_input_device_class_sizeof(R)); + i->index = (char *) child.data - (char *) i->data; + --i->rem; + i->data = (xcb_input_device_class_t *) child.data; +} + +xcb_generic_iterator_t +xcb_input_device_class_end (xcb_input_device_class_iterator_t i) +{ + xcb_generic_iterator_t ret; + while(i.rem > 0) + xcb_input_device_class_next(&i); + ret.data = i.data; + ret.rem = i.rem; + ret.index = i.index; + return ret; +} + +int +xcb_input_xi_device_info_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_xi_device_info_t *_aux = (xcb_input_xi_device_info_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + unsigned int i; + unsigned int xcb_tmp_len; + + xcb_block_len += sizeof(xcb_input_xi_device_info_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* name */ + xcb_block_len += _aux->name_len * sizeof(char); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(char); + xcb_align_to = 4; + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* classes */ + for(i=0; i<_aux->num_classes; i++) { + xcb_tmp_len = xcb_input_device_class_sizeof(xcb_tmp); + xcb_block_len += xcb_tmp_len; + xcb_tmp += xcb_tmp_len; + } + xcb_align_to = ALIGNOF(xcb_input_device_class_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +char * +xcb_input_xi_device_info_name (const xcb_input_xi_device_info_t *R) +{ + return (char *) (R + 1); +} + +int +xcb_input_xi_device_info_name_length (const xcb_input_xi_device_info_t *R) +{ + return R->name_len; +} + +xcb_generic_iterator_t +xcb_input_xi_device_info_name_end (const xcb_input_xi_device_info_t *R) +{ + xcb_generic_iterator_t i; + i.data = ((char *) (R + 1)) + (R->name_len); + i.rem = 0; + i.index = (char *) i.data - (char *) R; + return i; +} + +int +xcb_input_xi_device_info_classes_length (const xcb_input_xi_device_info_t *R) +{ + return R->num_classes; +} + +xcb_input_device_class_iterator_t +xcb_input_xi_device_info_classes_iterator (const xcb_input_xi_device_info_t *R) +{ + xcb_input_device_class_iterator_t i; + xcb_generic_iterator_t prev = xcb_input_xi_device_info_name_end(R); + i.data = (xcb_input_device_class_t *) ((char *) prev.data + ((-prev.index) & (4 - 1))); + i.rem = R->num_classes; + i.index = (char *) i.data - (char *) R; + return i; +} + +void +xcb_input_xi_device_info_next (xcb_input_xi_device_info_iterator_t *i) +{ + xcb_input_xi_device_info_t *R = i->data; + xcb_generic_iterator_t child; + child.data = (xcb_input_xi_device_info_t *)(((char *)R) + xcb_input_xi_device_info_sizeof(R)); + i->index = (char *) child.data - (char *) i->data; + --i->rem; + i->data = (xcb_input_xi_device_info_t *) child.data; +} + +xcb_generic_iterator_t +xcb_input_xi_device_info_end (xcb_input_xi_device_info_iterator_t i) +{ + xcb_generic_iterator_t ret; + while(i.rem > 0) + xcb_input_xi_device_info_next(&i); + ret.data = i.data; + ret.rem = i.rem; + ret.index = i.index; + return ret; +} + +int +xcb_input_xi_query_device_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_xi_query_device_reply_t *_aux = (xcb_input_xi_query_device_reply_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + unsigned int i; + unsigned int xcb_tmp_len; + + xcb_block_len += sizeof(xcb_input_xi_query_device_reply_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* infos */ + for(i=0; i<_aux->num_infos; i++) { + xcb_tmp_len = xcb_input_xi_device_info_sizeof(xcb_tmp); + xcb_block_len += xcb_tmp_len; + xcb_tmp += xcb_tmp_len; + } + xcb_align_to = ALIGNOF(xcb_input_xi_device_info_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +xcb_input_xi_query_device_cookie_t +xcb_input_xi_query_device (xcb_connection_t *c, + xcb_input_device_id_t deviceid) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_XI_QUERY_DEVICE, + .isvoid = 0 + }; + + struct iovec xcb_parts[4]; + xcb_input_xi_query_device_cookie_t xcb_ret; + xcb_input_xi_query_device_request_t xcb_out; + + xcb_out.deviceid = deviceid; + memset(xcb_out.pad0, 0, 2); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_xi_query_device_cookie_t +xcb_input_xi_query_device_unchecked (xcb_connection_t *c, + xcb_input_device_id_t deviceid) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_XI_QUERY_DEVICE, + .isvoid = 0 + }; + + struct iovec xcb_parts[4]; + xcb_input_xi_query_device_cookie_t xcb_ret; + xcb_input_xi_query_device_request_t xcb_out; + + xcb_out.deviceid = deviceid; + memset(xcb_out.pad0, 0, 2); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +int +xcb_input_xi_query_device_infos_length (const xcb_input_xi_query_device_reply_t *R) +{ + return R->num_infos; +} + +xcb_input_xi_device_info_iterator_t +xcb_input_xi_query_device_infos_iterator (const xcb_input_xi_query_device_reply_t *R) +{ + xcb_input_xi_device_info_iterator_t i; + i.data = (xcb_input_xi_device_info_t *) (R + 1); + i.rem = R->num_infos; + i.index = (char *) i.data - (char *) R; + return i; +} + +xcb_input_xi_query_device_reply_t * +xcb_input_xi_query_device_reply (xcb_connection_t *c, + xcb_input_xi_query_device_cookie_t cookie /**< */, + xcb_generic_error_t **e) +{ + return (xcb_input_xi_query_device_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); +} + +xcb_void_cookie_t +xcb_input_xi_set_focus_checked (xcb_connection_t *c, + xcb_window_t window, + xcb_timestamp_t time, + xcb_input_device_id_t deviceid) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_XI_SET_FOCUS, + .isvoid = 1 + }; + + struct iovec xcb_parts[4]; + xcb_void_cookie_t xcb_ret; + xcb_input_xi_set_focus_request_t xcb_out; + + xcb_out.window = window; + xcb_out.time = time; + xcb_out.deviceid = deviceid; + memset(xcb_out.pad0, 0, 2); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_void_cookie_t +xcb_input_xi_set_focus (xcb_connection_t *c, + xcb_window_t window, + xcb_timestamp_t time, + xcb_input_device_id_t deviceid) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_XI_SET_FOCUS, + .isvoid = 1 + }; + + struct iovec xcb_parts[4]; + xcb_void_cookie_t xcb_ret; + xcb_input_xi_set_focus_request_t xcb_out; + + xcb_out.window = window; + xcb_out.time = time; + xcb_out.deviceid = deviceid; + memset(xcb_out.pad0, 0, 2); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_xi_get_focus_cookie_t +xcb_input_xi_get_focus (xcb_connection_t *c, + xcb_input_device_id_t deviceid) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_XI_GET_FOCUS, + .isvoid = 0 + }; + + struct iovec xcb_parts[4]; + xcb_input_xi_get_focus_cookie_t xcb_ret; + xcb_input_xi_get_focus_request_t xcb_out; + + xcb_out.deviceid = deviceid; + memset(xcb_out.pad0, 0, 2); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_xi_get_focus_cookie_t +xcb_input_xi_get_focus_unchecked (xcb_connection_t *c, + xcb_input_device_id_t deviceid) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_XI_GET_FOCUS, + .isvoid = 0 + }; + + struct iovec xcb_parts[4]; + xcb_input_xi_get_focus_cookie_t xcb_ret; + xcb_input_xi_get_focus_request_t xcb_out; + + xcb_out.deviceid = deviceid; + memset(xcb_out.pad0, 0, 2); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_xi_get_focus_reply_t * +xcb_input_xi_get_focus_reply (xcb_connection_t *c, + xcb_input_xi_get_focus_cookie_t cookie /**< */, + xcb_generic_error_t **e) +{ + return (xcb_input_xi_get_focus_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); +} + +int +xcb_input_xi_grab_device_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_xi_grab_device_request_t *_aux = (xcb_input_xi_grab_device_request_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + + xcb_block_len += sizeof(xcb_input_xi_grab_device_request_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* mask */ + xcb_block_len += _aux->mask_len * sizeof(uint32_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint32_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +xcb_input_xi_grab_device_cookie_t +xcb_input_xi_grab_device (xcb_connection_t *c, + xcb_window_t window, + xcb_timestamp_t time, + xcb_cursor_t cursor, + xcb_input_device_id_t deviceid, + uint8_t mode, + uint8_t paired_device_mode, + uint8_t owner_events, + uint16_t mask_len, + const uint32_t *mask) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 4, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_XI_GRAB_DEVICE, + .isvoid = 0 + }; + + struct iovec xcb_parts[6]; + xcb_input_xi_grab_device_cookie_t xcb_ret; + xcb_input_xi_grab_device_request_t xcb_out; + + xcb_out.window = window; + xcb_out.time = time; + xcb_out.cursor = cursor; + xcb_out.deviceid = deviceid; + xcb_out.mode = mode; + xcb_out.paired_device_mode = paired_device_mode; + xcb_out.owner_events = owner_events; + xcb_out.pad0 = 0; + xcb_out.mask_len = mask_len; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* uint32_t mask */ + xcb_parts[4].iov_base = (char *) mask; + xcb_parts[4].iov_len = mask_len * sizeof(uint32_t); + xcb_parts[5].iov_base = 0; + xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_xi_grab_device_cookie_t +xcb_input_xi_grab_device_unchecked (xcb_connection_t *c, + xcb_window_t window, + xcb_timestamp_t time, + xcb_cursor_t cursor, + xcb_input_device_id_t deviceid, + uint8_t mode, + uint8_t paired_device_mode, + uint8_t owner_events, + uint16_t mask_len, + const uint32_t *mask) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 4, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_XI_GRAB_DEVICE, + .isvoid = 0 + }; + + struct iovec xcb_parts[6]; + xcb_input_xi_grab_device_cookie_t xcb_ret; + xcb_input_xi_grab_device_request_t xcb_out; + + xcb_out.window = window; + xcb_out.time = time; + xcb_out.cursor = cursor; + xcb_out.deviceid = deviceid; + xcb_out.mode = mode; + xcb_out.paired_device_mode = paired_device_mode; + xcb_out.owner_events = owner_events; + xcb_out.pad0 = 0; + xcb_out.mask_len = mask_len; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* uint32_t mask */ + xcb_parts[4].iov_base = (char *) mask; + xcb_parts[4].iov_len = mask_len * sizeof(uint32_t); + xcb_parts[5].iov_base = 0; + xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_xi_grab_device_reply_t * +xcb_input_xi_grab_device_reply (xcb_connection_t *c, + xcb_input_xi_grab_device_cookie_t cookie /**< */, + xcb_generic_error_t **e) +{ + return (xcb_input_xi_grab_device_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); +} + +xcb_void_cookie_t +xcb_input_xi_ungrab_device_checked (xcb_connection_t *c, + xcb_timestamp_t time, + xcb_input_device_id_t deviceid) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_XI_UNGRAB_DEVICE, + .isvoid = 1 + }; + + struct iovec xcb_parts[4]; + xcb_void_cookie_t xcb_ret; + xcb_input_xi_ungrab_device_request_t xcb_out; + + xcb_out.time = time; + xcb_out.deviceid = deviceid; + memset(xcb_out.pad0, 0, 2); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_void_cookie_t +xcb_input_xi_ungrab_device (xcb_connection_t *c, + xcb_timestamp_t time, + xcb_input_device_id_t deviceid) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_XI_UNGRAB_DEVICE, + .isvoid = 1 + }; + + struct iovec xcb_parts[4]; + xcb_void_cookie_t xcb_ret; + xcb_input_xi_ungrab_device_request_t xcb_out; + + xcb_out.time = time; + xcb_out.deviceid = deviceid; + memset(xcb_out.pad0, 0, 2); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_void_cookie_t +xcb_input_xi_allow_events_checked (xcb_connection_t *c, + xcb_timestamp_t time, + xcb_input_device_id_t deviceid, + uint8_t event_mode, + uint32_t touchid, + xcb_window_t grab_window) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_XI_ALLOW_EVENTS, + .isvoid = 1 + }; + + struct iovec xcb_parts[4]; + xcb_void_cookie_t xcb_ret; + xcb_input_xi_allow_events_request_t xcb_out; + + xcb_out.time = time; + xcb_out.deviceid = deviceid; + xcb_out.event_mode = event_mode; + xcb_out.pad0 = 0; + xcb_out.touchid = touchid; + xcb_out.grab_window = grab_window; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_void_cookie_t +xcb_input_xi_allow_events (xcb_connection_t *c, + xcb_timestamp_t time, + xcb_input_device_id_t deviceid, + uint8_t event_mode, + uint32_t touchid, + xcb_window_t grab_window) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_XI_ALLOW_EVENTS, + .isvoid = 1 + }; + + struct iovec xcb_parts[4]; + xcb_void_cookie_t xcb_ret; + xcb_input_xi_allow_events_request_t xcb_out; + + xcb_out.time = time; + xcb_out.deviceid = deviceid; + xcb_out.event_mode = event_mode; + xcb_out.pad0 = 0; + xcb_out.touchid = touchid; + xcb_out.grab_window = grab_window; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +void +xcb_input_grab_modifier_info_next (xcb_input_grab_modifier_info_iterator_t *i) +{ + --i->rem; + ++i->data; + i->index += sizeof(xcb_input_grab_modifier_info_t); +} + +xcb_generic_iterator_t +xcb_input_grab_modifier_info_end (xcb_input_grab_modifier_info_iterator_t i) +{ + xcb_generic_iterator_t ret; + ret.data = i.data + i.rem; + ret.index = i.index + ((char *) ret.data - (char *) i.data); + ret.rem = 0; + return ret; +} + +int +xcb_input_xi_passive_grab_device_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_xi_passive_grab_device_request_t *_aux = (xcb_input_xi_passive_grab_device_request_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + + xcb_block_len += sizeof(xcb_input_xi_passive_grab_device_request_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* mask */ + xcb_block_len += _aux->mask_len * sizeof(uint32_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint32_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* modifiers */ + xcb_block_len += _aux->num_modifiers * sizeof(uint32_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint32_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +xcb_input_xi_passive_grab_device_cookie_t +xcb_input_xi_passive_grab_device (xcb_connection_t *c, + xcb_timestamp_t time, + xcb_window_t grab_window, + xcb_cursor_t cursor, + uint32_t detail, + xcb_input_device_id_t deviceid, + uint16_t num_modifiers, + uint16_t mask_len, + uint8_t grab_type, + uint8_t grab_mode, + uint8_t paired_device_mode, + uint8_t owner_events, + const uint32_t *mask, + const uint32_t *modifiers) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 6, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_XI_PASSIVE_GRAB_DEVICE, + .isvoid = 0 + }; + + struct iovec xcb_parts[8]; + xcb_input_xi_passive_grab_device_cookie_t xcb_ret; + xcb_input_xi_passive_grab_device_request_t xcb_out; + + xcb_out.time = time; + xcb_out.grab_window = grab_window; + xcb_out.cursor = cursor; + xcb_out.detail = detail; + xcb_out.deviceid = deviceid; + xcb_out.num_modifiers = num_modifiers; + xcb_out.mask_len = mask_len; + xcb_out.grab_type = grab_type; + xcb_out.grab_mode = grab_mode; + xcb_out.paired_device_mode = paired_device_mode; + xcb_out.owner_events = owner_events; + memset(xcb_out.pad0, 0, 2); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* uint32_t mask */ + xcb_parts[4].iov_base = (char *) mask; + xcb_parts[4].iov_len = mask_len * sizeof(uint32_t); + xcb_parts[5].iov_base = 0; + xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + /* uint32_t modifiers */ + xcb_parts[6].iov_base = (char *) modifiers; + xcb_parts[6].iov_len = num_modifiers * sizeof(uint32_t); + xcb_parts[7].iov_base = 0; + xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_xi_passive_grab_device_cookie_t +xcb_input_xi_passive_grab_device_unchecked (xcb_connection_t *c, + xcb_timestamp_t time, + xcb_window_t grab_window, + xcb_cursor_t cursor, + uint32_t detail, + xcb_input_device_id_t deviceid, + uint16_t num_modifiers, + uint16_t mask_len, + uint8_t grab_type, + uint8_t grab_mode, + uint8_t paired_device_mode, + uint8_t owner_events, + const uint32_t *mask, + const uint32_t *modifiers) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 6, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_XI_PASSIVE_GRAB_DEVICE, + .isvoid = 0 + }; + + struct iovec xcb_parts[8]; + xcb_input_xi_passive_grab_device_cookie_t xcb_ret; + xcb_input_xi_passive_grab_device_request_t xcb_out; + + xcb_out.time = time; + xcb_out.grab_window = grab_window; + xcb_out.cursor = cursor; + xcb_out.detail = detail; + xcb_out.deviceid = deviceid; + xcb_out.num_modifiers = num_modifiers; + xcb_out.mask_len = mask_len; + xcb_out.grab_type = grab_type; + xcb_out.grab_mode = grab_mode; + xcb_out.paired_device_mode = paired_device_mode; + xcb_out.owner_events = owner_events; + memset(xcb_out.pad0, 0, 2); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* uint32_t mask */ + xcb_parts[4].iov_base = (char *) mask; + xcb_parts[4].iov_len = mask_len * sizeof(uint32_t); + xcb_parts[5].iov_base = 0; + xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + /* uint32_t modifiers */ + xcb_parts[6].iov_base = (char *) modifiers; + xcb_parts[6].iov_len = num_modifiers * sizeof(uint32_t); + xcb_parts[7].iov_base = 0; + xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_grab_modifier_info_t * +xcb_input_xi_passive_grab_device_modifiers (const xcb_input_xi_passive_grab_device_reply_t *R) +{ + return (xcb_input_grab_modifier_info_t *) (R + 1); +} + +int +xcb_input_xi_passive_grab_device_modifiers_length (const xcb_input_xi_passive_grab_device_reply_t *R) +{ + return R->num_modifiers; +} + +xcb_input_grab_modifier_info_iterator_t +xcb_input_xi_passive_grab_device_modifiers_iterator (const xcb_input_xi_passive_grab_device_reply_t *R) +{ + xcb_input_grab_modifier_info_iterator_t i; + i.data = (xcb_input_grab_modifier_info_t *) (R + 1); + i.rem = R->num_modifiers; + i.index = (char *) i.data - (char *) R; + return i; +} + +xcb_input_xi_passive_grab_device_reply_t * +xcb_input_xi_passive_grab_device_reply (xcb_connection_t *c, + xcb_input_xi_passive_grab_device_cookie_t cookie /**< */, + xcb_generic_error_t **e) +{ + return (xcb_input_xi_passive_grab_device_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); +} + +int +xcb_input_xi_passive_ungrab_device_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_xi_passive_ungrab_device_request_t *_aux = (xcb_input_xi_passive_ungrab_device_request_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + + xcb_block_len += sizeof(xcb_input_xi_passive_ungrab_device_request_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* modifiers */ + xcb_block_len += _aux->num_modifiers * sizeof(uint32_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint32_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +xcb_void_cookie_t +xcb_input_xi_passive_ungrab_device_checked (xcb_connection_t *c, + xcb_window_t grab_window, + uint32_t detail, + xcb_input_device_id_t deviceid, + uint16_t num_modifiers, + uint8_t grab_type, + const uint32_t *modifiers) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 4, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_XI_PASSIVE_UNGRAB_DEVICE, + .isvoid = 1 + }; + + struct iovec xcb_parts[6]; + xcb_void_cookie_t xcb_ret; + xcb_input_xi_passive_ungrab_device_request_t xcb_out; + + xcb_out.grab_window = grab_window; + xcb_out.detail = detail; + xcb_out.deviceid = deviceid; + xcb_out.num_modifiers = num_modifiers; + xcb_out.grab_type = grab_type; + memset(xcb_out.pad0, 0, 3); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* uint32_t modifiers */ + xcb_parts[4].iov_base = (char *) modifiers; + xcb_parts[4].iov_len = num_modifiers * sizeof(uint32_t); + xcb_parts[5].iov_base = 0; + xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_void_cookie_t +xcb_input_xi_passive_ungrab_device (xcb_connection_t *c, + xcb_window_t grab_window, + uint32_t detail, + xcb_input_device_id_t deviceid, + uint16_t num_modifiers, + uint8_t grab_type, + const uint32_t *modifiers) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 4, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_XI_PASSIVE_UNGRAB_DEVICE, + .isvoid = 1 + }; + + struct iovec xcb_parts[6]; + xcb_void_cookie_t xcb_ret; + xcb_input_xi_passive_ungrab_device_request_t xcb_out; + + xcb_out.grab_window = grab_window; + xcb_out.detail = detail; + xcb_out.deviceid = deviceid; + xcb_out.num_modifiers = num_modifiers; + xcb_out.grab_type = grab_type; + memset(xcb_out.pad0, 0, 3); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* uint32_t modifiers */ + xcb_parts[4].iov_base = (char *) modifiers; + xcb_parts[4].iov_len = num_modifiers * sizeof(uint32_t); + xcb_parts[5].iov_base = 0; + xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +uint32_t * +xcb_input_xi_passive_ungrab_device_modifiers (const xcb_input_xi_passive_ungrab_device_request_t *R) +{ + return (uint32_t *) (R + 1); +} + +int +xcb_input_xi_passive_ungrab_device_modifiers_length (const xcb_input_xi_passive_ungrab_device_request_t *R) +{ + return R->num_modifiers; +} + +xcb_generic_iterator_t +xcb_input_xi_passive_ungrab_device_modifiers_end (const xcb_input_xi_passive_ungrab_device_request_t *R) +{ + xcb_generic_iterator_t i; + i.data = ((uint32_t *) (R + 1)) + (R->num_modifiers); + i.rem = 0; + i.index = (char *) i.data - (char *) R; + return i; +} + +int +xcb_input_xi_list_properties_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_xi_list_properties_reply_t *_aux = (xcb_input_xi_list_properties_reply_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + + xcb_block_len += sizeof(xcb_input_xi_list_properties_reply_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* properties */ + xcb_block_len += _aux->num_properties * sizeof(xcb_atom_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_atom_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +xcb_input_xi_list_properties_cookie_t +xcb_input_xi_list_properties (xcb_connection_t *c, + xcb_input_device_id_t deviceid) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_XI_LIST_PROPERTIES, + .isvoid = 0 + }; + + struct iovec xcb_parts[4]; + xcb_input_xi_list_properties_cookie_t xcb_ret; + xcb_input_xi_list_properties_request_t xcb_out; + + xcb_out.deviceid = deviceid; + memset(xcb_out.pad0, 0, 2); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_xi_list_properties_cookie_t +xcb_input_xi_list_properties_unchecked (xcb_connection_t *c, + xcb_input_device_id_t deviceid) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_XI_LIST_PROPERTIES, + .isvoid = 0 + }; + + struct iovec xcb_parts[4]; + xcb_input_xi_list_properties_cookie_t xcb_ret; + xcb_input_xi_list_properties_request_t xcb_out; + + xcb_out.deviceid = deviceid; + memset(xcb_out.pad0, 0, 2); + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_atom_t * +xcb_input_xi_list_properties_properties (const xcb_input_xi_list_properties_reply_t *R) +{ + return (xcb_atom_t *) (R + 1); +} + +int +xcb_input_xi_list_properties_properties_length (const xcb_input_xi_list_properties_reply_t *R) +{ + return R->num_properties; +} + +xcb_generic_iterator_t +xcb_input_xi_list_properties_properties_end (const xcb_input_xi_list_properties_reply_t *R) +{ + xcb_generic_iterator_t i; + i.data = ((xcb_atom_t *) (R + 1)) + (R->num_properties); + i.rem = 0; + i.index = (char *) i.data - (char *) R; + return i; +} + +xcb_input_xi_list_properties_reply_t * +xcb_input_xi_list_properties_reply (xcb_connection_t *c, + xcb_input_xi_list_properties_cookie_t cookie /**< */, + xcb_generic_error_t **e) +{ + return (xcb_input_xi_list_properties_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); +} + +uint8_t * +xcb_input_xi_change_property_items_data_8 (const xcb_input_xi_change_property_items_t *S) +{ + return S->data8; +} + +int +xcb_input_xi_change_property_items_data_8_length (const xcb_input_xi_change_property_request_t *R, + const xcb_input_xi_change_property_items_t *S) +{ + return R->num_items; +} + +xcb_generic_iterator_t +xcb_input_xi_change_property_items_data_8_end (const xcb_input_xi_change_property_request_t *R, + const xcb_input_xi_change_property_items_t *S) +{ + xcb_generic_iterator_t i; + i.data = S->data8 + R->num_items; + i.rem = 0; + i.index = (char *) i.data - (char *) S; + return i; +} + +uint16_t * +xcb_input_xi_change_property_items_data_16 (const xcb_input_xi_change_property_items_t *S) +{ + return S->data16; +} + +int +xcb_input_xi_change_property_items_data_16_length (const xcb_input_xi_change_property_request_t *R, + const xcb_input_xi_change_property_items_t *S) +{ + return R->num_items; +} + +xcb_generic_iterator_t +xcb_input_xi_change_property_items_data_16_end (const xcb_input_xi_change_property_request_t *R, + const xcb_input_xi_change_property_items_t *S) +{ + xcb_generic_iterator_t i; + i.data = S->data16 + R->num_items; + i.rem = 0; + i.index = (char *) i.data - (char *) S; + return i; +} + +uint32_t * +xcb_input_xi_change_property_items_data_32 (const xcb_input_xi_change_property_items_t *S) +{ + return S->data32; +} + +int +xcb_input_xi_change_property_items_data_32_length (const xcb_input_xi_change_property_request_t *R, + const xcb_input_xi_change_property_items_t *S) +{ + return R->num_items; +} + +xcb_generic_iterator_t +xcb_input_xi_change_property_items_data_32_end (const xcb_input_xi_change_property_request_t *R, + const xcb_input_xi_change_property_items_t *S) +{ + xcb_generic_iterator_t i; + i.data = S->data32 + R->num_items; + i.rem = 0; + i.index = (char *) i.data - (char *) S; + return i; +} + +int +xcb_input_xi_change_property_items_serialize (void **_buffer, + uint32_t num_items, + uint8_t format, + const xcb_input_xi_change_property_items_t *_aux) +{ + char *xcb_out = *_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_align_to = 0; + unsigned int xcb_padding_offset = 0; + + unsigned int xcb_pad = 0; + char xcb_pad0[3] = {0, 0, 0}; + struct iovec xcb_parts[9]; + unsigned int xcb_parts_idx = 0; + unsigned int xcb_block_len = 0; + unsigned int i; + char *xcb_tmp; + + if(format == XCB_INPUT_PROPERTY_FORMAT_8_BITS) { + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_parts[xcb_parts_idx].iov_len = xcb_pad; + xcb_parts_idx++; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + /* data8 */ + xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->data8; + xcb_block_len += num_items * sizeof(uint8_t); + xcb_parts[xcb_parts_idx].iov_len = num_items * sizeof(uint8_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint8_t); + xcb_align_to = 4; + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_parts[xcb_parts_idx].iov_len = xcb_pad; + xcb_parts_idx++; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + } + if(format == XCB_INPUT_PROPERTY_FORMAT_16_BITS) { + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_parts[xcb_parts_idx].iov_len = xcb_pad; + xcb_parts_idx++; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + /* data16 */ + xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->data16; + xcb_block_len += num_items * sizeof(uint16_t); + xcb_parts[xcb_parts_idx].iov_len = num_items * sizeof(uint16_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint16_t); + xcb_align_to = 4; + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_parts[xcb_parts_idx].iov_len = xcb_pad; + xcb_parts_idx++; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + } + if(format == XCB_INPUT_PROPERTY_FORMAT_32_BITS) { + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_parts[xcb_parts_idx].iov_len = xcb_pad; + xcb_parts_idx++; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + /* data32 */ + xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->data32; + xcb_block_len += num_items * sizeof(uint32_t); + xcb_parts[xcb_parts_idx].iov_len = num_items * sizeof(uint32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint32_t); + } + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_parts[xcb_parts_idx].iov_len = xcb_pad; + xcb_parts_idx++; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + + if (NULL == xcb_out) { + /* allocate memory */ + xcb_out = malloc(xcb_buffer_len); + *_buffer = xcb_out; + } + + xcb_tmp = xcb_out; + for(i=0; i<xcb_parts_idx; i++) { + if (0 != xcb_parts[i].iov_base && 0 != xcb_parts[i].iov_len) + memcpy(xcb_tmp, xcb_parts[i].iov_base, xcb_parts[i].iov_len); + if (0 != xcb_parts[i].iov_len) + xcb_tmp += xcb_parts[i].iov_len; + } + + return xcb_buffer_len; +} + +int +xcb_input_xi_change_property_items_unpack (const void *_buffer, + uint32_t num_items, + uint8_t format, + xcb_input_xi_change_property_items_t *_aux) +{ + char *xcb_tmp = (char *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + unsigned int xcb_padding_offset = 0; + + + if(format == XCB_INPUT_PROPERTY_FORMAT_8_BITS) { + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + /* data8 */ + _aux->data8 = (uint8_t *)xcb_tmp; + xcb_block_len += num_items * sizeof(uint8_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint8_t); + xcb_align_to = 4; + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + } + if(format == XCB_INPUT_PROPERTY_FORMAT_16_BITS) { + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + /* data16 */ + _aux->data16 = (uint16_t *)xcb_tmp; + xcb_block_len += num_items * sizeof(uint16_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint16_t); + xcb_align_to = 4; + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + } + if(format == XCB_INPUT_PROPERTY_FORMAT_32_BITS) { + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + /* data32 */ + _aux->data32 = (uint32_t *)xcb_tmp; + xcb_block_len += num_items * sizeof(uint32_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint32_t); + } + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + + return xcb_buffer_len; +} + +int +xcb_input_xi_change_property_items_sizeof (const void *_buffer, + uint32_t num_items, + uint8_t format) +{ + xcb_input_xi_change_property_items_t _aux; + return xcb_input_xi_change_property_items_unpack(_buffer, num_items, format, &_aux); +} + +int +xcb_input_xi_change_property_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_xi_change_property_request_t *_aux = (xcb_input_xi_change_property_request_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + + xcb_block_len += sizeof(xcb_input_xi_change_property_request_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* items */ + xcb_block_len += xcb_input_xi_change_property_items_sizeof(xcb_tmp, _aux->num_items, _aux->format); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(char); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +xcb_void_cookie_t +xcb_input_xi_change_property_checked (xcb_connection_t *c, + xcb_input_device_id_t deviceid, + uint8_t mode, + uint8_t format, + xcb_atom_t property, + xcb_atom_t type, + uint32_t num_items, + const void *items) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 3, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_XI_CHANGE_PROPERTY, + .isvoid = 1 + }; + + struct iovec xcb_parts[5]; + xcb_void_cookie_t xcb_ret; + xcb_input_xi_change_property_request_t xcb_out; + + xcb_out.deviceid = deviceid; + xcb_out.mode = mode; + xcb_out.format = format; + xcb_out.property = property; + xcb_out.type = type; + xcb_out.num_items = num_items; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_input_xi_change_property_items_t items */ + xcb_parts[4].iov_base = (char *) items; + xcb_parts[4].iov_len = + xcb_input_xi_change_property_items_sizeof (items, num_items, format); + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_void_cookie_t +xcb_input_xi_change_property (xcb_connection_t *c, + xcb_input_device_id_t deviceid, + uint8_t mode, + uint8_t format, + xcb_atom_t property, + xcb_atom_t type, + uint32_t num_items, + const void *items) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 3, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_XI_CHANGE_PROPERTY, + .isvoid = 1 + }; + + struct iovec xcb_parts[5]; + xcb_void_cookie_t xcb_ret; + xcb_input_xi_change_property_request_t xcb_out; + + xcb_out.deviceid = deviceid; + xcb_out.mode = mode; + xcb_out.format = format; + xcb_out.property = property; + xcb_out.type = type; + xcb_out.num_items = num_items; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_input_xi_change_property_items_t items */ + xcb_parts[4].iov_base = (char *) items; + xcb_parts[4].iov_len = + xcb_input_xi_change_property_items_sizeof (items, num_items, format); + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_void_cookie_t +xcb_input_xi_change_property_aux_checked (xcb_connection_t *c, + xcb_input_device_id_t deviceid, + uint8_t mode, + uint8_t format, + xcb_atom_t property, + xcb_atom_t type, + uint32_t num_items, + const xcb_input_xi_change_property_items_t *items) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 3, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_XI_CHANGE_PROPERTY, + .isvoid = 1 + }; + + struct iovec xcb_parts[5]; + xcb_void_cookie_t xcb_ret; + xcb_input_xi_change_property_request_t xcb_out; + void *xcb_aux0 = 0; + + xcb_out.deviceid = deviceid; + xcb_out.mode = mode; + xcb_out.format = format; + xcb_out.property = property; + xcb_out.type = type; + xcb_out.num_items = num_items; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_input_xi_change_property_items_t items */ + xcb_parts[4].iov_len = + xcb_input_xi_change_property_items_serialize (&xcb_aux0, num_items, format, items); + xcb_parts[4].iov_base = xcb_aux0; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + free(xcb_aux0); + return xcb_ret; +} + +xcb_void_cookie_t +xcb_input_xi_change_property_aux (xcb_connection_t *c, + xcb_input_device_id_t deviceid, + uint8_t mode, + uint8_t format, + xcb_atom_t property, + xcb_atom_t type, + uint32_t num_items, + const xcb_input_xi_change_property_items_t *items) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 3, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_XI_CHANGE_PROPERTY, + .isvoid = 1 + }; + + struct iovec xcb_parts[5]; + xcb_void_cookie_t xcb_ret; + xcb_input_xi_change_property_request_t xcb_out; + void *xcb_aux0 = 0; + + xcb_out.deviceid = deviceid; + xcb_out.mode = mode; + xcb_out.format = format; + xcb_out.property = property; + xcb_out.type = type; + xcb_out.num_items = num_items; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + /* xcb_input_xi_change_property_items_t items */ + xcb_parts[4].iov_len = + xcb_input_xi_change_property_items_serialize (&xcb_aux0, num_items, format, items); + xcb_parts[4].iov_base = xcb_aux0; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + free(xcb_aux0); + return xcb_ret; +} + +void * +xcb_input_xi_change_property_items (const xcb_input_xi_change_property_request_t *R) +{ + return (void *) (R + 1); +} + +xcb_void_cookie_t +xcb_input_xi_delete_property_checked (xcb_connection_t *c, + xcb_input_device_id_t deviceid, + xcb_atom_t property) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_XI_DELETE_PROPERTY, + .isvoid = 1 + }; + + struct iovec xcb_parts[4]; + xcb_void_cookie_t xcb_ret; + xcb_input_xi_delete_property_request_t xcb_out; + + xcb_out.deviceid = deviceid; + memset(xcb_out.pad0, 0, 2); + xcb_out.property = property; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_void_cookie_t +xcb_input_xi_delete_property (xcb_connection_t *c, + xcb_input_device_id_t deviceid, + xcb_atom_t property) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_XI_DELETE_PROPERTY, + .isvoid = 1 + }; + + struct iovec xcb_parts[4]; + xcb_void_cookie_t xcb_ret; + xcb_input_xi_delete_property_request_t xcb_out; + + xcb_out.deviceid = deviceid; + memset(xcb_out.pad0, 0, 2); + xcb_out.property = property; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +uint8_t * +xcb_input_xi_get_property_items_data_8 (const xcb_input_xi_get_property_items_t *S) +{ + return S->data8; +} + +int +xcb_input_xi_get_property_items_data_8_length (const xcb_input_xi_get_property_reply_t *R, + const xcb_input_xi_get_property_items_t *S) +{ + return R->num_items; +} + +xcb_generic_iterator_t +xcb_input_xi_get_property_items_data_8_end (const xcb_input_xi_get_property_reply_t *R, + const xcb_input_xi_get_property_items_t *S) +{ + xcb_generic_iterator_t i; + i.data = S->data8 + R->num_items; + i.rem = 0; + i.index = (char *) i.data - (char *) S; + return i; +} + +uint16_t * +xcb_input_xi_get_property_items_data_16 (const xcb_input_xi_get_property_items_t *S) +{ + return S->data16; +} + +int +xcb_input_xi_get_property_items_data_16_length (const xcb_input_xi_get_property_reply_t *R, + const xcb_input_xi_get_property_items_t *S) +{ + return R->num_items; +} + +xcb_generic_iterator_t +xcb_input_xi_get_property_items_data_16_end (const xcb_input_xi_get_property_reply_t *R, + const xcb_input_xi_get_property_items_t *S) +{ + xcb_generic_iterator_t i; + i.data = S->data16 + R->num_items; + i.rem = 0; + i.index = (char *) i.data - (char *) S; + return i; +} + +uint32_t * +xcb_input_xi_get_property_items_data_32 (const xcb_input_xi_get_property_items_t *S) +{ + return S->data32; +} + +int +xcb_input_xi_get_property_items_data_32_length (const xcb_input_xi_get_property_reply_t *R, + const xcb_input_xi_get_property_items_t *S) +{ + return R->num_items; +} + +xcb_generic_iterator_t +xcb_input_xi_get_property_items_data_32_end (const xcb_input_xi_get_property_reply_t *R, + const xcb_input_xi_get_property_items_t *S) +{ + xcb_generic_iterator_t i; + i.data = S->data32 + R->num_items; + i.rem = 0; + i.index = (char *) i.data - (char *) S; + return i; +} + +int +xcb_input_xi_get_property_items_serialize (void **_buffer, + uint32_t num_items, + uint8_t format, + const xcb_input_xi_get_property_items_t *_aux) +{ + char *xcb_out = *_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_align_to = 0; + unsigned int xcb_padding_offset = 0; + + unsigned int xcb_pad = 0; + char xcb_pad0[3] = {0, 0, 0}; + struct iovec xcb_parts[9]; + unsigned int xcb_parts_idx = 0; + unsigned int xcb_block_len = 0; + unsigned int i; + char *xcb_tmp; + + if(format == XCB_INPUT_PROPERTY_FORMAT_8_BITS) { + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_parts[xcb_parts_idx].iov_len = xcb_pad; + xcb_parts_idx++; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + /* data8 */ + xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->data8; + xcb_block_len += num_items * sizeof(uint8_t); + xcb_parts[xcb_parts_idx].iov_len = num_items * sizeof(uint8_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint8_t); + xcb_align_to = 4; + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_parts[xcb_parts_idx].iov_len = xcb_pad; + xcb_parts_idx++; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + } + if(format == XCB_INPUT_PROPERTY_FORMAT_16_BITS) { + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_parts[xcb_parts_idx].iov_len = xcb_pad; + xcb_parts_idx++; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + /* data16 */ + xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->data16; + xcb_block_len += num_items * sizeof(uint16_t); + xcb_parts[xcb_parts_idx].iov_len = num_items * sizeof(uint16_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint16_t); + xcb_align_to = 4; + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_parts[xcb_parts_idx].iov_len = xcb_pad; + xcb_parts_idx++; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + } + if(format == XCB_INPUT_PROPERTY_FORMAT_32_BITS) { + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_parts[xcb_parts_idx].iov_len = xcb_pad; + xcb_parts_idx++; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + /* data32 */ + xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->data32; + xcb_block_len += num_items * sizeof(uint32_t); + xcb_parts[xcb_parts_idx].iov_len = num_items * sizeof(uint32_t); + xcb_parts_idx++; + xcb_align_to = ALIGNOF(uint32_t); + } + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; + xcb_parts[xcb_parts_idx].iov_len = xcb_pad; + xcb_parts_idx++; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + + if (NULL == xcb_out) { + /* allocate memory */ + xcb_out = malloc(xcb_buffer_len); + *_buffer = xcb_out; + } + + xcb_tmp = xcb_out; + for(i=0; i<xcb_parts_idx; i++) { + if (0 != xcb_parts[i].iov_base && 0 != xcb_parts[i].iov_len) + memcpy(xcb_tmp, xcb_parts[i].iov_base, xcb_parts[i].iov_len); + if (0 != xcb_parts[i].iov_len) + xcb_tmp += xcb_parts[i].iov_len; + } + + return xcb_buffer_len; +} + +int +xcb_input_xi_get_property_items_unpack (const void *_buffer, + uint32_t num_items, + uint8_t format, + xcb_input_xi_get_property_items_t *_aux) +{ + char *xcb_tmp = (char *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + unsigned int xcb_padding_offset = 0; + + + if(format == XCB_INPUT_PROPERTY_FORMAT_8_BITS) { + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + /* data8 */ + _aux->data8 = (uint8_t *)xcb_tmp; + xcb_block_len += num_items * sizeof(uint8_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint8_t); + xcb_align_to = 4; + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + } + if(format == XCB_INPUT_PROPERTY_FORMAT_16_BITS) { + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + /* data16 */ + _aux->data16 = (uint16_t *)xcb_tmp; + xcb_block_len += num_items * sizeof(uint16_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint16_t); + xcb_align_to = 4; + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + } + if(format == XCB_INPUT_PROPERTY_FORMAT_32_BITS) { + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + /* data32 */ + _aux->data32 = (uint32_t *)xcb_tmp; + xcb_block_len += num_items * sizeof(uint32_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint32_t); + } + /* insert padding */ + xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + xcb_padding_offset = 0; + + return xcb_buffer_len; +} + +int +xcb_input_xi_get_property_items_sizeof (const void *_buffer, + uint32_t num_items, + uint8_t format) +{ + xcb_input_xi_get_property_items_t _aux; + return xcb_input_xi_get_property_items_unpack(_buffer, num_items, format, &_aux); +} + +int +xcb_input_xi_get_property_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_xi_get_property_reply_t *_aux = (xcb_input_xi_get_property_reply_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + + xcb_block_len += sizeof(xcb_input_xi_get_property_reply_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* items */ + xcb_block_len += xcb_input_xi_get_property_items_sizeof(xcb_tmp, _aux->num_items, _aux->format); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(char); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +xcb_input_xi_get_property_cookie_t +xcb_input_xi_get_property (xcb_connection_t *c, + xcb_input_device_id_t deviceid, + uint8_t _delete, + xcb_atom_t property, + xcb_atom_t type, + uint32_t offset, + uint32_t len) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_XI_GET_PROPERTY, + .isvoid = 0 + }; + + struct iovec xcb_parts[4]; + xcb_input_xi_get_property_cookie_t xcb_ret; + xcb_input_xi_get_property_request_t xcb_out; + + xcb_out.deviceid = deviceid; + xcb_out._delete = _delete; + xcb_out.pad0 = 0; + xcb_out.property = property; + xcb_out.type = type; + xcb_out.offset = offset; + xcb_out.len = len; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_xi_get_property_cookie_t +xcb_input_xi_get_property_unchecked (xcb_connection_t *c, + xcb_input_device_id_t deviceid, + uint8_t _delete, + xcb_atom_t property, + xcb_atom_t type, + uint32_t offset, + uint32_t len) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_XI_GET_PROPERTY, + .isvoid = 0 + }; + + struct iovec xcb_parts[4]; + xcb_input_xi_get_property_cookie_t xcb_ret; + xcb_input_xi_get_property_request_t xcb_out; + + xcb_out.deviceid = deviceid; + xcb_out._delete = _delete; + xcb_out.pad0 = 0; + xcb_out.property = property; + xcb_out.type = type; + xcb_out.offset = offset; + xcb_out.len = len; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +void * +xcb_input_xi_get_property_items (const xcb_input_xi_get_property_reply_t *R) +{ + return (void *) (R + 1); +} + +xcb_input_xi_get_property_reply_t * +xcb_input_xi_get_property_reply (xcb_connection_t *c, + xcb_input_xi_get_property_cookie_t cookie /**< */, + xcb_generic_error_t **e) +{ + return (xcb_input_xi_get_property_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); +} + +int +xcb_input_xi_get_selected_events_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_xi_get_selected_events_reply_t *_aux = (xcb_input_xi_get_selected_events_reply_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + unsigned int i; + unsigned int xcb_tmp_len; + + xcb_block_len += sizeof(xcb_input_xi_get_selected_events_reply_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* masks */ + for(i=0; i<_aux->num_masks; i++) { + xcb_tmp_len = xcb_input_event_mask_sizeof(xcb_tmp); + xcb_block_len += xcb_tmp_len; + xcb_tmp += xcb_tmp_len; + } + xcb_align_to = ALIGNOF(xcb_input_event_mask_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +xcb_input_xi_get_selected_events_cookie_t +xcb_input_xi_get_selected_events (xcb_connection_t *c, + xcb_window_t window) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_XI_GET_SELECTED_EVENTS, + .isvoid = 0 + }; + + struct iovec xcb_parts[4]; + xcb_input_xi_get_selected_events_cookie_t xcb_ret; + xcb_input_xi_get_selected_events_request_t xcb_out; + + xcb_out.window = window; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +xcb_input_xi_get_selected_events_cookie_t +xcb_input_xi_get_selected_events_unchecked (xcb_connection_t *c, + xcb_window_t window) +{ + static const xcb_protocol_request_t xcb_req = { + .count = 2, + .ext = &xcb_input_id, + .opcode = XCB_INPUT_XI_GET_SELECTED_EVENTS, + .isvoid = 0 + }; + + struct iovec xcb_parts[4]; + xcb_input_xi_get_selected_events_cookie_t xcb_ret; + xcb_input_xi_get_selected_events_request_t xcb_out; + + xcb_out.window = window; + + xcb_parts[2].iov_base = (char *) &xcb_out; + xcb_parts[2].iov_len = sizeof(xcb_out); + xcb_parts[3].iov_base = 0; + xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; + + xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); + return xcb_ret; +} + +int +xcb_input_xi_get_selected_events_masks_length (const xcb_input_xi_get_selected_events_reply_t *R) +{ + return R->num_masks; +} + +xcb_input_event_mask_iterator_t +xcb_input_xi_get_selected_events_masks_iterator (const xcb_input_xi_get_selected_events_reply_t *R) +{ + xcb_input_event_mask_iterator_t i; + i.data = (xcb_input_event_mask_t *) (R + 1); + i.rem = R->num_masks; + i.index = (char *) i.data - (char *) R; + return i; +} + +xcb_input_xi_get_selected_events_reply_t * +xcb_input_xi_get_selected_events_reply (xcb_connection_t *c, + xcb_input_xi_get_selected_events_cookie_t cookie /**< */, + xcb_generic_error_t **e) +{ + return (xcb_input_xi_get_selected_events_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); +} + +int +xcb_input_device_changed_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_device_changed_event_t *_aux = (xcb_input_device_changed_event_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + unsigned int i; + unsigned int xcb_tmp_len; + + xcb_block_len += sizeof(xcb_input_device_changed_event_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* classes */ + for(i=0; i<_aux->num_classes; i++) { + xcb_tmp_len = xcb_input_device_class_sizeof(xcb_tmp); + xcb_block_len += xcb_tmp_len; + xcb_tmp += xcb_tmp_len; + } + xcb_align_to = ALIGNOF(xcb_input_device_class_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +int +xcb_input_device_changed_classes_length (const xcb_input_device_changed_event_t *R) +{ + return R->num_classes; +} + +xcb_input_device_class_iterator_t +xcb_input_device_changed_classes_iterator (const xcb_input_device_changed_event_t *R) +{ + xcb_input_device_class_iterator_t i; + i.data = (xcb_input_device_class_t *) (R + 1); + i.rem = R->num_classes; + i.index = (char *) i.data - (char *) R; + return i; +} + +int +xcb_input_key_press_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_key_press_event_t *_aux = (xcb_input_key_press_event_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + int xcb_pre_tmp_1; /* sumof length */ + int xcb_pre_tmp_2; /* sumof loop counter */ + int64_t xcb_pre_tmp_3; /* sumof sum */ + const uint32_t* xcb_pre_tmp_4; /* sumof list ptr */ + + xcb_block_len += sizeof(xcb_input_key_press_event_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* button_mask */ + xcb_block_len += _aux->buttons_len * sizeof(uint32_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint32_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* valuator_mask */ + xcb_block_len += _aux->valuators_len * sizeof(uint32_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint32_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* axisvalues */ + /* sumof start */ + xcb_pre_tmp_1 = _aux->valuators_len; + xcb_pre_tmp_3 = 0; + xcb_pre_tmp_4 = xcb_input_key_press_valuator_mask(_aux); + for (xcb_pre_tmp_2 = 0; xcb_pre_tmp_2 < xcb_pre_tmp_1; xcb_pre_tmp_2++) { + const uint32_t *xcb_listelement = xcb_pre_tmp_4; + xcb_pre_tmp_3 += xcb_popcount((*xcb_listelement)); + xcb_pre_tmp_4++; + } + /* sumof end. Result is in xcb_pre_tmp_3 */ + xcb_block_len += xcb_pre_tmp_3 * sizeof(xcb_input_fp3232_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_input_fp3232_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +uint32_t * +xcb_input_key_press_button_mask (const xcb_input_key_press_event_t *R) +{ + return (uint32_t *) (R + 1); +} + +int +xcb_input_key_press_button_mask_length (const xcb_input_key_press_event_t *R) +{ + return R->buttons_len; +} + +xcb_generic_iterator_t +xcb_input_key_press_button_mask_end (const xcb_input_key_press_event_t *R) +{ + xcb_generic_iterator_t i; + i.data = ((uint32_t *) (R + 1)) + (R->buttons_len); + i.rem = 0; + i.index = (char *) i.data - (char *) R; + return i; +} + +uint32_t * +xcb_input_key_press_valuator_mask (const xcb_input_key_press_event_t *R) +{ + xcb_generic_iterator_t prev = xcb_input_key_press_button_mask_end(R); + return (uint32_t *) ((char *) prev.data + XCB_TYPE_PAD(uint32_t, prev.index) + 0); +} + +int +xcb_input_key_press_valuator_mask_length (const xcb_input_key_press_event_t *R) +{ + return R->valuators_len; +} + +xcb_generic_iterator_t +xcb_input_key_press_valuator_mask_end (const xcb_input_key_press_event_t *R) +{ + xcb_generic_iterator_t i; + xcb_generic_iterator_t prev = xcb_input_key_press_button_mask_end(R); + i.data = ((uint32_t *) ((char*) prev.data + XCB_TYPE_PAD(uint32_t, prev.index))) + (R->valuators_len); + i.rem = 0; + i.index = (char *) i.data - (char *) R; + return i; +} + +xcb_input_fp3232_t * +xcb_input_key_press_axisvalues (const xcb_input_key_press_event_t *R) +{ + xcb_generic_iterator_t prev = xcb_input_key_press_valuator_mask_end(R); + return (xcb_input_fp3232_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_input_fp3232_t, prev.index) + 0); +} + +int +xcb_input_key_press_axisvalues_length (const xcb_input_key_press_event_t *R) +{ + int xcb_pre_tmp_5; /* sumof length */ + int xcb_pre_tmp_6; /* sumof loop counter */ + int64_t xcb_pre_tmp_7; /* sumof sum */ + const uint32_t* xcb_pre_tmp_8; /* sumof list ptr */ + /* sumof start */ + xcb_pre_tmp_5 = R->valuators_len; + xcb_pre_tmp_7 = 0; + xcb_pre_tmp_8 = xcb_input_key_press_valuator_mask(R); + for (xcb_pre_tmp_6 = 0; xcb_pre_tmp_6 < xcb_pre_tmp_5; xcb_pre_tmp_6++) { + const uint32_t *xcb_listelement = xcb_pre_tmp_8; + xcb_pre_tmp_7 += xcb_popcount((*xcb_listelement)); + xcb_pre_tmp_8++; + } + /* sumof end. Result is in xcb_pre_tmp_7 */ + return xcb_pre_tmp_7; +} + +xcb_input_fp3232_iterator_t +xcb_input_key_press_axisvalues_iterator (const xcb_input_key_press_event_t *R) +{ + xcb_input_fp3232_iterator_t i; + xcb_generic_iterator_t prev = xcb_input_key_press_valuator_mask_end(R); + int xcb_pre_tmp_9; /* sumof length */ + int xcb_pre_tmp_10; /* sumof loop counter */ + int64_t xcb_pre_tmp_11; /* sumof sum */ + const uint32_t* xcb_pre_tmp_12; /* sumof list ptr */ + /* sumof start */ + xcb_pre_tmp_9 = R->valuators_len; + xcb_pre_tmp_11 = 0; + xcb_pre_tmp_12 = xcb_input_key_press_valuator_mask(R); + for (xcb_pre_tmp_10 = 0; xcb_pre_tmp_10 < xcb_pre_tmp_9; xcb_pre_tmp_10++) { + const uint32_t *xcb_listelement = xcb_pre_tmp_12; + xcb_pre_tmp_11 += xcb_popcount((*xcb_listelement)); + xcb_pre_tmp_12++; + } + /* sumof end. Result is in xcb_pre_tmp_11 */ + i.data = (xcb_input_fp3232_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_input_fp3232_t, prev.index)); + i.rem = xcb_pre_tmp_11; + i.index = (char *) i.data - (char *) R; + return i; +} + +int +xcb_input_key_release_sizeof (const void *_buffer /**< */) +{ + return xcb_input_key_press_sizeof(_buffer); +} + +int +xcb_input_button_press_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_button_press_event_t *_aux = (xcb_input_button_press_event_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + int xcb_pre_tmp_1; /* sumof length */ + int xcb_pre_tmp_2; /* sumof loop counter */ + int64_t xcb_pre_tmp_3; /* sumof sum */ + const uint32_t* xcb_pre_tmp_4; /* sumof list ptr */ + + xcb_block_len += sizeof(xcb_input_button_press_event_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* button_mask */ + xcb_block_len += _aux->buttons_len * sizeof(uint32_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint32_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* valuator_mask */ + xcb_block_len += _aux->valuators_len * sizeof(uint32_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint32_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* axisvalues */ + /* sumof start */ + xcb_pre_tmp_1 = _aux->valuators_len; + xcb_pre_tmp_3 = 0; + xcb_pre_tmp_4 = xcb_input_button_press_valuator_mask(_aux); + for (xcb_pre_tmp_2 = 0; xcb_pre_tmp_2 < xcb_pre_tmp_1; xcb_pre_tmp_2++) { + const uint32_t *xcb_listelement = xcb_pre_tmp_4; + xcb_pre_tmp_3 += xcb_popcount((*xcb_listelement)); + xcb_pre_tmp_4++; + } + /* sumof end. Result is in xcb_pre_tmp_3 */ + xcb_block_len += xcb_pre_tmp_3 * sizeof(xcb_input_fp3232_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_input_fp3232_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +uint32_t * +xcb_input_button_press_button_mask (const xcb_input_button_press_event_t *R) +{ + return (uint32_t *) (R + 1); +} + +int +xcb_input_button_press_button_mask_length (const xcb_input_button_press_event_t *R) +{ + return R->buttons_len; +} + +xcb_generic_iterator_t +xcb_input_button_press_button_mask_end (const xcb_input_button_press_event_t *R) +{ + xcb_generic_iterator_t i; + i.data = ((uint32_t *) (R + 1)) + (R->buttons_len); + i.rem = 0; + i.index = (char *) i.data - (char *) R; + return i; +} + +uint32_t * +xcb_input_button_press_valuator_mask (const xcb_input_button_press_event_t *R) +{ + xcb_generic_iterator_t prev = xcb_input_button_press_button_mask_end(R); + return (uint32_t *) ((char *) prev.data + XCB_TYPE_PAD(uint32_t, prev.index) + 0); +} + +int +xcb_input_button_press_valuator_mask_length (const xcb_input_button_press_event_t *R) +{ + return R->valuators_len; +} + +xcb_generic_iterator_t +xcb_input_button_press_valuator_mask_end (const xcb_input_button_press_event_t *R) +{ + xcb_generic_iterator_t i; + xcb_generic_iterator_t prev = xcb_input_button_press_button_mask_end(R); + i.data = ((uint32_t *) ((char*) prev.data + XCB_TYPE_PAD(uint32_t, prev.index))) + (R->valuators_len); + i.rem = 0; + i.index = (char *) i.data - (char *) R; + return i; +} + +xcb_input_fp3232_t * +xcb_input_button_press_axisvalues (const xcb_input_button_press_event_t *R) +{ + xcb_generic_iterator_t prev = xcb_input_button_press_valuator_mask_end(R); + return (xcb_input_fp3232_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_input_fp3232_t, prev.index) + 0); +} + +int +xcb_input_button_press_axisvalues_length (const xcb_input_button_press_event_t *R) +{ + int xcb_pre_tmp_5; /* sumof length */ + int xcb_pre_tmp_6; /* sumof loop counter */ + int64_t xcb_pre_tmp_7; /* sumof sum */ + const uint32_t* xcb_pre_tmp_8; /* sumof list ptr */ + /* sumof start */ + xcb_pre_tmp_5 = R->valuators_len; + xcb_pre_tmp_7 = 0; + xcb_pre_tmp_8 = xcb_input_button_press_valuator_mask(R); + for (xcb_pre_tmp_6 = 0; xcb_pre_tmp_6 < xcb_pre_tmp_5; xcb_pre_tmp_6++) { + const uint32_t *xcb_listelement = xcb_pre_tmp_8; + xcb_pre_tmp_7 += xcb_popcount((*xcb_listelement)); + xcb_pre_tmp_8++; + } + /* sumof end. Result is in xcb_pre_tmp_7 */ + return xcb_pre_tmp_7; +} + +xcb_input_fp3232_iterator_t +xcb_input_button_press_axisvalues_iterator (const xcb_input_button_press_event_t *R) +{ + xcb_input_fp3232_iterator_t i; + xcb_generic_iterator_t prev = xcb_input_button_press_valuator_mask_end(R); + int xcb_pre_tmp_9; /* sumof length */ + int xcb_pre_tmp_10; /* sumof loop counter */ + int64_t xcb_pre_tmp_11; /* sumof sum */ + const uint32_t* xcb_pre_tmp_12; /* sumof list ptr */ + /* sumof start */ + xcb_pre_tmp_9 = R->valuators_len; + xcb_pre_tmp_11 = 0; + xcb_pre_tmp_12 = xcb_input_button_press_valuator_mask(R); + for (xcb_pre_tmp_10 = 0; xcb_pre_tmp_10 < xcb_pre_tmp_9; xcb_pre_tmp_10++) { + const uint32_t *xcb_listelement = xcb_pre_tmp_12; + xcb_pre_tmp_11 += xcb_popcount((*xcb_listelement)); + xcb_pre_tmp_12++; + } + /* sumof end. Result is in xcb_pre_tmp_11 */ + i.data = (xcb_input_fp3232_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_input_fp3232_t, prev.index)); + i.rem = xcb_pre_tmp_11; + i.index = (char *) i.data - (char *) R; + return i; +} + +int +xcb_input_button_release_sizeof (const void *_buffer /**< */) +{ + return xcb_input_button_press_sizeof(_buffer); +} + +int +xcb_input_motion_sizeof (const void *_buffer /**< */) +{ + return xcb_input_button_press_sizeof(_buffer); +} + +int +xcb_input_enter_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_enter_event_t *_aux = (xcb_input_enter_event_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + + xcb_block_len += sizeof(xcb_input_enter_event_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* buttons */ + xcb_block_len += _aux->buttons_len * sizeof(uint32_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint32_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +uint32_t * +xcb_input_enter_buttons (const xcb_input_enter_event_t *R) +{ + return (uint32_t *) (R + 1); +} + +int +xcb_input_enter_buttons_length (const xcb_input_enter_event_t *R) +{ + return R->buttons_len; +} + +xcb_generic_iterator_t +xcb_input_enter_buttons_end (const xcb_input_enter_event_t *R) +{ + xcb_generic_iterator_t i; + i.data = ((uint32_t *) (R + 1)) + (R->buttons_len); + i.rem = 0; + i.index = (char *) i.data - (char *) R; + return i; +} + +int +xcb_input_leave_sizeof (const void *_buffer /**< */) +{ + return xcb_input_enter_sizeof(_buffer); +} + +int +xcb_input_focus_in_sizeof (const void *_buffer /**< */) +{ + return xcb_input_enter_sizeof(_buffer); +} + +int +xcb_input_focus_out_sizeof (const void *_buffer /**< */) +{ + return xcb_input_enter_sizeof(_buffer); +} + +void +xcb_input_hierarchy_info_next (xcb_input_hierarchy_info_iterator_t *i) +{ + --i->rem; + ++i->data; + i->index += sizeof(xcb_input_hierarchy_info_t); +} + +xcb_generic_iterator_t +xcb_input_hierarchy_info_end (xcb_input_hierarchy_info_iterator_t i) +{ + xcb_generic_iterator_t ret; + ret.data = i.data + i.rem; + ret.index = i.index + ((char *) ret.data - (char *) i.data); + ret.rem = 0; + return ret; +} + +int +xcb_input_hierarchy_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_hierarchy_event_t *_aux = (xcb_input_hierarchy_event_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + + xcb_block_len += sizeof(xcb_input_hierarchy_event_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* infos */ + xcb_block_len += _aux->num_infos * sizeof(xcb_input_hierarchy_info_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_input_hierarchy_info_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +xcb_input_hierarchy_info_t * +xcb_input_hierarchy_infos (const xcb_input_hierarchy_event_t *R) +{ + return (xcb_input_hierarchy_info_t *) (R + 1); +} + +int +xcb_input_hierarchy_infos_length (const xcb_input_hierarchy_event_t *R) +{ + return R->num_infos; +} + +xcb_input_hierarchy_info_iterator_t +xcb_input_hierarchy_infos_iterator (const xcb_input_hierarchy_event_t *R) +{ + xcb_input_hierarchy_info_iterator_t i; + i.data = (xcb_input_hierarchy_info_t *) (R + 1); + i.rem = R->num_infos; + i.index = (char *) i.data - (char *) R; + return i; +} + +int +xcb_input_raw_key_press_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_raw_key_press_event_t *_aux = (xcb_input_raw_key_press_event_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + int xcb_pre_tmp_1; /* sumof length */ + int xcb_pre_tmp_2; /* sumof loop counter */ + int64_t xcb_pre_tmp_3; /* sumof sum */ + const uint32_t* xcb_pre_tmp_4; /* sumof list ptr */ + int xcb_pre_tmp_5; /* sumof length */ + int xcb_pre_tmp_6; /* sumof loop counter */ + int64_t xcb_pre_tmp_7; /* sumof sum */ + const uint32_t* xcb_pre_tmp_8; /* sumof list ptr */ + + xcb_block_len += sizeof(xcb_input_raw_key_press_event_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* valuator_mask */ + xcb_block_len += _aux->valuators_len * sizeof(uint32_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint32_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* axisvalues */ + /* sumof start */ + xcb_pre_tmp_1 = _aux->valuators_len; + xcb_pre_tmp_3 = 0; + xcb_pre_tmp_4 = xcb_input_raw_key_press_valuator_mask(_aux); + for (xcb_pre_tmp_2 = 0; xcb_pre_tmp_2 < xcb_pre_tmp_1; xcb_pre_tmp_2++) { + const uint32_t *xcb_listelement = xcb_pre_tmp_4; + xcb_pre_tmp_3 += xcb_popcount((*xcb_listelement)); + xcb_pre_tmp_4++; + } + /* sumof end. Result is in xcb_pre_tmp_3 */ + xcb_block_len += xcb_pre_tmp_3 * sizeof(xcb_input_fp3232_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_input_fp3232_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* axisvalues_raw */ + /* sumof start */ + xcb_pre_tmp_5 = _aux->valuators_len; + xcb_pre_tmp_7 = 0; + xcb_pre_tmp_8 = xcb_input_raw_key_press_valuator_mask(_aux); + for (xcb_pre_tmp_6 = 0; xcb_pre_tmp_6 < xcb_pre_tmp_5; xcb_pre_tmp_6++) { + const uint32_t *xcb_listelement = xcb_pre_tmp_8; + xcb_pre_tmp_7 += xcb_popcount((*xcb_listelement)); + xcb_pre_tmp_8++; + } + /* sumof end. Result is in xcb_pre_tmp_7 */ + xcb_block_len += xcb_pre_tmp_7 * sizeof(xcb_input_fp3232_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_input_fp3232_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +uint32_t * +xcb_input_raw_key_press_valuator_mask (const xcb_input_raw_key_press_event_t *R) +{ + return (uint32_t *) (R + 1); +} + +int +xcb_input_raw_key_press_valuator_mask_length (const xcb_input_raw_key_press_event_t *R) +{ + return R->valuators_len; +} + +xcb_generic_iterator_t +xcb_input_raw_key_press_valuator_mask_end (const xcb_input_raw_key_press_event_t *R) +{ + xcb_generic_iterator_t i; + i.data = ((uint32_t *) (R + 1)) + (R->valuators_len); + i.rem = 0; + i.index = (char *) i.data - (char *) R; + return i; +} + +xcb_input_fp3232_t * +xcb_input_raw_key_press_axisvalues (const xcb_input_raw_key_press_event_t *R) +{ + xcb_generic_iterator_t prev = xcb_input_raw_key_press_valuator_mask_end(R); + return (xcb_input_fp3232_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_input_fp3232_t, prev.index) + 0); +} + +int +xcb_input_raw_key_press_axisvalues_length (const xcb_input_raw_key_press_event_t *R) +{ + int xcb_pre_tmp_9; /* sumof length */ + int xcb_pre_tmp_10; /* sumof loop counter */ + int64_t xcb_pre_tmp_11; /* sumof sum */ + const uint32_t* xcb_pre_tmp_12; /* sumof list ptr */ + /* sumof start */ + xcb_pre_tmp_9 = R->valuators_len; + xcb_pre_tmp_11 = 0; + xcb_pre_tmp_12 = xcb_input_raw_key_press_valuator_mask(R); + for (xcb_pre_tmp_10 = 0; xcb_pre_tmp_10 < xcb_pre_tmp_9; xcb_pre_tmp_10++) { + const uint32_t *xcb_listelement = xcb_pre_tmp_12; + xcb_pre_tmp_11 += xcb_popcount((*xcb_listelement)); + xcb_pre_tmp_12++; + } + /* sumof end. Result is in xcb_pre_tmp_11 */ + return xcb_pre_tmp_11; +} + +xcb_input_fp3232_iterator_t +xcb_input_raw_key_press_axisvalues_iterator (const xcb_input_raw_key_press_event_t *R) +{ + xcb_input_fp3232_iterator_t i; + xcb_generic_iterator_t prev = xcb_input_raw_key_press_valuator_mask_end(R); + int xcb_pre_tmp_13; /* sumof length */ + int xcb_pre_tmp_14; /* sumof loop counter */ + int64_t xcb_pre_tmp_15; /* sumof sum */ + const uint32_t* xcb_pre_tmp_16; /* sumof list ptr */ + /* sumof start */ + xcb_pre_tmp_13 = R->valuators_len; + xcb_pre_tmp_15 = 0; + xcb_pre_tmp_16 = xcb_input_raw_key_press_valuator_mask(R); + for (xcb_pre_tmp_14 = 0; xcb_pre_tmp_14 < xcb_pre_tmp_13; xcb_pre_tmp_14++) { + const uint32_t *xcb_listelement = xcb_pre_tmp_16; + xcb_pre_tmp_15 += xcb_popcount((*xcb_listelement)); + xcb_pre_tmp_16++; + } + /* sumof end. Result is in xcb_pre_tmp_15 */ + i.data = (xcb_input_fp3232_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_input_fp3232_t, prev.index)); + i.rem = xcb_pre_tmp_15; + i.index = (char *) i.data - (char *) R; + return i; +} + +xcb_input_fp3232_t * +xcb_input_raw_key_press_axisvalues_raw (const xcb_input_raw_key_press_event_t *R) +{ + xcb_generic_iterator_t prev = xcb_input_fp3232_end(xcb_input_raw_key_press_axisvalues_iterator(R)); + return (xcb_input_fp3232_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_input_fp3232_t, prev.index) + 0); +} + +int +xcb_input_raw_key_press_axisvalues_raw_length (const xcb_input_raw_key_press_event_t *R) +{ + int xcb_pre_tmp_17; /* sumof length */ + int xcb_pre_tmp_18; /* sumof loop counter */ + int64_t xcb_pre_tmp_19; /* sumof sum */ + const uint32_t* xcb_pre_tmp_20; /* sumof list ptr */ + /* sumof start */ + xcb_pre_tmp_17 = R->valuators_len; + xcb_pre_tmp_19 = 0; + xcb_pre_tmp_20 = xcb_input_raw_key_press_valuator_mask(R); + for (xcb_pre_tmp_18 = 0; xcb_pre_tmp_18 < xcb_pre_tmp_17; xcb_pre_tmp_18++) { + const uint32_t *xcb_listelement = xcb_pre_tmp_20; + xcb_pre_tmp_19 += xcb_popcount((*xcb_listelement)); + xcb_pre_tmp_20++; + } + /* sumof end. Result is in xcb_pre_tmp_19 */ + return xcb_pre_tmp_19; +} + +xcb_input_fp3232_iterator_t +xcb_input_raw_key_press_axisvalues_raw_iterator (const xcb_input_raw_key_press_event_t *R) +{ + xcb_input_fp3232_iterator_t i; + xcb_generic_iterator_t prev = xcb_input_fp3232_end(xcb_input_raw_key_press_axisvalues_iterator(R)); + int xcb_pre_tmp_21; /* sumof length */ + int xcb_pre_tmp_22; /* sumof loop counter */ + int64_t xcb_pre_tmp_23; /* sumof sum */ + const uint32_t* xcb_pre_tmp_24; /* sumof list ptr */ + /* sumof start */ + xcb_pre_tmp_21 = R->valuators_len; + xcb_pre_tmp_23 = 0; + xcb_pre_tmp_24 = xcb_input_raw_key_press_valuator_mask(R); + for (xcb_pre_tmp_22 = 0; xcb_pre_tmp_22 < xcb_pre_tmp_21; xcb_pre_tmp_22++) { + const uint32_t *xcb_listelement = xcb_pre_tmp_24; + xcb_pre_tmp_23 += xcb_popcount((*xcb_listelement)); + xcb_pre_tmp_24++; + } + /* sumof end. Result is in xcb_pre_tmp_23 */ + i.data = (xcb_input_fp3232_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_input_fp3232_t, prev.index)); + i.rem = xcb_pre_tmp_23; + i.index = (char *) i.data - (char *) R; + return i; +} + +int +xcb_input_raw_key_release_sizeof (const void *_buffer /**< */) +{ + return xcb_input_raw_key_press_sizeof(_buffer); +} + +int +xcb_input_raw_button_press_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_raw_button_press_event_t *_aux = (xcb_input_raw_button_press_event_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + int xcb_pre_tmp_1; /* sumof length */ + int xcb_pre_tmp_2; /* sumof loop counter */ + int64_t xcb_pre_tmp_3; /* sumof sum */ + const uint32_t* xcb_pre_tmp_4; /* sumof list ptr */ + int xcb_pre_tmp_5; /* sumof length */ + int xcb_pre_tmp_6; /* sumof loop counter */ + int64_t xcb_pre_tmp_7; /* sumof sum */ + const uint32_t* xcb_pre_tmp_8; /* sumof list ptr */ + + xcb_block_len += sizeof(xcb_input_raw_button_press_event_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* valuator_mask */ + xcb_block_len += _aux->valuators_len * sizeof(uint32_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint32_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* axisvalues */ + /* sumof start */ + xcb_pre_tmp_1 = _aux->valuators_len; + xcb_pre_tmp_3 = 0; + xcb_pre_tmp_4 = xcb_input_raw_button_press_valuator_mask(_aux); + for (xcb_pre_tmp_2 = 0; xcb_pre_tmp_2 < xcb_pre_tmp_1; xcb_pre_tmp_2++) { + const uint32_t *xcb_listelement = xcb_pre_tmp_4; + xcb_pre_tmp_3 += xcb_popcount((*xcb_listelement)); + xcb_pre_tmp_4++; + } + /* sumof end. Result is in xcb_pre_tmp_3 */ + xcb_block_len += xcb_pre_tmp_3 * sizeof(xcb_input_fp3232_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_input_fp3232_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* axisvalues_raw */ + /* sumof start */ + xcb_pre_tmp_5 = _aux->valuators_len; + xcb_pre_tmp_7 = 0; + xcb_pre_tmp_8 = xcb_input_raw_button_press_valuator_mask(_aux); + for (xcb_pre_tmp_6 = 0; xcb_pre_tmp_6 < xcb_pre_tmp_5; xcb_pre_tmp_6++) { + const uint32_t *xcb_listelement = xcb_pre_tmp_8; + xcb_pre_tmp_7 += xcb_popcount((*xcb_listelement)); + xcb_pre_tmp_8++; + } + /* sumof end. Result is in xcb_pre_tmp_7 */ + xcb_block_len += xcb_pre_tmp_7 * sizeof(xcb_input_fp3232_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_input_fp3232_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +uint32_t * +xcb_input_raw_button_press_valuator_mask (const xcb_input_raw_button_press_event_t *R) +{ + return (uint32_t *) (R + 1); +} + +int +xcb_input_raw_button_press_valuator_mask_length (const xcb_input_raw_button_press_event_t *R) +{ + return R->valuators_len; +} + +xcb_generic_iterator_t +xcb_input_raw_button_press_valuator_mask_end (const xcb_input_raw_button_press_event_t *R) +{ + xcb_generic_iterator_t i; + i.data = ((uint32_t *) (R + 1)) + (R->valuators_len); + i.rem = 0; + i.index = (char *) i.data - (char *) R; + return i; +} + +xcb_input_fp3232_t * +xcb_input_raw_button_press_axisvalues (const xcb_input_raw_button_press_event_t *R) +{ + xcb_generic_iterator_t prev = xcb_input_raw_button_press_valuator_mask_end(R); + return (xcb_input_fp3232_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_input_fp3232_t, prev.index) + 0); +} + +int +xcb_input_raw_button_press_axisvalues_length (const xcb_input_raw_button_press_event_t *R) +{ + int xcb_pre_tmp_9; /* sumof length */ + int xcb_pre_tmp_10; /* sumof loop counter */ + int64_t xcb_pre_tmp_11; /* sumof sum */ + const uint32_t* xcb_pre_tmp_12; /* sumof list ptr */ + /* sumof start */ + xcb_pre_tmp_9 = R->valuators_len; + xcb_pre_tmp_11 = 0; + xcb_pre_tmp_12 = xcb_input_raw_button_press_valuator_mask(R); + for (xcb_pre_tmp_10 = 0; xcb_pre_tmp_10 < xcb_pre_tmp_9; xcb_pre_tmp_10++) { + const uint32_t *xcb_listelement = xcb_pre_tmp_12; + xcb_pre_tmp_11 += xcb_popcount((*xcb_listelement)); + xcb_pre_tmp_12++; + } + /* sumof end. Result is in xcb_pre_tmp_11 */ + return xcb_pre_tmp_11; +} + +xcb_input_fp3232_iterator_t +xcb_input_raw_button_press_axisvalues_iterator (const xcb_input_raw_button_press_event_t *R) +{ + xcb_input_fp3232_iterator_t i; + xcb_generic_iterator_t prev = xcb_input_raw_button_press_valuator_mask_end(R); + int xcb_pre_tmp_13; /* sumof length */ + int xcb_pre_tmp_14; /* sumof loop counter */ + int64_t xcb_pre_tmp_15; /* sumof sum */ + const uint32_t* xcb_pre_tmp_16; /* sumof list ptr */ + /* sumof start */ + xcb_pre_tmp_13 = R->valuators_len; + xcb_pre_tmp_15 = 0; + xcb_pre_tmp_16 = xcb_input_raw_button_press_valuator_mask(R); + for (xcb_pre_tmp_14 = 0; xcb_pre_tmp_14 < xcb_pre_tmp_13; xcb_pre_tmp_14++) { + const uint32_t *xcb_listelement = xcb_pre_tmp_16; + xcb_pre_tmp_15 += xcb_popcount((*xcb_listelement)); + xcb_pre_tmp_16++; + } + /* sumof end. Result is in xcb_pre_tmp_15 */ + i.data = (xcb_input_fp3232_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_input_fp3232_t, prev.index)); + i.rem = xcb_pre_tmp_15; + i.index = (char *) i.data - (char *) R; + return i; +} + +xcb_input_fp3232_t * +xcb_input_raw_button_press_axisvalues_raw (const xcb_input_raw_button_press_event_t *R) +{ + xcb_generic_iterator_t prev = xcb_input_fp3232_end(xcb_input_raw_button_press_axisvalues_iterator(R)); + return (xcb_input_fp3232_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_input_fp3232_t, prev.index) + 0); +} + +int +xcb_input_raw_button_press_axisvalues_raw_length (const xcb_input_raw_button_press_event_t *R) +{ + int xcb_pre_tmp_17; /* sumof length */ + int xcb_pre_tmp_18; /* sumof loop counter */ + int64_t xcb_pre_tmp_19; /* sumof sum */ + const uint32_t* xcb_pre_tmp_20; /* sumof list ptr */ + /* sumof start */ + xcb_pre_tmp_17 = R->valuators_len; + xcb_pre_tmp_19 = 0; + xcb_pre_tmp_20 = xcb_input_raw_button_press_valuator_mask(R); + for (xcb_pre_tmp_18 = 0; xcb_pre_tmp_18 < xcb_pre_tmp_17; xcb_pre_tmp_18++) { + const uint32_t *xcb_listelement = xcb_pre_tmp_20; + xcb_pre_tmp_19 += xcb_popcount((*xcb_listelement)); + xcb_pre_tmp_20++; + } + /* sumof end. Result is in xcb_pre_tmp_19 */ + return xcb_pre_tmp_19; +} + +xcb_input_fp3232_iterator_t +xcb_input_raw_button_press_axisvalues_raw_iterator (const xcb_input_raw_button_press_event_t *R) +{ + xcb_input_fp3232_iterator_t i; + xcb_generic_iterator_t prev = xcb_input_fp3232_end(xcb_input_raw_button_press_axisvalues_iterator(R)); + int xcb_pre_tmp_21; /* sumof length */ + int xcb_pre_tmp_22; /* sumof loop counter */ + int64_t xcb_pre_tmp_23; /* sumof sum */ + const uint32_t* xcb_pre_tmp_24; /* sumof list ptr */ + /* sumof start */ + xcb_pre_tmp_21 = R->valuators_len; + xcb_pre_tmp_23 = 0; + xcb_pre_tmp_24 = xcb_input_raw_button_press_valuator_mask(R); + for (xcb_pre_tmp_22 = 0; xcb_pre_tmp_22 < xcb_pre_tmp_21; xcb_pre_tmp_22++) { + const uint32_t *xcb_listelement = xcb_pre_tmp_24; + xcb_pre_tmp_23 += xcb_popcount((*xcb_listelement)); + xcb_pre_tmp_24++; + } + /* sumof end. Result is in xcb_pre_tmp_23 */ + i.data = (xcb_input_fp3232_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_input_fp3232_t, prev.index)); + i.rem = xcb_pre_tmp_23; + i.index = (char *) i.data - (char *) R; + return i; +} + +int +xcb_input_raw_button_release_sizeof (const void *_buffer /**< */) +{ + return xcb_input_raw_button_press_sizeof(_buffer); +} + +int +xcb_input_raw_motion_sizeof (const void *_buffer /**< */) +{ + return xcb_input_raw_button_press_sizeof(_buffer); +} + +int +xcb_input_touch_begin_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_touch_begin_event_t *_aux = (xcb_input_touch_begin_event_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + int xcb_pre_tmp_1; /* sumof length */ + int xcb_pre_tmp_2; /* sumof loop counter */ + int64_t xcb_pre_tmp_3; /* sumof sum */ + const uint32_t* xcb_pre_tmp_4; /* sumof list ptr */ + + xcb_block_len += sizeof(xcb_input_touch_begin_event_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* button_mask */ + xcb_block_len += _aux->buttons_len * sizeof(uint32_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint32_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* valuator_mask */ + xcb_block_len += _aux->valuators_len * sizeof(uint32_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint32_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* axisvalues */ + /* sumof start */ + xcb_pre_tmp_1 = _aux->valuators_len; + xcb_pre_tmp_3 = 0; + xcb_pre_tmp_4 = xcb_input_touch_begin_valuator_mask(_aux); + for (xcb_pre_tmp_2 = 0; xcb_pre_tmp_2 < xcb_pre_tmp_1; xcb_pre_tmp_2++) { + const uint32_t *xcb_listelement = xcb_pre_tmp_4; + xcb_pre_tmp_3 += xcb_popcount((*xcb_listelement)); + xcb_pre_tmp_4++; + } + /* sumof end. Result is in xcb_pre_tmp_3 */ + xcb_block_len += xcb_pre_tmp_3 * sizeof(xcb_input_fp3232_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_input_fp3232_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +uint32_t * +xcb_input_touch_begin_button_mask (const xcb_input_touch_begin_event_t *R) +{ + return (uint32_t *) (R + 1); +} + +int +xcb_input_touch_begin_button_mask_length (const xcb_input_touch_begin_event_t *R) +{ + return R->buttons_len; +} + +xcb_generic_iterator_t +xcb_input_touch_begin_button_mask_end (const xcb_input_touch_begin_event_t *R) +{ + xcb_generic_iterator_t i; + i.data = ((uint32_t *) (R + 1)) + (R->buttons_len); + i.rem = 0; + i.index = (char *) i.data - (char *) R; + return i; +} + +uint32_t * +xcb_input_touch_begin_valuator_mask (const xcb_input_touch_begin_event_t *R) +{ + xcb_generic_iterator_t prev = xcb_input_touch_begin_button_mask_end(R); + return (uint32_t *) ((char *) prev.data + XCB_TYPE_PAD(uint32_t, prev.index) + 0); +} + +int +xcb_input_touch_begin_valuator_mask_length (const xcb_input_touch_begin_event_t *R) +{ + return R->valuators_len; +} + +xcb_generic_iterator_t +xcb_input_touch_begin_valuator_mask_end (const xcb_input_touch_begin_event_t *R) +{ + xcb_generic_iterator_t i; + xcb_generic_iterator_t prev = xcb_input_touch_begin_button_mask_end(R); + i.data = ((uint32_t *) ((char*) prev.data + XCB_TYPE_PAD(uint32_t, prev.index))) + (R->valuators_len); + i.rem = 0; + i.index = (char *) i.data - (char *) R; + return i; +} + +xcb_input_fp3232_t * +xcb_input_touch_begin_axisvalues (const xcb_input_touch_begin_event_t *R) +{ + xcb_generic_iterator_t prev = xcb_input_touch_begin_valuator_mask_end(R); + return (xcb_input_fp3232_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_input_fp3232_t, prev.index) + 0); +} + +int +xcb_input_touch_begin_axisvalues_length (const xcb_input_touch_begin_event_t *R) +{ + int xcb_pre_tmp_5; /* sumof length */ + int xcb_pre_tmp_6; /* sumof loop counter */ + int64_t xcb_pre_tmp_7; /* sumof sum */ + const uint32_t* xcb_pre_tmp_8; /* sumof list ptr */ + /* sumof start */ + xcb_pre_tmp_5 = R->valuators_len; + xcb_pre_tmp_7 = 0; + xcb_pre_tmp_8 = xcb_input_touch_begin_valuator_mask(R); + for (xcb_pre_tmp_6 = 0; xcb_pre_tmp_6 < xcb_pre_tmp_5; xcb_pre_tmp_6++) { + const uint32_t *xcb_listelement = xcb_pre_tmp_8; + xcb_pre_tmp_7 += xcb_popcount((*xcb_listelement)); + xcb_pre_tmp_8++; + } + /* sumof end. Result is in xcb_pre_tmp_7 */ + return xcb_pre_tmp_7; +} + +xcb_input_fp3232_iterator_t +xcb_input_touch_begin_axisvalues_iterator (const xcb_input_touch_begin_event_t *R) +{ + xcb_input_fp3232_iterator_t i; + xcb_generic_iterator_t prev = xcb_input_touch_begin_valuator_mask_end(R); + int xcb_pre_tmp_9; /* sumof length */ + int xcb_pre_tmp_10; /* sumof loop counter */ + int64_t xcb_pre_tmp_11; /* sumof sum */ + const uint32_t* xcb_pre_tmp_12; /* sumof list ptr */ + /* sumof start */ + xcb_pre_tmp_9 = R->valuators_len; + xcb_pre_tmp_11 = 0; + xcb_pre_tmp_12 = xcb_input_touch_begin_valuator_mask(R); + for (xcb_pre_tmp_10 = 0; xcb_pre_tmp_10 < xcb_pre_tmp_9; xcb_pre_tmp_10++) { + const uint32_t *xcb_listelement = xcb_pre_tmp_12; + xcb_pre_tmp_11 += xcb_popcount((*xcb_listelement)); + xcb_pre_tmp_12++; + } + /* sumof end. Result is in xcb_pre_tmp_11 */ + i.data = (xcb_input_fp3232_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_input_fp3232_t, prev.index)); + i.rem = xcb_pre_tmp_11; + i.index = (char *) i.data - (char *) R; + return i; +} + +int +xcb_input_touch_update_sizeof (const void *_buffer /**< */) +{ + return xcb_input_touch_begin_sizeof(_buffer); +} + +int +xcb_input_touch_end_sizeof (const void *_buffer /**< */) +{ + return xcb_input_touch_begin_sizeof(_buffer); +} + +int +xcb_input_raw_touch_begin_sizeof (const void *_buffer) +{ + char *xcb_tmp = (char *)_buffer; + const xcb_input_raw_touch_begin_event_t *_aux = (xcb_input_raw_touch_begin_event_t *)_buffer; + unsigned int xcb_buffer_len = 0; + unsigned int xcb_block_len = 0; + unsigned int xcb_pad = 0; + unsigned int xcb_align_to = 0; + + int xcb_pre_tmp_1; /* sumof length */ + int xcb_pre_tmp_2; /* sumof loop counter */ + int64_t xcb_pre_tmp_3; /* sumof sum */ + const uint32_t* xcb_pre_tmp_4; /* sumof list ptr */ + int xcb_pre_tmp_5; /* sumof length */ + int xcb_pre_tmp_6; /* sumof loop counter */ + int64_t xcb_pre_tmp_7; /* sumof sum */ + const uint32_t* xcb_pre_tmp_8; /* sumof list ptr */ + + xcb_block_len += sizeof(xcb_input_raw_touch_begin_event_t); + xcb_tmp += xcb_block_len; + xcb_buffer_len += xcb_block_len; + xcb_block_len = 0; + /* valuator_mask */ + xcb_block_len += _aux->valuators_len * sizeof(uint32_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(uint32_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* axisvalues */ + /* sumof start */ + xcb_pre_tmp_1 = _aux->valuators_len; + xcb_pre_tmp_3 = 0; + xcb_pre_tmp_4 = xcb_input_raw_touch_begin_valuator_mask(_aux); + for (xcb_pre_tmp_2 = 0; xcb_pre_tmp_2 < xcb_pre_tmp_1; xcb_pre_tmp_2++) { + const uint32_t *xcb_listelement = xcb_pre_tmp_4; + xcb_pre_tmp_3 += xcb_popcount((*xcb_listelement)); + xcb_pre_tmp_4++; + } + /* sumof end. Result is in xcb_pre_tmp_3 */ + xcb_block_len += xcb_pre_tmp_3 * sizeof(xcb_input_fp3232_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_input_fp3232_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + /* axisvalues_raw */ + /* sumof start */ + xcb_pre_tmp_5 = _aux->valuators_len; + xcb_pre_tmp_7 = 0; + xcb_pre_tmp_8 = xcb_input_raw_touch_begin_valuator_mask(_aux); + for (xcb_pre_tmp_6 = 0; xcb_pre_tmp_6 < xcb_pre_tmp_5; xcb_pre_tmp_6++) { + const uint32_t *xcb_listelement = xcb_pre_tmp_8; + xcb_pre_tmp_7 += xcb_popcount((*xcb_listelement)); + xcb_pre_tmp_8++; + } + /* sumof end. Result is in xcb_pre_tmp_7 */ + xcb_block_len += xcb_pre_tmp_7 * sizeof(xcb_input_fp3232_t); + xcb_tmp += xcb_block_len; + xcb_align_to = ALIGNOF(xcb_input_fp3232_t); + /* insert padding */ + xcb_pad = -xcb_block_len & (xcb_align_to - 1); + xcb_buffer_len += xcb_block_len + xcb_pad; + if (0 != xcb_pad) { + xcb_tmp += xcb_pad; + xcb_pad = 0; + } + xcb_block_len = 0; + + return xcb_buffer_len; +} + +uint32_t * +xcb_input_raw_touch_begin_valuator_mask (const xcb_input_raw_touch_begin_event_t *R) +{ + return (uint32_t *) (R + 1); +} + +int +xcb_input_raw_touch_begin_valuator_mask_length (const xcb_input_raw_touch_begin_event_t *R) +{ + return R->valuators_len; +} + +xcb_generic_iterator_t +xcb_input_raw_touch_begin_valuator_mask_end (const xcb_input_raw_touch_begin_event_t *R) +{ + xcb_generic_iterator_t i; + i.data = ((uint32_t *) (R + 1)) + (R->valuators_len); + i.rem = 0; + i.index = (char *) i.data - (char *) R; + return i; +} + +xcb_input_fp3232_t * +xcb_input_raw_touch_begin_axisvalues (const xcb_input_raw_touch_begin_event_t *R) +{ + xcb_generic_iterator_t prev = xcb_input_raw_touch_begin_valuator_mask_end(R); + return (xcb_input_fp3232_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_input_fp3232_t, prev.index) + 0); +} + +int +xcb_input_raw_touch_begin_axisvalues_length (const xcb_input_raw_touch_begin_event_t *R) +{ + int xcb_pre_tmp_9; /* sumof length */ + int xcb_pre_tmp_10; /* sumof loop counter */ + int64_t xcb_pre_tmp_11; /* sumof sum */ + const uint32_t* xcb_pre_tmp_12; /* sumof list ptr */ + /* sumof start */ + xcb_pre_tmp_9 = R->valuators_len; + xcb_pre_tmp_11 = 0; + xcb_pre_tmp_12 = xcb_input_raw_touch_begin_valuator_mask(R); + for (xcb_pre_tmp_10 = 0; xcb_pre_tmp_10 < xcb_pre_tmp_9; xcb_pre_tmp_10++) { + const uint32_t *xcb_listelement = xcb_pre_tmp_12; + xcb_pre_tmp_11 += xcb_popcount((*xcb_listelement)); + xcb_pre_tmp_12++; + } + /* sumof end. Result is in xcb_pre_tmp_11 */ + return xcb_pre_tmp_11; +} + +xcb_input_fp3232_iterator_t +xcb_input_raw_touch_begin_axisvalues_iterator (const xcb_input_raw_touch_begin_event_t *R) +{ + xcb_input_fp3232_iterator_t i; + xcb_generic_iterator_t prev = xcb_input_raw_touch_begin_valuator_mask_end(R); + int xcb_pre_tmp_13; /* sumof length */ + int xcb_pre_tmp_14; /* sumof loop counter */ + int64_t xcb_pre_tmp_15; /* sumof sum */ + const uint32_t* xcb_pre_tmp_16; /* sumof list ptr */ + /* sumof start */ + xcb_pre_tmp_13 = R->valuators_len; + xcb_pre_tmp_15 = 0; + xcb_pre_tmp_16 = xcb_input_raw_touch_begin_valuator_mask(R); + for (xcb_pre_tmp_14 = 0; xcb_pre_tmp_14 < xcb_pre_tmp_13; xcb_pre_tmp_14++) { + const uint32_t *xcb_listelement = xcb_pre_tmp_16; + xcb_pre_tmp_15 += xcb_popcount((*xcb_listelement)); + xcb_pre_tmp_16++; + } + /* sumof end. Result is in xcb_pre_tmp_15 */ + i.data = (xcb_input_fp3232_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_input_fp3232_t, prev.index)); + i.rem = xcb_pre_tmp_15; + i.index = (char *) i.data - (char *) R; + return i; +} + +xcb_input_fp3232_t * +xcb_input_raw_touch_begin_axisvalues_raw (const xcb_input_raw_touch_begin_event_t *R) +{ + xcb_generic_iterator_t prev = xcb_input_fp3232_end(xcb_input_raw_touch_begin_axisvalues_iterator(R)); + return (xcb_input_fp3232_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_input_fp3232_t, prev.index) + 0); +} + +int +xcb_input_raw_touch_begin_axisvalues_raw_length (const xcb_input_raw_touch_begin_event_t *R) +{ + int xcb_pre_tmp_17; /* sumof length */ + int xcb_pre_tmp_18; /* sumof loop counter */ + int64_t xcb_pre_tmp_19; /* sumof sum */ + const uint32_t* xcb_pre_tmp_20; /* sumof list ptr */ + /* sumof start */ + xcb_pre_tmp_17 = R->valuators_len; + xcb_pre_tmp_19 = 0; + xcb_pre_tmp_20 = xcb_input_raw_touch_begin_valuator_mask(R); + for (xcb_pre_tmp_18 = 0; xcb_pre_tmp_18 < xcb_pre_tmp_17; xcb_pre_tmp_18++) { + const uint32_t *xcb_listelement = xcb_pre_tmp_20; + xcb_pre_tmp_19 += xcb_popcount((*xcb_listelement)); + xcb_pre_tmp_20++; + } + /* sumof end. Result is in xcb_pre_tmp_19 */ + return xcb_pre_tmp_19; +} + +xcb_input_fp3232_iterator_t +xcb_input_raw_touch_begin_axisvalues_raw_iterator (const xcb_input_raw_touch_begin_event_t *R) +{ + xcb_input_fp3232_iterator_t i; + xcb_generic_iterator_t prev = xcb_input_fp3232_end(xcb_input_raw_touch_begin_axisvalues_iterator(R)); + int xcb_pre_tmp_21; /* sumof length */ + int xcb_pre_tmp_22; /* sumof loop counter */ + int64_t xcb_pre_tmp_23; /* sumof sum */ + const uint32_t* xcb_pre_tmp_24; /* sumof list ptr */ + /* sumof start */ + xcb_pre_tmp_21 = R->valuators_len; + xcb_pre_tmp_23 = 0; + xcb_pre_tmp_24 = xcb_input_raw_touch_begin_valuator_mask(R); + for (xcb_pre_tmp_22 = 0; xcb_pre_tmp_22 < xcb_pre_tmp_21; xcb_pre_tmp_22++) { + const uint32_t *xcb_listelement = xcb_pre_tmp_24; + xcb_pre_tmp_23 += xcb_popcount((*xcb_listelement)); + xcb_pre_tmp_24++; + } + /* sumof end. Result is in xcb_pre_tmp_23 */ + i.data = (xcb_input_fp3232_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_input_fp3232_t, prev.index)); + i.rem = xcb_pre_tmp_23; + i.index = (char *) i.data - (char *) R; + return i; +} + +int +xcb_input_raw_touch_update_sizeof (const void *_buffer /**< */) +{ + return xcb_input_raw_touch_begin_sizeof(_buffer); +} + +int +xcb_input_raw_touch_end_sizeof (const void *_buffer /**< */) +{ + return xcb_input_raw_touch_begin_sizeof(_buffer); +} diff --git a/src/3rdparty/xcb/libxcb/xkb.c b/src/3rdparty/xcb/libxcb/xkb.c index ff025f6b60..d55bd76f10 100644 --- a/src/3rdparty/xcb/libxcb/xkb.c +++ b/src/3rdparty/xcb/libxcb/xkb.c @@ -18,15 +18,6 @@ xcb_extension_t xcb_xkb_id = { "XKEYBOARD", 0 }; -int qt_xcb_sumof(uint8_t *list, int len) -{ - int i, s = 0; - for(i=0; i<len; i++) { - s += *list; - list++; - } - return s; -} /***************************************************************************** ** @@ -9034,7 +9025,7 @@ int xcb_xkb_get_names_value_list_kt_level_names_length (const xcb_xkb_get_names_reply_t *R /**< */, const xcb_xkb_get_names_value_list_t *S /**< */) { - return qt_xcb_sumof(/* valueList */ S->nLevelsPerType, R->nTypes); + return xcb_sumof(/* valueList */ S->nLevelsPerType, R->nTypes); } @@ -9052,7 +9043,7 @@ xcb_xkb_get_names_value_list_kt_level_names_end (const xcb_xkb_get_names_reply_t const xcb_xkb_get_names_value_list_t *S /**< */) { xcb_generic_iterator_t i; - i.data = /* valueList */ S->ktLevelNames + qt_xcb_sumof(/* valueList */ S->nLevelsPerType, R->nTypes); + i.data = /* valueList */ S->ktLevelNames + xcb_sumof(/* valueList */ S->nLevelsPerType, R->nTypes); i.rem = 0; i.index = (char *) i.data - (char *) S; return i; @@ -9517,8 +9508,8 @@ xcb_xkb_get_names_value_list_serialize (void **_ xcb_block_len = 0; /* ktLevelNames */ xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->ktLevelNames; - xcb_block_len += qt_xcb_sumof(_aux->nLevelsPerType, nTypes) * sizeof(xcb_atom_t); - xcb_parts[xcb_parts_idx].iov_len = qt_xcb_sumof(_aux->nLevelsPerType, nTypes) * sizeof(xcb_atom_t); + xcb_block_len += xcb_sumof(_aux->nLevelsPerType, nTypes) * sizeof(xcb_atom_t); + xcb_parts[xcb_parts_idx].iov_len = xcb_sumof(_aux->nLevelsPerType, nTypes) * sizeof(xcb_atom_t); xcb_parts_idx++; xcb_align_to = ALIGNOF(xcb_atom_t); } @@ -9771,7 +9762,7 @@ xcb_xkb_get_names_value_list_unpack (const void *_buffer / xcb_block_len = 0; /* ktLevelNames */ _aux->ktLevelNames = (xcb_atom_t *)xcb_tmp; - xcb_block_len += qt_xcb_sumof(_aux->nLevelsPerType, nTypes) * sizeof(xcb_atom_t); + xcb_block_len += xcb_sumof(_aux->nLevelsPerType, nTypes) * sizeof(xcb_atom_t); xcb_tmp += xcb_block_len; xcb_align_to = ALIGNOF(xcb_atom_t); } @@ -10148,7 +10139,7 @@ int xcb_xkb_set_names_values_kt_level_names_length (const xcb_xkb_set_names_request_t *R /**< */, const xcb_xkb_set_names_values_t *S /**< */) { - return qt_xcb_sumof(/* values */ S->nLevelsPerType, R->nKTLevels); + return xcb_sumof(/* values */ S->nLevelsPerType, R->nKTLevels); } @@ -10166,7 +10157,7 @@ xcb_xkb_set_names_values_kt_level_names_end (const xcb_xkb_set_names_request_t * const xcb_xkb_set_names_values_t *S /**< */) { xcb_generic_iterator_t i; - i.data = /* values */ S->ktLevelNames + qt_xcb_sumof(/* values */ S->nLevelsPerType, R->nKTLevels); + i.data = /* values */ S->ktLevelNames + xcb_sumof(/* values */ S->nLevelsPerType, R->nKTLevels); i.rem = 0; i.index = (char *) i.data - (char *) S; return i; @@ -10616,8 +10607,8 @@ xcb_xkb_set_names_values_serialize (void **_buffer xcb_block_len = 0; /* ktLevelNames */ xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->ktLevelNames; - xcb_block_len += qt_xcb_sumof(_aux->nLevelsPerType, nKTLevels) * sizeof(xcb_atom_t); - xcb_parts[xcb_parts_idx].iov_len = qt_xcb_sumof(_aux->nLevelsPerType, nKTLevels) * sizeof(xcb_atom_t); + xcb_block_len += xcb_sumof(_aux->nLevelsPerType, nKTLevels) * sizeof(xcb_atom_t); + xcb_parts[xcb_parts_idx].iov_len = xcb_sumof(_aux->nLevelsPerType, nKTLevels) * sizeof(xcb_atom_t); xcb_parts_idx++; xcb_align_to = ALIGNOF(xcb_atom_t); } @@ -10858,7 +10849,7 @@ xcb_xkb_set_names_values_unpack (const void *_buffer /**< */, xcb_block_len = 0; /* ktLevelNames */ _aux->ktLevelNames = (xcb_atom_t *)xcb_tmp; - xcb_block_len += qt_xcb_sumof(_aux->nLevelsPerType, nKTLevels) * sizeof(xcb_atom_t); + xcb_block_len += xcb_sumof(_aux->nLevelsPerType, nKTLevels) * sizeof(xcb_atom_t); xcb_tmp += xcb_block_len; xcb_align_to = ALIGNOF(xcb_atom_t); } @@ -12881,7 +12872,7 @@ int xcb_xkb_get_kbd_by_name_replies_key_names_value_list_kt_level_names_length (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */, const xcb_xkb_get_kbd_by_name_replies_t *S /**< */) { - return qt_xcb_sumof(/* replies */ S->key_names.valueList.nLevelsPerType, /* replies */ S->key_names.nKTLevels); + return xcb_sumof(/* replies */ S->key_names.valueList.nLevelsPerType, /* replies */ S->key_names.nKTLevels); } @@ -12899,7 +12890,7 @@ xcb_xkb_get_kbd_by_name_replies_key_names_value_list_kt_level_names_end (const x const xcb_xkb_get_kbd_by_name_replies_t *S /**< */) { xcb_generic_iterator_t i; - i.data = /* replies */ S->key_names.valueList.ktLevelNames + qt_xcb_sumof(/* replies */ S->key_names.valueList.nLevelsPerType, /* replies */ S->key_names.nKTLevels); + i.data = /* replies */ S->key_names.valueList.ktLevelNames + xcb_sumof(/* replies */ S->key_names.valueList.nLevelsPerType, /* replies */ S->key_names.nKTLevels); i.rem = 0; i.index = (char *) i.data - (char *) S; return i; @@ -13349,8 +13340,8 @@ xcb_xkb_get_kbd_by_name_replies_key_names_value_list_serialize (void xcb_block_len = 0; /* ktLevelNames */ xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->ktLevelNames; - xcb_block_len += qt_xcb_sumof(_aux->nLevelsPerType, nKTLevels) * sizeof(xcb_atom_t); - xcb_parts[xcb_parts_idx].iov_len = qt_xcb_sumof(_aux->nLevelsPerType, nKTLevels) * sizeof(xcb_atom_t); + xcb_block_len += xcb_sumof(_aux->nLevelsPerType, nKTLevels) * sizeof(xcb_atom_t); + xcb_parts[xcb_parts_idx].iov_len = xcb_sumof(_aux->nLevelsPerType, nKTLevels) * sizeof(xcb_atom_t); xcb_parts_idx++; xcb_align_to = ALIGNOF(xcb_atom_t); } @@ -13591,7 +13582,7 @@ xcb_xkb_get_kbd_by_name_replies_key_names_value_list_unpack (const void xcb_block_len = 0; /* ktLevelNames */ _aux->ktLevelNames = (xcb_atom_t *)xcb_tmp; - xcb_block_len += qt_xcb_sumof(_aux->nLevelsPerType, nKTLevels) * sizeof(xcb_atom_t); + xcb_block_len += xcb_sumof(_aux->nLevelsPerType, nKTLevels) * sizeof(xcb_atom_t); xcb_tmp += xcb_block_len; xcb_align_to = ALIGNOF(xcb_atom_t); } |