Module Name:    src
Committed By:   mrg
Date:           Tue Jul 12 02:44:09 UTC 2022

Modified Files:
        src/external/mit/xorg/lib/libxcb/files: config.h damage.h dri3.c dri3.h
            glx.c randr.h record.h render.h screensaver.c screensaver.h shm.h
            xfixes.c xfixes.h xinput.c xinput.h xproto.h xv.h
Removed Files:
        src/external/mit/xorg/lib/libxcb/files: xf86vidmode.c xf86vidmode.h

Log Message:
updates for generated files.


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/external/mit/xorg/lib/libxcb/files/config.h \
    src/external/mit/xorg/lib/libxcb/files/damage.h \
    src/external/mit/xorg/lib/libxcb/files/glx.c \
    src/external/mit/xorg/lib/libxcb/files/render.h \
    src/external/mit/xorg/lib/libxcb/files/screensaver.c \
    src/external/mit/xorg/lib/libxcb/files/screensaver.h \
    src/external/mit/xorg/lib/libxcb/files/shm.h \
    src/external/mit/xorg/lib/libxcb/files/xfixes.c \
    src/external/mit/xorg/lib/libxcb/files/xfixes.h \
    src/external/mit/xorg/lib/libxcb/files/xproto.h \
    src/external/mit/xorg/lib/libxcb/files/xv.h
cvs rdiff -u -r1.4 -r1.5 src/external/mit/xorg/lib/libxcb/files/dri3.c \
    src/external/mit/xorg/lib/libxcb/files/dri3.h \
    src/external/mit/xorg/lib/libxcb/files/record.h
cvs rdiff -u -r1.6 -r1.7 src/external/mit/xorg/lib/libxcb/files/randr.h \
    src/external/mit/xorg/lib/libxcb/files/xinput.c \
    src/external/mit/xorg/lib/libxcb/files/xinput.h
cvs rdiff -u -r1.1 -r0 src/external/mit/xorg/lib/libxcb/files/xf86vidmode.c \
    src/external/mit/xorg/lib/libxcb/files/xf86vidmode.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/external/mit/xorg/lib/libxcb/files/config.h
diff -u src/external/mit/xorg/lib/libxcb/files/config.h:1.5 src/external/mit/xorg/lib/libxcb/files/config.h:1.6
--- src/external/mit/xorg/lib/libxcb/files/config.h:1.5	Wed Mar 14 06:47:28 2018
+++ src/external/mit/xorg/lib/libxcb/files/config.h	Tue Jul 12 02:44:09 2022
@@ -28,8 +28,8 @@
 /* Define to 1 if you have the `ws2_32' library (-lws2_32). */
 /* #undef HAVE_LIBWS2_32 */
 
-/* Define to 1 if you have the <memory.h> header file. */
-#define HAVE_MEMORY_H 1
+/* Define to 1 if you have the <minix/config.h> header file. */
+/* #undef HAVE_MINIX_CONFIG_H */
 
 /* Define if your platform supports sendmsg */
 #define HAVE_SENDMSG 1
@@ -40,6 +40,9 @@
 /* Define to 1 if you have the <stdint.h> header file. */
 #define HAVE_STDINT_H 1
 
+/* Define to 1 if you have the <stdio.h> header file. */
+#define HAVE_STDIO_H 1
+
 /* Define to 1 if you have the <stdlib.h> header file. */
 #define HAVE_STDLIB_H 1
 
@@ -61,6 +64,9 @@
 /* Define to 1 if you have the <unistd.h> header file. */
 #define HAVE_UNISTD_H 1
 
+/* Define to 1 if you have the <wchar.h> header file. */
+#define HAVE_WCHAR_H 1
+
 /* Define if not provided by <limits.h> */
 /* #undef IOV_MAX */
 
@@ -71,13 +77,13 @@
 #define PACKAGE "libxcb"
 
 /* Define to the address where bug reports for this package should be sent. */
-#define PACKAGE_BUGREPORT "https://bugs.freedesktop.org/enter_bug.cgi?product=xcb";
+#define PACKAGE_BUGREPORT "https://gitlab.freedesktop.org/xorg/lib/libxcb/issues";
 
 /* Define to the full name of this package. */
 #define PACKAGE_NAME "libxcb"
 
 /* Define to the full name and version of this package. */
-#define PACKAGE_STRING "libxcb 1.13"
+#define PACKAGE_STRING "libxcb 1.15"
 
 /* Define to the one symbol short name of this package. */
 #define PACKAGE_TARNAME "libxcb"
@@ -86,18 +92,20 @@
 #define PACKAGE_URL ""
 
 /* Define to the version of this package. */
-#define PACKAGE_VERSION "1.13"
+#define PACKAGE_VERSION "1.15"
 
 /* Major version of this package */
 #define PACKAGE_VERSION_MAJOR 1
 
 /* Minor version of this package */
-#define PACKAGE_VERSION_MINOR 13
+#define PACKAGE_VERSION_MINOR 15
 
 /* Patch version of this package */
 #define PACKAGE_VERSION_PATCHLEVEL 0
 
-/* Define to 1 if you have the ANSI C header files. */
+/* Define to 1 if all of the C90 standard headers exist (not just the ones
+   required in a freestanding environment). This macro is provided for
+   backward compatibility; new code need not use it. */
 #define STDC_HEADERS 1
 
 /* poll() function is available */
@@ -107,39 +115,95 @@
 #ifndef _ALL_SOURCE
 # define _ALL_SOURCE 1
 #endif
+/* Enable general extensions on macOS.  */
+#ifndef _DARWIN_C_SOURCE
+# define _DARWIN_C_SOURCE 1
+#endif
+/* Enable general extensions on Solaris.  */
+#ifndef __EXTENSIONS__
+# define __EXTENSIONS__ 1
+#endif
 /* Enable GNU extensions on systems that have them.  */
 #ifndef _GNU_SOURCE
 # define _GNU_SOURCE 1
 #endif
-/* Enable threading extensions on Solaris.  */
+/* Enable X/Open compliant socket functions that do not require linking
+   with -lxnet on HP-UX 11.11.  */
+#ifndef _HPUX_ALT_XOPEN_SOCKET_API
+# define _HPUX_ALT_XOPEN_SOCKET_API 1
+#endif
+/* Identify the host operating system as Minix.
+   This macro does not affect the system headers' behavior.
+   A future release of Autoconf may stop defining this macro.  */
+#ifndef _MINIX
+/* # undef _MINIX */
+#endif
+/* Enable general extensions on NetBSD.
+   Enable NetBSD compatibility extensions on Minix.  */
+#ifndef _NETBSD_SOURCE
+# define _NETBSD_SOURCE 1
+#endif
+/* Enable OpenBSD compatibility extensions on NetBSD.
+   Oddly enough, this does nothing on OpenBSD.  */
+#ifndef _OPENBSD_SOURCE
+# define _OPENBSD_SOURCE 1
+#endif
+/* Define to 1 if needed for POSIX-compatible behavior.  */
+#ifndef _POSIX_SOURCE
+/* # undef _POSIX_SOURCE */
+#endif
+/* Define to 2 if needed for POSIX-compatible behavior.  */
+#ifndef _POSIX_1_SOURCE
+/* # undef _POSIX_1_SOURCE */
+#endif
+/* Enable POSIX-compatible threading on Solaris.  */
 #ifndef _POSIX_PTHREAD_SEMANTICS
 # define _POSIX_PTHREAD_SEMANTICS 1
 #endif
+/* Enable extensions specified by ISO/IEC TS 18661-5:2014.  */
+#ifndef __STDC_WANT_IEC_60559_ATTRIBS_EXT__
+# define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1
+#endif
+/* Enable extensions specified by ISO/IEC TS 18661-1:2014.  */
+#ifndef __STDC_WANT_IEC_60559_BFP_EXT__
+# define __STDC_WANT_IEC_60559_BFP_EXT__ 1
+#endif
+/* Enable extensions specified by ISO/IEC TS 18661-2:2015.  */
+#ifndef __STDC_WANT_IEC_60559_DFP_EXT__
+# define __STDC_WANT_IEC_60559_DFP_EXT__ 1
+#endif
+/* Enable extensions specified by ISO/IEC TS 18661-4:2015.  */
+#ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__
+# define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1
+#endif
+/* Enable extensions specified by ISO/IEC TS 18661-3:2015.  */
+#ifndef __STDC_WANT_IEC_60559_TYPES_EXT__
+# define __STDC_WANT_IEC_60559_TYPES_EXT__ 1
+#endif
+/* Enable extensions specified by ISO/IEC TR 24731-2:2010.  */
+#ifndef __STDC_WANT_LIB_EXT2__
+# define __STDC_WANT_LIB_EXT2__ 1
+#endif
+/* Enable extensions specified by ISO/IEC 24747:2009.  */
+#ifndef __STDC_WANT_MATH_SPEC_FUNCS__
+# define __STDC_WANT_MATH_SPEC_FUNCS__ 1
+#endif
 /* Enable extensions on HP NonStop.  */
 #ifndef _TANDEM_SOURCE
 # define _TANDEM_SOURCE 1
 #endif
-/* Enable general extensions on Solaris.  */
-#ifndef __EXTENSIONS__
-# define __EXTENSIONS__ 1
+/* Enable X/Open extensions.  Define to 500 only if necessary
+   to make mbstate_t available.  */
+#ifndef _XOPEN_SOURCE
+/* # undef _XOPEN_SOURCE */
 #endif
 
 
 /* Version number of package */
-#define VERSION "1.13"
+#define VERSION "1.15"
 
 /* XCB buffer queue size */
 #define XCB_QUEUE_BUFFER_SIZE 16384
 
-/* Define to 1 if on MINIX. */
-/* #undef _MINIX */
-
-/* Define to 2 if the system does not provide POSIX.1 features except with
-   this defined. */
-/* #undef _POSIX_1_SOURCE */
-
-/* Define to 1 if you need to in order for `stat' and other things to work. */
-/* #undef _POSIX_SOURCE */
-
 /* Defined if needed to expose struct msghdr.msg_control */
 /* #undef _XOPEN_SOURCE */
Index: src/external/mit/xorg/lib/libxcb/files/damage.h
diff -u src/external/mit/xorg/lib/libxcb/files/damage.h:1.5 src/external/mit/xorg/lib/libxcb/files/damage.h:1.6
--- src/external/mit/xorg/lib/libxcb/files/damage.h:1.5	Sun Mar  5 09:27:53 2017
+++ src/external/mit/xorg/lib/libxcb/files/damage.h	Tue Jul 12 02:44:09 2022
@@ -53,6 +53,9 @@ typedef struct xcb_damage_bad_damage_err
     uint8_t  response_type;
     uint8_t  error_code;
     uint16_t sequence;
+    uint32_t bad_value;
+    uint16_t minor_opcode;
+    uint8_t  major_opcode;
 } xcb_damage_bad_damage_error_t;
 
 /**
Index: src/external/mit/xorg/lib/libxcb/files/glx.c
diff -u src/external/mit/xorg/lib/libxcb/files/glx.c:1.5 src/external/mit/xorg/lib/libxcb/files/glx.c:1.6
--- src/external/mit/xorg/lib/libxcb/files/glx.c:1.5	Sun Mar  5 09:27:53 2017
+++ src/external/mit/xorg/lib/libxcb/files/glx.c	Tue Jul 12 02:44:09 2022
@@ -3025,6 +3025,15 @@ xcb_glx_set_client_info_arb_sizeof (cons
     xcb_block_len += _aux->gl_str_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;
@@ -3203,7 +3212,7 @@ char *
 xcb_glx_set_client_info_arb_glx_extension_string (const xcb_glx_set_client_info_arb_request_t *R)
 {
     xcb_generic_iterator_t prev = xcb_glx_set_client_info_arb_gl_extension_string_end(R);
-    return (char *) ((char *) prev.data + XCB_TYPE_PAD(char, prev.index) + 0);
+    return (char *) ((char *) prev.data + ((-prev.index) & (4 - 1)) + 0);
 }
 
 int
@@ -3217,7 +3226,7 @@ xcb_glx_set_client_info_arb_glx_extensio
 {
     xcb_generic_iterator_t i;
     xcb_generic_iterator_t prev = xcb_glx_set_client_info_arb_gl_extension_string_end(R);
-    i.data = ((char *) ((char*) prev.data + XCB_TYPE_PAD(char, prev.index))) + (R->glx_str_len);
+    i.data = ((char *) ((char*) prev.data + ((-prev.index) & (4 - 1)))) + (R->glx_str_len);
     i.rem = 0;
     i.index = (char *) i.data - (char *) R;
     return i;
@@ -3393,6 +3402,15 @@ xcb_glx_set_client_info_2arb_sizeof (con
     xcb_block_len += _aux->gl_str_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;
@@ -3571,7 +3589,7 @@ char *
 xcb_glx_set_client_info_2arb_glx_extension_string (const xcb_glx_set_client_info_2arb_request_t *R)
 {
     xcb_generic_iterator_t prev = xcb_glx_set_client_info_2arb_gl_extension_string_end(R);
-    return (char *) ((char *) prev.data + XCB_TYPE_PAD(char, prev.index) + 0);
+    return (char *) ((char *) prev.data + ((-prev.index) & (4 - 1)) + 0);
 }
 
 int
@@ -3585,7 +3603,7 @@ xcb_glx_set_client_info_2arb_glx_extensi
 {
     xcb_generic_iterator_t i;
     xcb_generic_iterator_t prev = xcb_glx_set_client_info_2arb_gl_extension_string_end(R);
-    i.data = ((char *) ((char*) prev.data + XCB_TYPE_PAD(char, prev.index))) + (R->glx_str_len);
+    i.data = ((char *) ((char*) prev.data + ((-prev.index) & (4 - 1)))) + (R->glx_str_len);
     i.rem = 0;
     i.index = (char *) i.data - (char *) R;
     return i;
Index: src/external/mit/xorg/lib/libxcb/files/render.h
diff -u src/external/mit/xorg/lib/libxcb/files/render.h:1.5 src/external/mit/xorg/lib/libxcb/files/render.h:1.6
--- src/external/mit/xorg/lib/libxcb/files/render.h:1.5	Sun Mar  5 09:27:53 2017
+++ src/external/mit/xorg/lib/libxcb/files/render.h	Tue Jul 12 02:44:09 2022
@@ -196,6 +196,9 @@ typedef struct xcb_render_pict_format_er
     uint8_t  response_type;
     uint8_t  error_code;
     uint16_t sequence;
+    uint32_t bad_value;
+    uint16_t minor_opcode;
+    uint8_t  major_opcode;
 } xcb_render_pict_format_error_t;
 
 /** Opcode for xcb_render_picture. */
@@ -208,6 +211,9 @@ typedef struct xcb_render_picture_error_
     uint8_t  response_type;
     uint8_t  error_code;
     uint16_t sequence;
+    uint32_t bad_value;
+    uint16_t minor_opcode;
+    uint8_t  major_opcode;
 } xcb_render_picture_error_t;
 
 /** Opcode for xcb_render_pict_op. */
@@ -220,6 +226,9 @@ typedef struct xcb_render_pict_op_error_
     uint8_t  response_type;
     uint8_t  error_code;
     uint16_t sequence;
+    uint32_t bad_value;
+    uint16_t minor_opcode;
+    uint8_t  major_opcode;
 } xcb_render_pict_op_error_t;
 
 /** Opcode for xcb_render_glyph_set. */
@@ -232,6 +241,9 @@ typedef struct xcb_render_glyph_set_erro
     uint8_t  response_type;
     uint8_t  error_code;
     uint16_t sequence;
+    uint32_t bad_value;
+    uint16_t minor_opcode;
+    uint8_t  major_opcode;
 } xcb_render_glyph_set_error_t;
 
 /** Opcode for xcb_render_glyph. */
@@ -244,6 +256,9 @@ typedef struct xcb_render_glyph_error_t 
     uint8_t  response_type;
     uint8_t  error_code;
     uint16_t sequence;
+    uint32_t bad_value;
+    uint16_t minor_opcode;
+    uint8_t  major_opcode;
 } xcb_render_glyph_error_t;
 
 /**
Index: src/external/mit/xorg/lib/libxcb/files/screensaver.c
diff -u src/external/mit/xorg/lib/libxcb/files/screensaver.c:1.5 src/external/mit/xorg/lib/libxcb/files/screensaver.c:1.6
--- src/external/mit/xorg/lib/libxcb/files/screensaver.c:1.5	Sun Mar  5 09:27:53 2017
+++ src/external/mit/xorg/lib/libxcb/files/screensaver.c	Tue Jul 12 02:44:09 2022
@@ -797,7 +797,7 @@ xcb_screensaver_unset_attributes (xcb_co
 
 xcb_void_cookie_t
 xcb_screensaver_suspend_checked (xcb_connection_t *c,
-                                 uint8_t           suspend)
+                                 uint32_t          suspend)
 {
     static const xcb_protocol_request_t xcb_req = {
         .count = 2,
@@ -811,7 +811,6 @@ xcb_screensaver_suspend_checked (xcb_con
     xcb_screensaver_suspend_request_t xcb_out;
 
     xcb_out.suspend = suspend;
-    memset(xcb_out.pad0, 0, 3);
 
     xcb_parts[2].iov_base = (char *) &xcb_out;
     xcb_parts[2].iov_len = sizeof(xcb_out);
@@ -824,7 +823,7 @@ xcb_screensaver_suspend_checked (xcb_con
 
 xcb_void_cookie_t
 xcb_screensaver_suspend (xcb_connection_t *c,
-                         uint8_t           suspend)
+                         uint32_t          suspend)
 {
     static const xcb_protocol_request_t xcb_req = {
         .count = 2,
@@ -838,7 +837,6 @@ xcb_screensaver_suspend (xcb_connection_
     xcb_screensaver_suspend_request_t xcb_out;
 
     xcb_out.suspend = suspend;
-    memset(xcb_out.pad0, 0, 3);
 
     xcb_parts[2].iov_base = (char *) &xcb_out;
     xcb_parts[2].iov_len = sizeof(xcb_out);
Index: src/external/mit/xorg/lib/libxcb/files/screensaver.h
diff -u src/external/mit/xorg/lib/libxcb/files/screensaver.h:1.5 src/external/mit/xorg/lib/libxcb/files/screensaver.h:1.6
--- src/external/mit/xorg/lib/libxcb/files/screensaver.h:1.5	Sun Mar  5 09:27:53 2017
+++ src/external/mit/xorg/lib/libxcb/files/screensaver.h	Tue Jul 12 02:44:09 2022
@@ -193,8 +193,7 @@ typedef struct xcb_screensaver_suspend_r
     uint8_t  major_opcode;
     uint8_t  minor_opcode;
     uint16_t length;
-    uint8_t  suspend;
-    uint8_t  pad0[3];
+    uint32_t suspend;
 } xcb_screensaver_suspend_request_t;
 
 /** Opcode for xcb_screensaver_notify. */
@@ -492,7 +491,7 @@ xcb_screensaver_unset_attributes (xcb_co
  */
 xcb_void_cookie_t
 xcb_screensaver_suspend_checked (xcb_connection_t *c,
-                                 uint8_t           suspend);
+                                 uint32_t          suspend);
 
 /**
  *
@@ -504,7 +503,7 @@ xcb_screensaver_suspend_checked (xcb_con
  */
 xcb_void_cookie_t
 xcb_screensaver_suspend (xcb_connection_t *c,
-                         uint8_t           suspend);
+                         uint32_t          suspend);
 
 
 #ifdef __cplusplus
Index: src/external/mit/xorg/lib/libxcb/files/shm.h
diff -u src/external/mit/xorg/lib/libxcb/files/shm.h:1.5 src/external/mit/xorg/lib/libxcb/files/shm.h:1.6
--- src/external/mit/xorg/lib/libxcb/files/shm.h:1.5	Sun Mar  5 09:27:53 2017
+++ src/external/mit/xorg/lib/libxcb/files/shm.h	Tue Jul 12 02:44:09 2022
@@ -627,9 +627,10 @@ xcb_shm_create_segment_reply (xcb_connec
  * @param c      The connection
  * @param reply  The reply
  *
- * Returns the array of reply fds of the request asked by
+ * Returns a pointer to the array of reply fds of the reply.
  *
- * The returned value must be freed by the caller using free().
+ * The returned value points into the reply and must not be free().
+ * The fds are not managed by xcb. You must close() them before freeing the reply.
  */
 int *
 xcb_shm_create_segment_reply_fds (xcb_connection_t                *c  /**< */,
Index: src/external/mit/xorg/lib/libxcb/files/xfixes.c
diff -u src/external/mit/xorg/lib/libxcb/files/xfixes.c:1.5 src/external/mit/xorg/lib/libxcb/files/xfixes.c:1.6
--- src/external/mit/xorg/lib/libxcb/files/xfixes.c:1.5	Sun Mar  5 09:27:53 2017
+++ src/external/mit/xorg/lib/libxcb/files/xfixes.c	Tue Jul 12 02:44:09 2022
@@ -2589,3 +2589,111 @@ xcb_xfixes_delete_pointer_barrier (xcb_c
     return xcb_ret;
 }
 
+xcb_void_cookie_t
+xcb_xfixes_set_client_disconnect_mode_checked (xcb_connection_t *c,
+                                               uint32_t          disconnect_mode)
+{
+    static const xcb_protocol_request_t xcb_req = {
+        .count = 2,
+        .ext = &xcb_xfixes_id,
+        .opcode = XCB_XFIXES_SET_CLIENT_DISCONNECT_MODE,
+        .isvoid = 1
+    };
+
+    struct iovec xcb_parts[4];
+    xcb_void_cookie_t xcb_ret;
+    xcb_xfixes_set_client_disconnect_mode_request_t xcb_out;
+
+    xcb_out.disconnect_mode = disconnect_mode;
+
+    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_xfixes_set_client_disconnect_mode (xcb_connection_t *c,
+                                       uint32_t          disconnect_mode)
+{
+    static const xcb_protocol_request_t xcb_req = {
+        .count = 2,
+        .ext = &xcb_xfixes_id,
+        .opcode = XCB_XFIXES_SET_CLIENT_DISCONNECT_MODE,
+        .isvoid = 1
+    };
+
+    struct iovec xcb_parts[4];
+    xcb_void_cookie_t xcb_ret;
+    xcb_xfixes_set_client_disconnect_mode_request_t xcb_out;
+
+    xcb_out.disconnect_mode = disconnect_mode;
+
+    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_xfixes_get_client_disconnect_mode_cookie_t
+xcb_xfixes_get_client_disconnect_mode (xcb_connection_t *c)
+{
+    static const xcb_protocol_request_t xcb_req = {
+        .count = 2,
+        .ext = &xcb_xfixes_id,
+        .opcode = XCB_XFIXES_GET_CLIENT_DISCONNECT_MODE,
+        .isvoid = 0
+    };
+
+    struct iovec xcb_parts[4];
+    xcb_xfixes_get_client_disconnect_mode_cookie_t xcb_ret;
+    xcb_xfixes_get_client_disconnect_mode_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_xfixes_get_client_disconnect_mode_cookie_t
+xcb_xfixes_get_client_disconnect_mode_unchecked (xcb_connection_t *c)
+{
+    static const xcb_protocol_request_t xcb_req = {
+        .count = 2,
+        .ext = &xcb_xfixes_id,
+        .opcode = XCB_XFIXES_GET_CLIENT_DISCONNECT_MODE,
+        .isvoid = 0
+    };
+
+    struct iovec xcb_parts[4];
+    xcb_xfixes_get_client_disconnect_mode_cookie_t xcb_ret;
+    xcb_xfixes_get_client_disconnect_mode_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_xfixes_get_client_disconnect_mode_reply_t *
+xcb_xfixes_get_client_disconnect_mode_reply (xcb_connection_t                                *c,
+                                             xcb_xfixes_get_client_disconnect_mode_cookie_t   cookie  /**< */,
+                                             xcb_generic_error_t                            **e)
+{
+    return (xcb_xfixes_get_client_disconnect_mode_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
+}
+
Index: src/external/mit/xorg/lib/libxcb/files/xfixes.h
diff -u src/external/mit/xorg/lib/libxcb/files/xfixes.h:1.5 src/external/mit/xorg/lib/libxcb/files/xfixes.h:1.6
--- src/external/mit/xorg/lib/libxcb/files/xfixes.h:1.5	Sun Mar  5 09:27:53 2017
+++ src/external/mit/xorg/lib/libxcb/files/xfixes.h	Tue Jul 12 02:44:09 2022
@@ -21,7 +21,7 @@
 extern "C" {
 #endif
 
-#define XCB_XFIXES_MAJOR_VERSION 5
+#define XCB_XFIXES_MAJOR_VERSION 6
 #define XCB_XFIXES_MINOR_VERSION 0
 
 extern xcb_extension_t xcb_xfixes_id;
@@ -234,6 +234,9 @@ typedef struct xcb_xfixes_bad_region_err
     uint8_t  response_type;
     uint8_t  error_code;
     uint16_t sequence;
+    uint32_t bad_value;
+    uint16_t minor_opcode;
+    uint8_t  major_opcode;
 } xcb_xfixes_bad_region_error_t;
 
 typedef enum xcb_xfixes_region_enum_t {
@@ -734,6 +737,55 @@ typedef struct xcb_xfixes_delete_pointer
     xcb_xfixes_barrier_t barrier;
 } xcb_xfixes_delete_pointer_barrier_request_t;
 
+typedef enum xcb_xfixes_client_disconnect_flags_t {
+    XCB_XFIXES_CLIENT_DISCONNECT_FLAGS_DEFAULT = 0,
+    XCB_XFIXES_CLIENT_DISCONNECT_FLAGS_TERMINATE = 1
+} xcb_xfixes_client_disconnect_flags_t;
+
+/** Opcode for xcb_xfixes_set_client_disconnect_mode. */
+#define XCB_XFIXES_SET_CLIENT_DISCONNECT_MODE 33
+
+/**
+ * @brief xcb_xfixes_set_client_disconnect_mode_request_t
+ **/
+typedef struct xcb_xfixes_set_client_disconnect_mode_request_t {
+    uint8_t  major_opcode;
+    uint8_t  minor_opcode;
+    uint16_t length;
+    uint32_t disconnect_mode;
+} xcb_xfixes_set_client_disconnect_mode_request_t;
+
+/**
+ * @brief xcb_xfixes_get_client_disconnect_mode_cookie_t
+ **/
+typedef struct xcb_xfixes_get_client_disconnect_mode_cookie_t {
+    unsigned int sequence;
+} xcb_xfixes_get_client_disconnect_mode_cookie_t;
+
+/** Opcode for xcb_xfixes_get_client_disconnect_mode. */
+#define XCB_XFIXES_GET_CLIENT_DISCONNECT_MODE 34
+
+/**
+ * @brief xcb_xfixes_get_client_disconnect_mode_request_t
+ **/
+typedef struct xcb_xfixes_get_client_disconnect_mode_request_t {
+    uint8_t  major_opcode;
+    uint8_t  minor_opcode;
+    uint16_t length;
+} xcb_xfixes_get_client_disconnect_mode_request_t;
+
+/**
+ * @brief xcb_xfixes_get_client_disconnect_mode_reply_t
+ **/
+typedef struct xcb_xfixes_get_client_disconnect_mode_reply_t {
+    uint8_t  response_type;
+    uint8_t  pad0;
+    uint16_t sequence;
+    uint32_t length;
+    uint32_t disconnect_mode;
+    uint8_t  pad1[20];
+} xcb_xfixes_get_client_disconnect_mode_reply_t;
+
 /**
  *
  * @param c The connection
@@ -1993,6 +2045,77 @@ xcb_void_cookie_t
 xcb_xfixes_delete_pointer_barrier (xcb_connection_t     *c,
                                    xcb_xfixes_barrier_t  barrier);
 
+/**
+ *
+ * @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_xfixes_set_client_disconnect_mode_checked (xcb_connection_t *c,
+                                               uint32_t          disconnect_mode);
+
+/**
+ *
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+xcb_void_cookie_t
+xcb_xfixes_set_client_disconnect_mode (xcb_connection_t *c,
+                                       uint32_t          disconnect_mode);
+
+/**
+ *
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+xcb_xfixes_get_client_disconnect_mode_cookie_t
+xcb_xfixes_get_client_disconnect_mode (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_xfixes_get_client_disconnect_mode_cookie_t
+xcb_xfixes_get_client_disconnect_mode_unchecked (xcb_connection_t *c);
+
+/**
+ * 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_xfixes_get_client_disconnect_mode_unchecked(). is used.
+ * Otherwise, it stores the error if any.
+ *
+ * The returned value must be freed by the caller using free().
+ */
+xcb_xfixes_get_client_disconnect_mode_reply_t *
+xcb_xfixes_get_client_disconnect_mode_reply (xcb_connection_t                                *c,
+                                             xcb_xfixes_get_client_disconnect_mode_cookie_t   cookie  /**< */,
+                                             xcb_generic_error_t                            **e);
+
 
 #ifdef __cplusplus
 }
Index: src/external/mit/xorg/lib/libxcb/files/xproto.h
diff -u src/external/mit/xorg/lib/libxcb/files/xproto.h:1.5 src/external/mit/xorg/lib/libxcb/files/xproto.h:1.6
--- src/external/mit/xorg/lib/libxcb/files/xproto.h:1.5	Sun Mar  5 09:27:53 2017
+++ src/external/mit/xorg/lib/libxcb/files/xproto.h	Tue Jul 12 02:44:09 2022
@@ -7799,12 +7799,12 @@ xcb_ungrab_keyboard (xcb_connection_t *c
  * @brief Grab keyboard key(s)
  *
  * @param c The connection
- * @param owner_events If 1, the \a grab_window will still get the pointer events. If 0, events are not
+ * @param owner_events If 1, the \a grab_window will still get the key events. If 0, events are not
  * reported to the \a grab_window.
- * @param grab_window Specifies the window on which the pointer should be grabbed.
+ * @param grab_window Specifies the window on which the key should be grabbed.
  * @param modifiers The modifiers to grab.
  * \n
- * Using the special value `XCB_MOD_MASK_ANY` means grab the pointer with all
+ * Using the special value `XCB_MOD_MASK_ANY` means grab the key with all
  * possible modifier combinations.
  * @param key The keycode of the key to grab.
  * \n
@@ -7863,12 +7863,12 @@ xcb_grab_key_checked (xcb_connection_t *
  * @brief Grab keyboard key(s)
  *
  * @param c The connection
- * @param owner_events If 1, the \a grab_window will still get the pointer events. If 0, events are not
+ * @param owner_events If 1, the \a grab_window will still get the key events. If 0, events are not
  * reported to the \a grab_window.
- * @param grab_window Specifies the window on which the pointer should be grabbed.
+ * @param grab_window Specifies the window on which the key should be grabbed.
  * @param modifiers The modifiers to grab.
  * \n
- * Using the special value `XCB_MOD_MASK_ANY` means grab the pointer with all
+ * Using the special value `XCB_MOD_MASK_ANY` means grab the key with all
  * possible modifier combinations.
  * @param key The keycode of the key to grab.
  * \n
Index: src/external/mit/xorg/lib/libxcb/files/xv.h
diff -u src/external/mit/xorg/lib/libxcb/files/xv.h:1.5 src/external/mit/xorg/lib/libxcb/files/xv.h:1.6
--- src/external/mit/xorg/lib/libxcb/files/xv.h:1.5	Sun Mar  5 09:27:53 2017
+++ src/external/mit/xorg/lib/libxcb/files/xv.h	Tue Jul 12 02:44:09 2022
@@ -260,6 +260,9 @@ typedef struct xcb_xv_bad_port_error_t {
     uint8_t  response_type;
     uint8_t  error_code;
     uint16_t sequence;
+    uint32_t bad_value;
+    uint16_t minor_opcode;
+    uint8_t  major_opcode;
 } xcb_xv_bad_port_error_t;
 
 /** Opcode for xcb_xv_bad_encoding. */
@@ -272,6 +275,9 @@ typedef struct xcb_xv_bad_encoding_error
     uint8_t  response_type;
     uint8_t  error_code;
     uint16_t sequence;
+    uint32_t bad_value;
+    uint16_t minor_opcode;
+    uint8_t  major_opcode;
 } xcb_xv_bad_encoding_error_t;
 
 /** Opcode for xcb_xv_bad_control. */
@@ -284,6 +290,9 @@ typedef struct xcb_xv_bad_control_error_
     uint8_t  response_type;
     uint8_t  error_code;
     uint16_t sequence;
+    uint32_t bad_value;
+    uint16_t minor_opcode;
+    uint8_t  major_opcode;
 } xcb_xv_bad_control_error_t;
 
 /** Opcode for xcb_xv_video_notify. */

Index: src/external/mit/xorg/lib/libxcb/files/dri3.c
diff -u src/external/mit/xorg/lib/libxcb/files/dri3.c:1.4 src/external/mit/xorg/lib/libxcb/files/dri3.c:1.5
--- src/external/mit/xorg/lib/libxcb/files/dri3.c:1.4	Wed Mar 14 06:47:28 2018
+++ src/external/mit/xorg/lib/libxcb/files/dri3.c	Tue Jul 12 02:44:09 2022
@@ -917,3 +917,63 @@ xcb_dri3_buffers_from_pixmap_reply_fds (
     return xcb_get_reply_fds(c, reply, sizeof(xcb_dri3_buffers_from_pixmap_reply_t) + 4 * reply->length);
 }
 
+xcb_void_cookie_t
+xcb_dri3_set_drm_device_in_use_checked (xcb_connection_t *c,
+                                        xcb_window_t      window,
+                                        uint32_t          drmMajor,
+                                        uint32_t          drmMinor)
+{
+    static const xcb_protocol_request_t xcb_req = {
+        .count = 2,
+        .ext = &xcb_dri3_id,
+        .opcode = XCB_DRI3_SET_DRM_DEVICE_IN_USE,
+        .isvoid = 1
+    };
+
+    struct iovec xcb_parts[4];
+    xcb_void_cookie_t xcb_ret;
+    xcb_dri3_set_drm_device_in_use_request_t xcb_out;
+
+    xcb_out.window = window;
+    xcb_out.drmMajor = drmMajor;
+    xcb_out.drmMinor = drmMinor;
+
+    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_dri3_set_drm_device_in_use (xcb_connection_t *c,
+                                xcb_window_t      window,
+                                uint32_t          drmMajor,
+                                uint32_t          drmMinor)
+{
+    static const xcb_protocol_request_t xcb_req = {
+        .count = 2,
+        .ext = &xcb_dri3_id,
+        .opcode = XCB_DRI3_SET_DRM_DEVICE_IN_USE,
+        .isvoid = 1
+    };
+
+    struct iovec xcb_parts[4];
+    xcb_void_cookie_t xcb_ret;
+    xcb_dri3_set_drm_device_in_use_request_t xcb_out;
+
+    xcb_out.window = window;
+    xcb_out.drmMajor = drmMajor;
+    xcb_out.drmMinor = drmMinor;
+
+    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;
+}
+
Index: src/external/mit/xorg/lib/libxcb/files/dri3.h
diff -u src/external/mit/xorg/lib/libxcb/files/dri3.h:1.4 src/external/mit/xorg/lib/libxcb/files/dri3.h:1.5
--- src/external/mit/xorg/lib/libxcb/files/dri3.h:1.4	Wed Mar 14 06:47:28 2018
+++ src/external/mit/xorg/lib/libxcb/files/dri3.h	Tue Jul 12 02:44:09 2022
@@ -20,7 +20,7 @@ extern "C" {
 #endif
 
 #define XCB_DRI3_MAJOR_VERSION 1
-#define XCB_DRI3_MINOR_VERSION 2
+#define XCB_DRI3_MINOR_VERSION 3
 
 extern xcb_extension_t xcb_dri3_id;
 
@@ -297,6 +297,21 @@ typedef struct xcb_dri3_buffers_from_pix
     uint8_t  pad1[6];
 } xcb_dri3_buffers_from_pixmap_reply_t;
 
+/** Opcode for xcb_dri3_set_drm_device_in_use. */
+#define XCB_DRI3_SET_DRM_DEVICE_IN_USE 9
+
+/**
+ * @brief xcb_dri3_set_drm_device_in_use_request_t
+ **/
+typedef struct xcb_dri3_set_drm_device_in_use_request_t {
+    uint8_t      major_opcode;
+    uint8_t      minor_opcode;
+    uint16_t     length;
+    xcb_window_t window;
+    uint32_t     drmMajor;
+    uint32_t     drmMinor;
+} xcb_dri3_set_drm_device_in_use_request_t;
+
 /**
  *
  * @param c The connection
@@ -398,9 +413,10 @@ xcb_dri3_open_reply (xcb_connection_t   
  * @param c      The connection
  * @param reply  The reply
  *
- * Returns the array of reply fds of the request asked by
+ * Returns a pointer to the array of reply fds of the reply.
  *
- * The returned value must be freed by the caller using free().
+ * The returned value points into the reply and must not be free().
+ * The fds are not managed by xcb. You must close() them before freeing the reply.
  */
 int *
 xcb_dri3_open_reply_fds (xcb_connection_t       *c  /**< */,
@@ -500,9 +516,10 @@ xcb_dri3_buffer_from_pixmap_reply (xcb_c
  * @param c      The connection
  * @param reply  The reply
  *
- * Returns the array of reply fds of the request asked by
+ * Returns a pointer to the array of reply fds of the reply.
  *
- * The returned value must be freed by the caller using free().
+ * The returned value points into the reply and must not be free().
+ * The fds are not managed by xcb. You must close() them before freeing the reply.
  */
 int *
 xcb_dri3_buffer_from_pixmap_reply_fds (xcb_connection_t                     *c  /**< */,
@@ -594,9 +611,10 @@ xcb_dri3_fd_from_fence_reply (xcb_connec
  * @param c      The connection
  * @param reply  The reply
  *
- * Returns the array of reply fds of the request asked by
+ * Returns a pointer to the array of reply fds of the reply.
  *
- * The returned value must be freed by the caller using free().
+ * The returned value points into the reply and must not be free().
+ * The fds are not managed by xcb. You must close() them before freeing the reply.
  */
 int *
 xcb_dri3_fd_from_fence_reply_fds (xcb_connection_t                *c  /**< */,
@@ -814,14 +832,46 @@ xcb_dri3_buffers_from_pixmap_reply (xcb_
  * @param c      The connection
  * @param reply  The reply
  *
- * Returns the array of reply fds of the request asked by
+ * Returns a pointer to the array of reply fds of the reply.
  *
- * The returned value must be freed by the caller using free().
+ * The returned value points into the reply and must not be free().
+ * The fds are not managed by xcb. You must close() them before freeing the reply.
  */
 int *
 xcb_dri3_buffers_from_pixmap_reply_fds (xcb_connection_t                      *c  /**< */,
                                         xcb_dri3_buffers_from_pixmap_reply_t  *reply);
 
+/**
+ *
+ * @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_dri3_set_drm_device_in_use_checked (xcb_connection_t *c,
+                                        xcb_window_t      window,
+                                        uint32_t          drmMajor,
+                                        uint32_t          drmMinor);
+
+/**
+ *
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+xcb_void_cookie_t
+xcb_dri3_set_drm_device_in_use (xcb_connection_t *c,
+                                xcb_window_t      window,
+                                uint32_t          drmMajor,
+                                uint32_t          drmMinor);
+
 
 #ifdef __cplusplus
 }
Index: src/external/mit/xorg/lib/libxcb/files/record.h
diff -u src/external/mit/xorg/lib/libxcb/files/record.h:1.4 src/external/mit/xorg/lib/libxcb/files/record.h:1.5
--- src/external/mit/xorg/lib/libxcb/files/record.h:1.4	Sun Mar  5 09:27:53 2017
+++ src/external/mit/xorg/lib/libxcb/files/record.h	Tue Jul 12 02:44:09 2022
@@ -171,6 +171,8 @@ typedef struct xcb_record_bad_context_er
     uint8_t  error_code;
     uint16_t sequence;
     uint32_t invalid_record;
+    uint16_t minor_opcode;
+    uint8_t  major_opcode;
 } xcb_record_bad_context_error_t;
 
 /**

Index: src/external/mit/xorg/lib/libxcb/files/randr.h
diff -u src/external/mit/xorg/lib/libxcb/files/randr.h:1.6 src/external/mit/xorg/lib/libxcb/files/randr.h:1.7
--- src/external/mit/xorg/lib/libxcb/files/randr.h:1.6	Wed Mar 14 06:47:28 2018
+++ src/external/mit/xorg/lib/libxcb/files/randr.h	Tue Jul 12 02:44:09 2022
@@ -90,6 +90,9 @@ typedef struct xcb_randr_bad_output_erro
     uint8_t  response_type;
     uint8_t  error_code;
     uint16_t sequence;
+    uint32_t bad_value;
+    uint16_t minor_opcode;
+    uint8_t  major_opcode;
 } xcb_randr_bad_output_error_t;
 
 /** Opcode for xcb_randr_bad_crtc. */
@@ -102,6 +105,9 @@ typedef struct xcb_randr_bad_crtc_error_
     uint8_t  response_type;
     uint8_t  error_code;
     uint16_t sequence;
+    uint32_t bad_value;
+    uint16_t minor_opcode;
+    uint8_t  major_opcode;
 } xcb_randr_bad_crtc_error_t;
 
 /** Opcode for xcb_randr_bad_mode. */
@@ -114,6 +120,9 @@ typedef struct xcb_randr_bad_mode_error_
     uint8_t  response_type;
     uint8_t  error_code;
     uint16_t sequence;
+    uint32_t bad_value;
+    uint16_t minor_opcode;
+    uint8_t  major_opcode;
 } xcb_randr_bad_mode_error_t;
 
 /** Opcode for xcb_randr_bad_provider. */
@@ -126,6 +135,9 @@ typedef struct xcb_randr_bad_provider_er
     uint8_t  response_type;
     uint8_t  error_code;
     uint16_t sequence;
+    uint32_t bad_value;
+    uint16_t minor_opcode;
+    uint8_t  major_opcode;
 } xcb_randr_bad_provider_error_t;
 
 typedef enum xcb_randr_rotation_t {
@@ -4480,9 +4492,10 @@ xcb_randr_create_lease_reply (xcb_connec
  * @param c      The connection
  * @param reply  The reply
  *
- * Returns the array of reply fds of the request asked by
+ * Returns a pointer to the array of reply fds of the reply.
  *
- * The returned value must be freed by the caller using free().
+ * The returned value points into the reply and must not be free().
+ * The fds are not managed by xcb. You must close() them before freeing the reply.
  */
 int *
 xcb_randr_create_lease_reply_fds (xcb_connection_t                *c  /**< */,
Index: src/external/mit/xorg/lib/libxcb/files/xinput.c
diff -u src/external/mit/xorg/lib/libxcb/files/xinput.c:1.6 src/external/mit/xorg/lib/libxcb/files/xinput.c:1.7
--- src/external/mit/xorg/lib/libxcb/files/xinput.c:1.6	Wed Mar 14 06:47:28 2018
+++ src/external/mit/xorg/lib/libxcb/files/xinput.c	Tue Jul 12 02:44:09 2022
@@ -10059,6 +10059,24 @@ xcb_input_touch_class_end (xcb_input_tou
 }
 
 void
+xcb_input_gesture_class_next (xcb_input_gesture_class_iterator_t *i)
+{
+    --i->rem;
+    ++i->data;
+    i->index += sizeof(xcb_input_gesture_class_t);
+}
+
+xcb_generic_iterator_t
+xcb_input_gesture_class_end (xcb_input_gesture_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;
@@ -10160,7 +10178,7 @@ xcb_input_device_class_data_serialize (v
 
     unsigned int xcb_pad = 0;
     char xcb_pad0[3] = {0, 0, 0};
-    struct iovec xcb_parts[24];
+    struct iovec xcb_parts[26];
     unsigned int xcb_parts_idx = 0;
     unsigned int xcb_block_len = 0;
     unsigned int i;
@@ -10329,6 +10347,20 @@ xcb_input_device_class_data_serialize (v
         xcb_parts_idx++;
         xcb_align_to = ALIGNOF(uint8_t);
     }
+    if(type == XCB_INPUT_DEVICE_CLASS_TYPE_GESTURE) {
+        /* xcb_input_device_class_data_t.gesture.num_touches */
+        xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->gesture.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);
+        /* xcb_input_device_class_data_t.gesture.pad2 */
+        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);
+    }
     /* insert padding */
     xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1);
     xcb_buffer_len += xcb_block_len + xcb_pad;
@@ -10511,6 +10543,18 @@ xcb_input_device_class_data_unpack (cons
         xcb_tmp += sizeof(uint8_t);
         xcb_align_to = ALIGNOF(uint8_t);
     }
+    if(type == XCB_INPUT_DEVICE_CLASS_TYPE_GESTURE) {
+        /* xcb_input_device_class_data_t.gesture.num_touches */
+        _aux->gesture.num_touches = *(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.gesture.pad2 */
+        _aux->gesture.pad2 = *(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;
@@ -10535,32 +10579,8 @@ xcb_input_device_class_data_sizeof (cons
 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;
+    return (_aux->len * 4);
 }
 
 void *
Index: src/external/mit/xorg/lib/libxcb/files/xinput.h
diff -u src/external/mit/xorg/lib/libxcb/files/xinput.h:1.6 src/external/mit/xorg/lib/libxcb/files/xinput.h:1.7
--- src/external/mit/xorg/lib/libxcb/files/xinput.h:1.6	Wed Mar 14 06:47:28 2018
+++ src/external/mit/xorg/lib/libxcb/files/xinput.h	Tue Jul 12 02:44:09 2022
@@ -20,7 +20,7 @@ extern "C" {
 #endif
 
 #define XCB_INPUT_MAJOR_VERSION 2
-#define XCB_INPUT_MINOR_VERSION 3
+#define XCB_INPUT_MINOR_VERSION 4
 
 extern xcb_extension_t xcb_input_id;
 
@@ -2671,7 +2671,8 @@ typedef enum xcb_input_device_class_type
     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_TOUCH = 8,
+    XCB_INPUT_DEVICE_CLASS_TYPE_GESTURE = 9
 } xcb_input_device_class_type_t;
 
 typedef enum xcb_input_device_type_t {
@@ -2779,6 +2780,26 @@ typedef struct xcb_input_touch_class_ite
 } xcb_input_touch_class_iterator_t;
 
 /**
+ * @brief xcb_input_gesture_class_t
+ **/
+typedef struct xcb_input_gesture_class_t {
+    uint16_t              type;
+    uint16_t              len;
+    xcb_input_device_id_t sourceid;
+    uint8_t               num_touches;
+    uint8_t               pad0;
+} xcb_input_gesture_class_t;
+
+/**
+ * @brief xcb_input_gesture_class_iterator_t
+ **/
+typedef struct xcb_input_gesture_class_iterator_t {
+    xcb_input_gesture_class_t *data;
+    int                        rem;
+    int                        index;
+} xcb_input_gesture_class_iterator_t;
+
+/**
  * @brief xcb_input_valuator_class_t
  **/
 typedef struct xcb_input_valuator_class_t {
@@ -2838,6 +2859,10 @@ typedef struct xcb_input_device_class_da
         uint8_t            mode;
         uint8_t            num_touches;
     } touch;
+    struct {
+        uint8_t            num_touches;
+        uint8_t            pad2;
+    } gesture;
 } xcb_input_device_class_data_t;
 
 /**
@@ -3065,7 +3090,9 @@ typedef enum xcb_input_grab_type_t {
     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_TOUCH_BEGIN = 4,
+    XCB_INPUT_GRAB_TYPE_GESTURE_PINCH_BEGIN = 5,
+    XCB_INPUT_GRAB_TYPE_GESTURE_SWIPE_BEGIN = 6
 } xcb_input_grab_type_t;
 
 typedef enum xcb_input_modifier_mask_t {
@@ -4033,6 +4060,104 @@ typedef struct xcb_input_barrier_hit_eve
 
 typedef xcb_input_barrier_hit_event_t xcb_input_barrier_leave_event_t;
 
+typedef enum xcb_input_gesture_pinch_event_flags_t {
+    XCB_INPUT_GESTURE_PINCH_EVENT_FLAGS_GESTURE_PINCH_CANCELLED = 1
+} xcb_input_gesture_pinch_event_flags_t;
+
+/** Opcode for xcb_input_gesture_pinch_begin. */
+#define XCB_INPUT_GESTURE_PINCH_BEGIN 27
+
+/**
+ * @brief xcb_input_gesture_pinch_begin_event_t
+ **/
+typedef struct xcb_input_gesture_pinch_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;
+    xcb_input_fp1616_t        delta_x;
+    xcb_input_fp1616_t        delta_y;
+    xcb_input_fp1616_t        delta_unaccel_x;
+    xcb_input_fp1616_t        delta_unaccel_y;
+    xcb_input_fp1616_t        scale;
+    xcb_input_fp1616_t        delta_angle;
+    xcb_input_device_id_t     sourceid;
+    uint8_t                   pad0[2];
+    xcb_input_modifier_info_t mods;
+    xcb_input_group_info_t    group;
+    uint32_t                  flags;
+} xcb_input_gesture_pinch_begin_event_t;
+
+/** Opcode for xcb_input_gesture_pinch_update. */
+#define XCB_INPUT_GESTURE_PINCH_UPDATE 28
+
+typedef xcb_input_gesture_pinch_begin_event_t xcb_input_gesture_pinch_update_event_t;
+
+/** Opcode for xcb_input_gesture_pinch_end. */
+#define XCB_INPUT_GESTURE_PINCH_END 29
+
+typedef xcb_input_gesture_pinch_begin_event_t xcb_input_gesture_pinch_end_event_t;
+
+typedef enum xcb_input_gesture_swipe_event_flags_t {
+    XCB_INPUT_GESTURE_SWIPE_EVENT_FLAGS_GESTURE_SWIPE_CANCELLED = 1
+} xcb_input_gesture_swipe_event_flags_t;
+
+/** Opcode for xcb_input_gesture_swipe_begin. */
+#define XCB_INPUT_GESTURE_SWIPE_BEGIN 30
+
+/**
+ * @brief xcb_input_gesture_swipe_begin_event_t
+ **/
+typedef struct xcb_input_gesture_swipe_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;
+    xcb_input_fp1616_t        delta_x;
+    xcb_input_fp1616_t        delta_y;
+    xcb_input_fp1616_t        delta_unaccel_x;
+    xcb_input_fp1616_t        delta_unaccel_y;
+    xcb_input_device_id_t     sourceid;
+    uint8_t                   pad0[2];
+    xcb_input_modifier_info_t mods;
+    xcb_input_group_info_t    group;
+    uint32_t                  flags;
+} xcb_input_gesture_swipe_begin_event_t;
+
+/** Opcode for xcb_input_gesture_swipe_update. */
+#define XCB_INPUT_GESTURE_SWIPE_UPDATE 31
+
+typedef xcb_input_gesture_swipe_begin_event_t xcb_input_gesture_swipe_update_event_t;
+
+/** Opcode for xcb_input_gesture_swipe_end. */
+#define XCB_INPUT_GESTURE_SWIPE_END 32
+
+typedef xcb_input_gesture_swipe_begin_event_t xcb_input_gesture_swipe_end_event_t;
+
 /**
  * @brief xcb_input_event_for_send_t
  **/
@@ -4093,6 +4218,9 @@ typedef struct xcb_input_device_error_t 
     uint8_t  response_type;
     uint8_t  error_code;
     uint16_t sequence;
+    uint32_t bad_value;
+    uint16_t minor_opcode;
+    uint8_t  major_opcode;
 } xcb_input_device_error_t;
 
 /** Opcode for xcb_input_event. */
@@ -4105,6 +4233,9 @@ typedef struct xcb_input_event_error_t {
     uint8_t  response_type;
     uint8_t  error_code;
     uint16_t sequence;
+    uint32_t bad_value;
+    uint16_t minor_opcode;
+    uint8_t  major_opcode;
 } xcb_input_event_error_t;
 
 /** Opcode for xcb_input_mode. */
@@ -4117,6 +4248,9 @@ typedef struct xcb_input_mode_error_t {
     uint8_t  response_type;
     uint8_t  error_code;
     uint16_t sequence;
+    uint32_t bad_value;
+    uint16_t minor_opcode;
+    uint8_t  major_opcode;
 } xcb_input_mode_error_t;
 
 /** Opcode for xcb_input_device_busy. */
@@ -4129,6 +4263,9 @@ typedef struct xcb_input_device_busy_err
     uint8_t  response_type;
     uint8_t  error_code;
     uint16_t sequence;
+    uint32_t bad_value;
+    uint16_t minor_opcode;
+    uint8_t  major_opcode;
 } xcb_input_device_busy_error_t;
 
 /** Opcode for xcb_input_class. */
@@ -4141,6 +4278,9 @@ typedef struct xcb_input_class_error_t {
     uint8_t  response_type;
     uint8_t  error_code;
     uint16_t sequence;
+    uint32_t bad_value;
+    uint16_t minor_opcode;
+    uint8_t  major_opcode;
 } xcb_input_class_error_t;
 
 /**
@@ -8197,6 +8337,29 @@ xcb_input_touch_class_end (xcb_input_tou
 
 /**
  * Get the next element of the iterator
+ * @param i Pointer to a xcb_input_gesture_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_gesture_class_t)
+ */
+void
+xcb_input_gesture_class_next (xcb_input_gesture_class_iterator_t *i);
+
+/**
+ * Return the iterator pointing to the last element
+ * @param i An xcb_input_gesture_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_gesture_class_end (xcb_input_gesture_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

Reply via email to