From a9ad86d5018ca678bcdb34762904d78e099f0eb0 Mon Sep 17 00:00:00 2001 From: Milan Nikolic Date: Sat, 7 Dec 2024 12:43:08 +0100 Subject: [PATCH] Update wayland headers --- ...fractional-scale-v1-client-protocol-code.h | 3 +- .../src/fractional-scale-v1-client-protocol.h | 2 +- ...inhibit-unstable-v1-client-protocol-code.h | 3 +- ...idle-inhibit-unstable-v1-client-protocol.h | 2 +- ...traints-unstable-v1-client-protocol-code.h | 3 +- ...-constraints-unstable-v1-client-protocol.h | 15 +- ...pointer-unstable-v1-client-protocol-code.h | 3 +- ...tive-pointer-unstable-v1-client-protocol.h | 2 +- .../src/viewporter-client-protocol-code.h | 3 +- .../glfw/src/viewporter-client-protocol.h | 14 +- .../glfw/src/wayland-client-protocol-code.h | 23 +- .../glfw/src/wayland-client-protocol.h | 239 +++++++++++++++--- .../xdg-activation-v1-client-protocol-code.h | 3 +- .../src/xdg-activation-v1-client-protocol.h | 2 +- ...oration-unstable-v1-client-protocol-code.h | 3 +- ...g-decoration-unstable-v1-client-protocol.h | 9 +- .../glfw/src/xdg-shell-client-protocol-code.h | 3 +- .../glfw/src/xdg-shell-client-protocol.h | 36 ++- 18 files changed, 280 insertions(+), 88 deletions(-) diff --git a/raylib/external/glfw/src/fractional-scale-v1-client-protocol-code.h b/raylib/external/glfw/src/fractional-scale-v1-client-protocol-code.h index 090166bc..f847c1ea 100644 --- a/raylib/external/glfw/src/fractional-scale-v1-client-protocol-code.h +++ b/raylib/external/glfw/src/fractional-scale-v1-client-protocol-code.h @@ -1,4 +1,4 @@ -/* Generated by wayland-scanner 1.22.0 */ +/* Generated by wayland-scanner 1.23.1 */ /* * Copyright © 2022 Kenny Levinsen @@ -23,6 +23,7 @@ * DEALINGS IN THE SOFTWARE. */ +#include #include #include #include "wayland-util.h" diff --git a/raylib/external/glfw/src/fractional-scale-v1-client-protocol.h b/raylib/external/glfw/src/fractional-scale-v1-client-protocol.h index 7f0dec47..8df7558a 100644 --- a/raylib/external/glfw/src/fractional-scale-v1-client-protocol.h +++ b/raylib/external/glfw/src/fractional-scale-v1-client-protocol.h @@ -1,4 +1,4 @@ -/* Generated by wayland-scanner 1.22.0 */ +/* Generated by wayland-scanner 1.23.1 */ #ifndef FRACTIONAL_SCALE_V1_CLIENT_PROTOCOL_H #define FRACTIONAL_SCALE_V1_CLIENT_PROTOCOL_H diff --git a/raylib/external/glfw/src/idle-inhibit-unstable-v1-client-protocol-code.h b/raylib/external/glfw/src/idle-inhibit-unstable-v1-client-protocol-code.h index 76ef732b..0399e11a 100644 --- a/raylib/external/glfw/src/idle-inhibit-unstable-v1-client-protocol-code.h +++ b/raylib/external/glfw/src/idle-inhibit-unstable-v1-client-protocol-code.h @@ -1,4 +1,4 @@ -/* Generated by wayland-scanner 1.22.0 */ +/* Generated by wayland-scanner 1.23.1 */ /* * Copyright © 2015 Samsung Electronics Co., Ltd @@ -23,6 +23,7 @@ * DEALINGS IN THE SOFTWARE. */ +#include #include #include #include "wayland-util.h" diff --git a/raylib/external/glfw/src/idle-inhibit-unstable-v1-client-protocol.h b/raylib/external/glfw/src/idle-inhibit-unstable-v1-client-protocol.h index a033a11a..ef97ceb8 100644 --- a/raylib/external/glfw/src/idle-inhibit-unstable-v1-client-protocol.h +++ b/raylib/external/glfw/src/idle-inhibit-unstable-v1-client-protocol.h @@ -1,4 +1,4 @@ -/* Generated by wayland-scanner 1.22.0 */ +/* Generated by wayland-scanner 1.23.1 */ #ifndef IDLE_INHIBIT_UNSTABLE_V1_CLIENT_PROTOCOL_H #define IDLE_INHIBIT_UNSTABLE_V1_CLIENT_PROTOCOL_H diff --git a/raylib/external/glfw/src/pointer-constraints-unstable-v1-client-protocol-code.h b/raylib/external/glfw/src/pointer-constraints-unstable-v1-client-protocol-code.h index 5935c0ba..4184538d 100644 --- a/raylib/external/glfw/src/pointer-constraints-unstable-v1-client-protocol-code.h +++ b/raylib/external/glfw/src/pointer-constraints-unstable-v1-client-protocol-code.h @@ -1,4 +1,4 @@ -/* Generated by wayland-scanner 1.22.0 */ +/* Generated by wayland-scanner 1.23.1 */ /* * Copyright © 2014 Jonas Ådahl @@ -24,6 +24,7 @@ * DEALINGS IN THE SOFTWARE. */ +#include #include #include #include "wayland-util.h" diff --git a/raylib/external/glfw/src/pointer-constraints-unstable-v1-client-protocol.h b/raylib/external/glfw/src/pointer-constraints-unstable-v1-client-protocol.h index 5ff38678..dd7b871b 100644 --- a/raylib/external/glfw/src/pointer-constraints-unstable-v1-client-protocol.h +++ b/raylib/external/glfw/src/pointer-constraints-unstable-v1-client-protocol.h @@ -1,4 +1,4 @@ -/* Generated by wayland-scanner 1.22.0 */ +/* Generated by wayland-scanner 1.23.1 */ #ifndef POINTER_CONSTRAINTS_UNSTABLE_V1_CLIENT_PROTOCOL_H #define POINTER_CONSTRAINTS_UNSTABLE_V1_CLIENT_PROTOCOL_H @@ -512,9 +512,8 @@ zwp_locked_pointer_v1_destroy(struct zwp_locked_pointer_v1 *zwp_locked_pointer_v * information to warp the pointer upon unlock in order to avoid pointer * jumps. * - * The cursor position hint is double buffered. The new hint will only take - * effect when the associated surface gets it pending state applied. See - * wl_surface.commit for details. + * The cursor position hint is double-buffered state, see + * wl_surface.commit. */ static inline void zwp_locked_pointer_v1_set_cursor_position_hint(struct zwp_locked_pointer_v1 *zwp_locked_pointer_v1, wl_fixed_t surface_x, wl_fixed_t surface_y) @@ -528,9 +527,7 @@ zwp_locked_pointer_v1_set_cursor_position_hint(struct zwp_locked_pointer_v1 *zwp * * Set a new region used to lock the pointer. * - * The new lock region is double-buffered. The new lock region will - * only take effect when the associated surface gets its pending state - * applied. See wl_surface.commit for details. + * The new lock region is double-buffered, see wl_surface.commit. * * For details about the lock region, see wp_locked_pointer. */ @@ -638,9 +635,7 @@ zwp_confined_pointer_v1_destroy(struct zwp_confined_pointer_v1 *zwp_confined_poi * * Set a new region used to confine the pointer. * - * The new confine region is double-buffered. The new confine region will - * only take effect when the associated surface gets its pending state - * applied. See wl_surface.commit for details. + * The new confine region is double-buffered, see wl_surface.commit. * * If the confinement is active when the new confinement region is applied * and the pointer ends up outside of newly applied region, the pointer may diff --git a/raylib/external/glfw/src/relative-pointer-unstable-v1-client-protocol-code.h b/raylib/external/glfw/src/relative-pointer-unstable-v1-client-protocol-code.h index e6504961..605149b2 100644 --- a/raylib/external/glfw/src/relative-pointer-unstable-v1-client-protocol-code.h +++ b/raylib/external/glfw/src/relative-pointer-unstable-v1-client-protocol-code.h @@ -1,4 +1,4 @@ -/* Generated by wayland-scanner 1.22.0 */ +/* Generated by wayland-scanner 1.23.1 */ /* * Copyright © 2014 Jonas Ådahl @@ -24,6 +24,7 @@ * DEALINGS IN THE SOFTWARE. */ +#include #include #include #include "wayland-util.h" diff --git a/raylib/external/glfw/src/relative-pointer-unstable-v1-client-protocol.h b/raylib/external/glfw/src/relative-pointer-unstable-v1-client-protocol.h index 5aa213e5..5c79482f 100644 --- a/raylib/external/glfw/src/relative-pointer-unstable-v1-client-protocol.h +++ b/raylib/external/glfw/src/relative-pointer-unstable-v1-client-protocol.h @@ -1,4 +1,4 @@ -/* Generated by wayland-scanner 1.22.0 */ +/* Generated by wayland-scanner 1.23.1 */ #ifndef RELATIVE_POINTER_UNSTABLE_V1_CLIENT_PROTOCOL_H #define RELATIVE_POINTER_UNSTABLE_V1_CLIENT_PROTOCOL_H diff --git a/raylib/external/glfw/src/viewporter-client-protocol-code.h b/raylib/external/glfw/src/viewporter-client-protocol-code.h index fa70d5d6..d6858580 100644 --- a/raylib/external/glfw/src/viewporter-client-protocol-code.h +++ b/raylib/external/glfw/src/viewporter-client-protocol-code.h @@ -1,4 +1,4 @@ -/* Generated by wayland-scanner 1.22.0 */ +/* Generated by wayland-scanner 1.23.1 */ /* * Copyright © 2013-2016 Collabora, Ltd. @@ -23,6 +23,7 @@ * DEALINGS IN THE SOFTWARE. */ +#include #include #include #include "wayland-util.h" diff --git a/raylib/external/glfw/src/viewporter-client-protocol.h b/raylib/external/glfw/src/viewporter-client-protocol.h index e1295d4a..f2860952 100644 --- a/raylib/external/glfw/src/viewporter-client-protocol.h +++ b/raylib/external/glfw/src/viewporter-client-protocol.h @@ -1,4 +1,4 @@ -/* Generated by wayland-scanner 1.22.0 */ +/* Generated by wayland-scanner 1.23.1 */ #ifndef VIEWPORTER_CLIENT_PROTOCOL_H #define VIEWPORTER_CLIENT_PROTOCOL_H @@ -86,8 +86,7 @@ extern const struct wl_interface wp_viewporter_interface; * src_y, src_width, src_height), and the destination size (dst_width, * dst_height). The contents of the source rectangle are scaled to the * destination size, and content outside the source rectangle is ignored. - * This state is double-buffered, and is applied on the next - * wl_surface.commit. + * This state is double-buffered, see wl_surface.commit. * * The two parts of crop and scale state are independent: the source * rectangle, and the destination size. Initially both are unset, that @@ -147,8 +146,7 @@ extern const struct wl_interface wp_viewporter_interface; * src_y, src_width, src_height), and the destination size (dst_width, * dst_height). The contents of the source rectangle are scaled to the * destination size, and content outside the source rectangle is ignored. - * This state is double-buffered, and is applied on the next - * wl_surface.commit. + * This state is double-buffered, see wl_surface.commit. * * The two parts of crop and scale state are independent: the source * rectangle, and the destination size. Initially both are unset, that @@ -359,8 +357,7 @@ wp_viewport_destroy(struct wp_viewport *wp_viewport) * or negative, or x or y are negative, raise the bad_value protocol * error. * - * The crop and scale state is double-buffered state, and will be - * applied on the next wl_surface.commit. + * The crop and scale state is double-buffered, see wl_surface.commit. */ static inline void wp_viewport_set_source(struct wp_viewport *wp_viewport, wl_fixed_t x, wl_fixed_t y, wl_fixed_t width, wl_fixed_t height) @@ -381,8 +378,7 @@ wp_viewport_set_source(struct wp_viewport *wp_viewport, wl_fixed_t x, wl_fixed_t * contains zero or negative values raises the bad_value protocol * error. * - * The crop and scale state is double-buffered state, and will be - * applied on the next wl_surface.commit. + * The crop and scale state is double-buffered, see wl_surface.commit. */ static inline void wp_viewport_set_destination(struct wp_viewport *wp_viewport, int32_t width, int32_t height) diff --git a/raylib/external/glfw/src/wayland-client-protocol-code.h b/raylib/external/glfw/src/wayland-client-protocol-code.h index cd1a838f..d640bb40 100644 --- a/raylib/external/glfw/src/wayland-client-protocol-code.h +++ b/raylib/external/glfw/src/wayland-client-protocol-code.h @@ -1,4 +1,4 @@ -/* Generated by wayland-scanner 1.22.0 */ +/* Generated by wayland-scanner 1.23.1 */ /* * Copyright © 2008-2011 Kristian Høgsberg @@ -27,6 +27,7 @@ * SOFTWARE. */ +#include #include #include #include "wayland-util.h" @@ -154,6 +155,7 @@ static const struct wl_interface *wayland_types[] = { &wl_surface_interface, &wl_surface_interface, &wl_surface_interface, + &wl_registry_interface, }; static const struct wl_message wl_display_requests[] = { @@ -397,7 +399,7 @@ static const struct wl_message wl_seat_events[] = { }; WL_PRIVATE const struct wl_interface wl_seat_interface = { - "wl_seat", 9, + "wl_seat", 10, 4, wl_seat_requests, 2, wl_seat_events, }; @@ -422,7 +424,7 @@ static const struct wl_message wl_pointer_events[] = { }; WL_PRIVATE const struct wl_interface wl_pointer_interface = { - "wl_pointer", 9, + "wl_pointer", 10, 2, wl_pointer_requests, 11, wl_pointer_events, }; @@ -441,7 +443,7 @@ static const struct wl_message wl_keyboard_events[] = { }; WL_PRIVATE const struct wl_interface wl_keyboard_interface = { - "wl_keyboard", 9, + "wl_keyboard", 10, 1, wl_keyboard_requests, 6, wl_keyboard_events, }; @@ -461,7 +463,7 @@ static const struct wl_message wl_touch_events[] = { }; WL_PRIVATE const struct wl_interface wl_touch_interface = { - "wl_touch", 9, + "wl_touch", 10, 1, wl_touch_requests, 7, wl_touch_events, }; @@ -523,3 +525,14 @@ WL_PRIVATE const struct wl_interface wl_subsurface_interface = { 0, NULL, }; +static const struct wl_message wl_fixes_requests[] = { + { "destroy", "", wayland_types + 0 }, + { "destroy_registry", "o", wayland_types + 95 }, +}; + +WL_PRIVATE const struct wl_interface wl_fixes_interface = { + "wl_fixes", 1, + 2, wl_fixes_requests, + 0, NULL, +}; + diff --git a/raylib/external/glfw/src/wayland-client-protocol.h b/raylib/external/glfw/src/wayland-client-protocol.h index d200c79d..fadb4608 100644 --- a/raylib/external/glfw/src/wayland-client-protocol.h +++ b/raylib/external/glfw/src/wayland-client-protocol.h @@ -1,4 +1,4 @@ -/* Generated by wayland-scanner 1.22.0 */ +/* Generated by wayland-scanner 1.23.1 */ #ifndef WAYLAND_CLIENT_PROTOCOL_H #define WAYLAND_CLIENT_PROTOCOL_H @@ -36,6 +36,7 @@ extern "C" { * - @subpage page_iface_wl_region - region interface * - @subpage page_iface_wl_subcompositor - sub-surface compositing * - @subpage page_iface_wl_subsurface - sub-surface interface to a wl_surface + * - @subpage page_iface_wl_fixes - wayland protocol fixes * @section page_copyright_wayland Copyright *
  *
@@ -73,6 +74,7 @@ struct wl_data_device_manager;
 struct wl_data_offer;
 struct wl_data_source;
 struct wl_display;
+struct wl_fixes;
 struct wl_keyboard;
 struct wl_output;
 struct wl_pointer;
@@ -283,8 +285,10 @@ extern const struct wl_interface wl_shm_interface;
  * client provides and updates the contents is defined by the buffer factory
  * interface.
  *
- * If the buffer uses a format that has an alpha channel, the alpha channel
- * is assumed to be premultiplied in the electrical color channel values
+ * Color channels are assumed to be electrical rather than optical (in other
+ * words, encoded with a transfer function) unless otherwise specified. If
+ * the buffer uses a format that has an alpha channel, the alpha channel is
+ * assumed to be premultiplied into the electrical color channel values
  * (after transfer function encoding) unless otherwise specified.
  *
  * Note, because wl_buffer objects are created from multiple independent
@@ -302,8 +306,10 @@ extern const struct wl_interface wl_shm_interface;
  * client provides and updates the contents is defined by the buffer factory
  * interface.
  *
- * If the buffer uses a format that has an alpha channel, the alpha channel
- * is assumed to be premultiplied in the electrical color channel values
+ * Color channels are assumed to be electrical rather than optical (in other
+ * words, encoded with a transfer function) unless otherwise specified. If
+ * the buffer uses a format that has an alpha channel, the alpha channel is
+ * assumed to be premultiplied into the electrical color channel values
  * (after transfer function encoding) unless otherwise specified.
  *
  * Note, because wl_buffer objects are created from multiple independent
@@ -652,6 +658,16 @@ extern const struct wl_interface wl_pointer_interface;
  *
  * The wl_keyboard interface represents one or more keyboards
  * associated with a seat.
+ *
+ * Each wl_keyboard has the following logical state:
+ *
+ * - an active surface (possibly null),
+ * - the keys currently logically down,
+ * - the active modifiers,
+ * - the active group.
+ *
+ * By default, the active surface is null, the keys currently logically down
+ * are empty, the active modifiers and the active group are 0.
  * @section page_iface_wl_keyboard_api API
  * See @ref iface_wl_keyboard.
  */
@@ -660,6 +676,16 @@ extern const struct wl_interface wl_pointer_interface;
  *
  * The wl_keyboard interface represents one or more keyboards
  * associated with a seat.
+ *
+ * Each wl_keyboard has the following logical state:
+ *
+ * - an active surface (possibly null),
+ * - the keys currently logically down,
+ * - the active modifiers,
+ * - the active group.
+ *
+ * By default, the active surface is null, the keys currently logically down
+ * are empty, the active modifiers and the active group are 0.
  */
 extern const struct wl_interface wl_keyboard_interface;
 #endif
@@ -916,6 +942,25 @@ extern const struct wl_interface wl_subcompositor_interface;
  */
 extern const struct wl_interface wl_subsurface_interface;
 #endif
+#ifndef WL_FIXES_INTERFACE
+#define WL_FIXES_INTERFACE
+/**
+ * @page page_iface_wl_fixes wl_fixes
+ * @section page_iface_wl_fixes_desc Description
+ *
+ * This global fixes problems with other core-protocol interfaces that
+ * cannot be fixed in these interfaces themselves.
+ * @section page_iface_wl_fixes_api API
+ * See @ref iface_wl_fixes.
+ */
+/**
+ * @defgroup iface_wl_fixes The wl_fixes interface
+ *
+ * This global fixes problems with other core-protocol interfaces that
+ * cannot be fixed in these interfaces themselves.
+ */
+extern const struct wl_interface wl_fixes_interface;
+#endif
 
 #ifndef WL_DISPLAY_ERROR_ENUM
 #define WL_DISPLAY_ERROR_ENUM
@@ -1050,7 +1095,7 @@ wl_display_get_version(struct wl_display *wl_display)
  * compositor after the callback is fired and as such the client must not
  * attempt to use it after that point.
  *
- * The callback_data passed in the callback is the event serial.
+ * The callback_data passed in the callback is undefined and should be ignored.
  */
 static inline struct wl_callback *
 wl_display_sync(struct wl_display *wl_display)
@@ -3715,10 +3760,9 @@ struct wl_surface_listener {
 	 * Before receiving this event the preferred buffer transform for
 	 * this surface is normal.
 	 *
-	 * It is intended that transform aware clients use this event to
-	 * apply the transform to their content and use
-	 * wl_surface.set_buffer_transform to indicate the transform they
-	 * have rendered with.
+	 * Applying this transformation to the surface buffer contents and
+	 * using wl_surface.set_buffer_transform might allow the compositor
+	 * to use the surface buffer more efficiently.
 	 * @param transform preferred transform
 	 * @since 6
 	 */
@@ -3902,9 +3946,15 @@ wl_surface_destroy(struct wl_surface *wl_surface)
  * mutates the underlying buffer storage, the surface contents become
  * undefined immediately.
  *
- * If wl_surface.attach is sent with a NULL wl_buffer, or the pending
- * wl_buffer has been destroyed, the following wl_surface.commit will
- * remove the surface content.
+ * If wl_surface.attach is sent with a NULL wl_buffer, the
+ * following wl_surface.commit will remove the surface content.
+ *
+ * If a pending wl_buffer has been destroyed, the result is not specified.
+ * Many compositors are known to remove the surface content on the following
+ * wl_surface.commit, but this behaviour is not universal. Clients seeking to
+ * maximise compatibility should not destroy pending buffers and should
+ * ensure that they explicitly remove content from surfaces, even after
+ * destroying buffers.
  */
 static inline void
 wl_surface_attach(struct wl_surface *wl_surface, struct wl_buffer *buffer, int32_t x, int32_t y)
@@ -4065,16 +4115,18 @@ wl_surface_set_input_region(struct wl_surface *wl_surface, struct wl_region *reg
  *
  * Surface state (input, opaque, and damage regions, attached buffers,
  * etc.) is double-buffered. Protocol requests modify the pending state,
- * as opposed to the current state in use by the compositor. A commit
- * request atomically applies all pending state, replacing the current
- * state. After commit, the new pending state is as documented for each
- * related request.
+ * as opposed to the active state in use by the compositor.
  *
- * On commit, a pending wl_buffer is applied first, and all other state
- * second. This means that all coordinates in double-buffered state are
- * relative to the new wl_buffer coming into use, except for
- * wl_surface.attach itself. If there is no pending wl_buffer, the
- * coordinates are relative to the current surface contents.
+ * A commit request atomically creates a content update from the pending
+ * state, even if the pending state has not been touched. The content
+ * update is placed in a queue until it becomes active. After commit, the
+ * new pending state is as documented for each related request.
+ *
+ * When the content update is applied, the wl_buffer is applied before all
+ * other state. This means that all coordinates in double-buffered state
+ * are relative to the newly attached wl_buffers, except for
+ * wl_surface.attach itself. If there is no newly attached wl_buffer, the
+ * coordinates are relative to the previous content update.
  *
  * All requests that need a commit to become effective are documented
  * to affect double-buffered state.
@@ -4091,10 +4143,12 @@ wl_surface_commit(struct wl_surface *wl_surface)
 /**
  * @ingroup iface_wl_surface
  *
- * This request sets an optional transformation on how the compositor
- * interprets the contents of the buffer attached to the surface. The
- * accepted values for the transform parameter are the values for
- * wl_output.transform.
+ * This request sets the transformation that the client has already applied
+ * to the content of the buffer. The accepted values for the transform
+ * parameter are the values for wl_output.transform.
+ *
+ * The compositor applies the inverse of this transformation whenever it
+ * uses the buffer contents.
  *
  * Buffer transform is double-buffered state, see wl_surface.commit.
  *
@@ -4214,6 +4268,9 @@ wl_surface_damage_buffer(struct wl_surface *wl_surface, int32_t x, int32_t y, in
  * x and y, combined with the new surface size define in which
  * directions the surface's size changes.
  *
+ * The exact semantics of wl_surface.offset are role-specific. Refer to
+ * the documentation of specific roles for more information.
+ *
  * Surface location offset is double-buffered state, see
  * wl_surface.commit.
  *
@@ -4855,6 +4912,7 @@ struct wl_pointer_listener {
 	 * @param axis axis type
 	 * @param discrete number of steps
 	 * @since 5
+	 * @deprecated Deprecated since version 8
 	 */
 	void (*axis_discrete)(void *data,
 			      struct wl_pointer *wl_pointer,
@@ -5123,6 +5181,14 @@ enum wl_keyboard_keymap_format {
  * physical key state
  *
  * Describes the physical state of a key that produced the key event.
+ *
+ * Since version 10, the key can be in a "repeated" pseudo-state which
+ * means the same as "pressed", but is used to signal repetition in the
+ * key event.
+ *
+ * The key may only enter the repeated state after entering the pressed
+ * state and before entering the released state. This event may be
+ * generated multiple times while the key is down.
  */
 enum wl_keyboard_key_state {
 	/**
@@ -5133,7 +5199,16 @@ enum wl_keyboard_key_state {
 	 * key is pressed
 	 */
 	WL_KEYBOARD_KEY_STATE_PRESSED = 1,
+	/**
+	 * key was repeated
+	 * @since 10
+	 */
+	WL_KEYBOARD_KEY_STATE_REPEATED = 2,
 };
+/**
+ * @ingroup iface_wl_keyboard
+ */
+#define WL_KEYBOARD_KEY_STATE_REPEATED_SINCE_VERSION 10
 #endif /* WL_KEYBOARD_KEY_STATE_ENUM */
 
 /**
@@ -5167,9 +5242,18 @@ struct wl_keyboard_listener {
 	 *
 	 * The compositor must send the wl_keyboard.modifiers event after
 	 * this event.
+	 *
+	 * In the wl_keyboard logical state, this event sets the active
+	 * surface to the surface argument and the keys currently logically
+	 * down to the keys in the keys argument. The compositor must not
+	 * send this event if the wl_keyboard already had an active surface
+	 * immediately before this event.
+	 *
+	 * Clients should not use the list of pressed keys to emulate
+	 * key-press events. The order of keys in the list is unspecified.
 	 * @param serial serial number of the enter event
 	 * @param surface surface gaining keyboard focus
-	 * @param keys the currently pressed keys
+	 * @param keys the keys currently logically down
 	 */
 	void (*enter)(void *data,
 		      struct wl_keyboard *wl_keyboard,
@@ -5185,10 +5269,10 @@ struct wl_keyboard_listener {
 	 * The leave notification is sent before the enter notification for
 	 * the new focus.
 	 *
-	 * After this event client must assume that no keys are pressed, it
-	 * must stop key repeating if there's some going on and until it
-	 * receives the next wl_keyboard.modifiers event, the client must
-	 * also assume no modifiers are active.
+	 * In the wl_keyboard logical state, this event resets all values
+	 * to their defaults. The compositor must not send this event if
+	 * the active surface of the wl_keyboard was not equal to the
+	 * surface argument immediately before this event.
 	 * @param serial serial number of the leave event
 	 * @param surface surface that lost keyboard focus
 	 */
@@ -5208,8 +5292,20 @@ struct wl_keyboard_listener {
 	 * If this event produces a change in modifiers, then the resulting
 	 * wl_keyboard.modifiers event must be sent after this event.
 	 *
-	 * The compositor must not send this event without a surface of the
-	 * client having keyboard focus.
+	 * In the wl_keyboard logical state, this event adds the key to the
+	 * keys currently logically down (if the state argument is pressed)
+	 * or removes the key from the keys currently logically down (if
+	 * the state argument is released). The compositor must not send
+	 * this event if the wl_keyboard did not have an active surface
+	 * immediately before this event. The compositor must not send this
+	 * event if state is pressed (resp. released) and the key was
+	 * already logically down (resp. was not logically down)
+	 * immediately before this event.
+	 *
+	 * Since version 10, compositors may send key events with the
+	 * "repeated" key state when a wl_keyboard.repeat_info event with a
+	 * rate argument of 0 has been received. This allows the compositor
+	 * to take over the responsibility of key repetition.
 	 * @param serial serial number of the key event
 	 * @param time timestamp with millisecond granularity
 	 * @param key key that produced the event
@@ -5235,6 +5331,9 @@ struct wl_keyboard_listener {
 	 * the next wl_keyboard.modifiers event. In order to reset the
 	 * modifier state again, the compositor can send a
 	 * wl_keyboard.modifiers event with no pressed modifiers.
+	 *
+	 * In the wl_keyboard logical state, this event updates the
+	 * modifiers and group.
 	 * @param serial serial number of the modifiers event
 	 * @param mods_depressed depressed modifiers
 	 * @param mods_latched latched modifiers
@@ -5434,6 +5533,8 @@ struct wl_touch_listener {
 	 * points currently active on this client's surface. The client is
 	 * responsible for finalizing the touch points, future touch points
 	 * on this surface may reuse the touch point ID.
+	 *
+	 * No frame event is required after the cancel event.
 	 */
 	void (*cancel)(void *data,
 		       struct wl_touch *wl_touch);
@@ -5637,11 +5738,10 @@ enum wl_output_subpixel {
 #define WL_OUTPUT_TRANSFORM_ENUM
 /**
  * @ingroup iface_wl_output
- * transform from framebuffer to output
+ * transformation applied to buffer contents
  *
- * This describes the transform that a compositor will apply to a
- * surface to compensate for the rotation or mirroring of an
- * output device.
+ * This describes transformations that clients and compositors apply to
+ * buffer contents.
  *
  * The flipped values correspond to an initial flip around a
  * vertical axis followed by rotation.
@@ -5744,7 +5844,7 @@ struct wl_output_listener {
 	 * @param subpixel subpixel orientation of the output
 	 * @param make textual description of the manufacturer
 	 * @param model textual description of the model
-	 * @param transform transform that maps framebuffer to output
+	 * @param transform additional transformation applied to buffer contents during presentation
 	 */
 	void (*geometry)(void *data,
 			 struct wl_output *wl_output,
@@ -6352,6 +6452,69 @@ wl_subsurface_set_desync(struct wl_subsurface *wl_subsurface)
 			 WL_SUBSURFACE_SET_DESYNC, NULL, wl_proxy_get_version((struct wl_proxy *) wl_subsurface), 0);
 }
 
+#define WL_FIXES_DESTROY 0
+#define WL_FIXES_DESTROY_REGISTRY 1
+
+
+/**
+ * @ingroup iface_wl_fixes
+ */
+#define WL_FIXES_DESTROY_SINCE_VERSION 1
+/**
+ * @ingroup iface_wl_fixes
+ */
+#define WL_FIXES_DESTROY_REGISTRY_SINCE_VERSION 1
+
+/** @ingroup iface_wl_fixes */
+static inline void
+wl_fixes_set_user_data(struct wl_fixes *wl_fixes, void *user_data)
+{
+	wl_proxy_set_user_data((struct wl_proxy *) wl_fixes, user_data);
+}
+
+/** @ingroup iface_wl_fixes */
+static inline void *
+wl_fixes_get_user_data(struct wl_fixes *wl_fixes)
+{
+	return wl_proxy_get_user_data((struct wl_proxy *) wl_fixes);
+}
+
+static inline uint32_t
+wl_fixes_get_version(struct wl_fixes *wl_fixes)
+{
+	return wl_proxy_get_version((struct wl_proxy *) wl_fixes);
+}
+
+/**
+ * @ingroup iface_wl_fixes
+ */
+static inline void
+wl_fixes_destroy(struct wl_fixes *wl_fixes)
+{
+	wl_proxy_marshal_flags((struct wl_proxy *) wl_fixes,
+			 WL_FIXES_DESTROY, NULL, wl_proxy_get_version((struct wl_proxy *) wl_fixes), WL_MARSHAL_FLAG_DESTROY);
+}
+
+/**
+ * @ingroup iface_wl_fixes
+ *
+ * This request destroys a wl_registry object.
+ *
+ * The client should no longer use the wl_registry after making this
+ * request.
+ *
+ * The compositor will emit a wl_display.delete_id event with the object ID
+ * of the registry and will no longer emit any events on the registry. The
+ * client should re-use the object ID once it receives the
+ * wl_display.delete_id event.
+ */
+static inline void
+wl_fixes_destroy_registry(struct wl_fixes *wl_fixes, struct wl_registry *registry)
+{
+	wl_proxy_marshal_flags((struct wl_proxy *) wl_fixes,
+			 WL_FIXES_DESTROY_REGISTRY, NULL, wl_proxy_get_version((struct wl_proxy *) wl_fixes), 0, registry);
+}
+
 #ifdef  __cplusplus
 }
 #endif
diff --git a/raylib/external/glfw/src/xdg-activation-v1-client-protocol-code.h b/raylib/external/glfw/src/xdg-activation-v1-client-protocol-code.h
index 9e6cfc58..ceece5a2 100644
--- a/raylib/external/glfw/src/xdg-activation-v1-client-protocol-code.h
+++ b/raylib/external/glfw/src/xdg-activation-v1-client-protocol-code.h
@@ -1,4 +1,4 @@
-/* Generated by wayland-scanner 1.22.0 */
+/* Generated by wayland-scanner 1.23.1 */
 
 /*
  * Copyright © 2020 Aleix Pol Gonzalez 
@@ -24,6 +24,7 @@
  * DEALINGS IN THE SOFTWARE.
  */
 
+#include 
 #include 
 #include 
 #include "wayland-util.h"
diff --git a/raylib/external/glfw/src/xdg-activation-v1-client-protocol.h b/raylib/external/glfw/src/xdg-activation-v1-client-protocol.h
index 7e8cd294..b26c548c 100644
--- a/raylib/external/glfw/src/xdg-activation-v1-client-protocol.h
+++ b/raylib/external/glfw/src/xdg-activation-v1-client-protocol.h
@@ -1,4 +1,4 @@
-/* Generated by wayland-scanner 1.22.0 */
+/* Generated by wayland-scanner 1.23.1 */
 
 #ifndef XDG_ACTIVATION_V1_CLIENT_PROTOCOL_H
 #define XDG_ACTIVATION_V1_CLIENT_PROTOCOL_H
diff --git a/raylib/external/glfw/src/xdg-decoration-unstable-v1-client-protocol-code.h b/raylib/external/glfw/src/xdg-decoration-unstable-v1-client-protocol-code.h
index 9389145e..85496afa 100644
--- a/raylib/external/glfw/src/xdg-decoration-unstable-v1-client-protocol-code.h
+++ b/raylib/external/glfw/src/xdg-decoration-unstable-v1-client-protocol-code.h
@@ -1,4 +1,4 @@
-/* Generated by wayland-scanner 1.22.0 */
+/* Generated by wayland-scanner 1.23.1 */
 
 /*
  * Copyright © 2018 Simon Ser
@@ -23,6 +23,7 @@
  * DEALINGS IN THE SOFTWARE.
  */
 
+#include 
 #include 
 #include 
 #include "wayland-util.h"
diff --git a/raylib/external/glfw/src/xdg-decoration-unstable-v1-client-protocol.h b/raylib/external/glfw/src/xdg-decoration-unstable-v1-client-protocol.h
index 308c2971..217af207 100644
--- a/raylib/external/glfw/src/xdg-decoration-unstable-v1-client-protocol.h
+++ b/raylib/external/glfw/src/xdg-decoration-unstable-v1-client-protocol.h
@@ -1,4 +1,4 @@
-/* Generated by wayland-scanner 1.22.0 */
+/* Generated by wayland-scanner 1.23.1 */
 
 #ifndef XDG_DECORATION_UNSTABLE_V1_CLIENT_PROTOCOL_H
 #define XDG_DECORATION_UNSTABLE_V1_CLIENT_PROTOCOL_H
@@ -215,6 +215,10 @@ enum zxdg_toplevel_decoration_v1_error {
 	 * xdg_toplevel destroyed before the decoration object
 	 */
 	ZXDG_TOPLEVEL_DECORATION_V1_ERROR_ORPHANED = 2,
+	/**
+	 * invalid mode
+	 */
+	ZXDG_TOPLEVEL_DECORATION_V1_ERROR_INVALID_MODE = 3,
 };
 #endif /* ZXDG_TOPLEVEL_DECORATION_V1_ERROR_ENUM */
 
@@ -347,6 +351,9 @@ zxdg_toplevel_decoration_v1_destroy(struct zxdg_toplevel_decoration_v1 *zxdg_top
  * Such clients are responsible for preventing configure loops and must
  * make sure not to send multiple successive set_mode requests with the
  * same decoration mode.
+ *
+ * If an invalid mode is supplied by the client, the invalid_mode protocol
+ * error is raised by the compositor.
  */
 static inline void
 zxdg_toplevel_decoration_v1_set_mode(struct zxdg_toplevel_decoration_v1 *zxdg_toplevel_decoration_v1, uint32_t mode)
diff --git a/raylib/external/glfw/src/xdg-shell-client-protocol-code.h b/raylib/external/glfw/src/xdg-shell-client-protocol-code.h
index 03826cdc..d698c2ca 100644
--- a/raylib/external/glfw/src/xdg-shell-client-protocol-code.h
+++ b/raylib/external/glfw/src/xdg-shell-client-protocol-code.h
@@ -1,4 +1,4 @@
-/* Generated by wayland-scanner 1.22.0 */
+/* Generated by wayland-scanner 1.23.1 */
 
 /*
  * Copyright © 2008-2013 Kristian Høgsberg
@@ -28,6 +28,7 @@
  * DEALINGS IN THE SOFTWARE.
  */
 
+#include 
 #include 
 #include 
 #include "wayland-util.h"
diff --git a/raylib/external/glfw/src/xdg-shell-client-protocol.h b/raylib/external/glfw/src/xdg-shell-client-protocol.h
index 8b24f093..1f077b49 100644
--- a/raylib/external/glfw/src/xdg-shell-client-protocol.h
+++ b/raylib/external/glfw/src/xdg-shell-client-protocol.h
@@ -1,4 +1,4 @@
-/* Generated by wayland-scanner 1.22.0 */
+/* Generated by wayland-scanner 1.23.1 */
 
 #ifndef XDG_SHELL_CLIENT_PROTOCOL_H
 #define XDG_SHELL_CLIENT_PROTOCOL_H
@@ -167,7 +167,8 @@ extern const struct wl_interface xdg_positioner_interface;
  * manipulate a buffer prior to the first xdg_surface.configure call must
  * also be treated as errors.
  *
- * After creating a role-specific object and setting it up, the client must
+ * After creating a role-specific object and setting it up (e.g. by sending
+ * the title, app ID, size constraints, parent, etc), the client must
  * perform an initial commit without any buffer attached. The compositor
  * will reply with initial wl_surface state such as
  * wl_surface.preferred_buffer_scale followed by an xdg_surface.configure
@@ -220,7 +221,8 @@ extern const struct wl_interface xdg_positioner_interface;
  * manipulate a buffer prior to the first xdg_surface.configure call must
  * also be treated as errors.
  *
- * After creating a role-specific object and setting it up, the client must
+ * After creating a role-specific object and setting it up (e.g. by sending
+ * the title, app ID, size constraints, parent, etc), the client must
  * perform an initial commit without any buffer attached. The compositor
  * will reply with initial wl_surface state such as
  * wl_surface.preferred_buffer_scale followed by an xdg_surface.configure
@@ -267,7 +269,7 @@ extern const struct wl_interface xdg_surface_interface;
  * attributes (e.g. title, state, stacking, ...) are discarded for
  * an xdg_toplevel surface when it is unmapped. The xdg_toplevel returns to
  * the state it had right after xdg_surface.get_toplevel. The client
- * can re-map the toplevel by perfoming a commit without any buffer
+ * can re-map the toplevel by performing a commit without any buffer
  * attached, waiting for a configure event and handling it as usual (see
  * xdg_surface description).
  *
@@ -294,7 +296,7 @@ extern const struct wl_interface xdg_surface_interface;
  * attributes (e.g. title, state, stacking, ...) are discarded for
  * an xdg_toplevel surface when it is unmapped. The xdg_toplevel returns to
  * the state it had right after xdg_surface.get_toplevel. The client
- * can re-map the toplevel by perfoming a commit without any buffer
+ * can re-map the toplevel by performing a commit without any buffer
  * attached, waiting for a configure event and handling it as usual (see
  * xdg_surface description).
  *
@@ -1156,8 +1158,7 @@ xdg_surface_get_popup(struct xdg_surface *xdg_surface, struct xdg_surface *paren
  * portions like drop-shadows which should be ignored for the
  * purposes of aligning, placing and constraining windows.
  *
- * The window geometry is double buffered, and will be applied at the
- * time wl_surface.commit of the corresponding wl_surface is called.
+ * The window geometry is double-buffered state, see wl_surface.commit.
  *
  * When maintaining a position, the compositor should treat the (x, y)
  * coordinate of the window geometry as the top left corner of the window.
@@ -1291,8 +1292,7 @@ enum xdg_toplevel_resize_edge {
  * configure event to ensure that both the client and the compositor
  * setting the state can be synchronized.
  *
- * States set in this way are double-buffered. They will get applied on
- * the next commit.
+ * States set in this way are double-buffered, see wl_surface.commit.
  */
 enum xdg_toplevel_state {
 	/**
@@ -1342,6 +1342,9 @@ enum xdg_toplevel_state {
 	 *
 	 * The window is currently in a tiled layout and the left edge is
 	 * considered to be adjacent to another part of the tiling grid.
+	 *
+	 * The client should draw without shadow or other decoration
+	 * outside of the window geometry on the left edge.
 	 * @since 2
 	 */
 	XDG_TOPLEVEL_STATE_TILED_LEFT = 5,
@@ -1350,6 +1353,9 @@ enum xdg_toplevel_state {
 	 *
 	 * The window is currently in a tiled layout and the right edge
 	 * is considered to be adjacent to another part of the tiling grid.
+	 *
+	 * The client should draw without shadow or other decoration
+	 * outside of the window geometry on the right edge.
 	 * @since 2
 	 */
 	XDG_TOPLEVEL_STATE_TILED_RIGHT = 6,
@@ -1358,6 +1364,9 @@ enum xdg_toplevel_state {
 	 *
 	 * The window is currently in a tiled layout and the top edge is
 	 * considered to be adjacent to another part of the tiling grid.
+	 *
+	 * The client should draw without shadow or other decoration
+	 * outside of the window geometry on the top edge.
 	 * @since 2
 	 */
 	XDG_TOPLEVEL_STATE_TILED_TOP = 7,
@@ -1366,6 +1375,9 @@ enum xdg_toplevel_state {
 	 *
 	 * The window is currently in a tiled layout and the bottom edge
 	 * is considered to be adjacent to another part of the tiling grid.
+	 *
+	 * The client should draw without shadow or other decoration
+	 * outside of the window geometry on the bottom edge.
 	 * @since 2
 	 */
 	XDG_TOPLEVEL_STATE_TILED_BOTTOM = 8,
@@ -1848,8 +1860,7 @@ xdg_toplevel_resize(struct xdg_toplevel *xdg_toplevel, struct wl_seat *seat, uin
  * The width and height arguments are in window geometry coordinates.
  * See xdg_surface.set_window_geometry.
  *
- * Values set in this way are double-buffered. They will get applied
- * on the next commit.
+ * Values set in this way are double-buffered, see wl_surface.commit.
  *
  * The compositor can use this information to allow or disallow
  * different states like maximize or fullscreen and draw accurate
@@ -1893,8 +1904,7 @@ xdg_toplevel_set_max_size(struct xdg_toplevel *xdg_toplevel, int32_t width, int3
  * The width and height arguments are in window geometry coordinates.
  * See xdg_surface.set_window_geometry.
  *
- * Values set in this way are double-buffered. They will get applied
- * on the next commit.
+ * Values set in this way are double-buffered, see wl_surface.commit.
  *
  * The compositor can use this information to allow or disallow
  * different states like maximize or fullscreen and draw accurate