From 1c80d820e46d4c55b7836547a1e029a8e4277061 Mon Sep 17 00:00:00 2001 From: llyyr Date: Tue, 8 Apr 2025 17:15:25 +0530 Subject: [PATCH 1/2] wayland: use _SINCE_VERSION instead of checking for enum constant We can't use #ifndef with an enumerator, this would evaluate to always be true --- video/out/wayland_common.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/video/out/wayland_common.c b/video/out/wayland_common.c index 2067d9f3c7115..629fd09be0e5b 100644 --- a/video/out/wayland_common.c +++ b/video/out/wayland_common.c @@ -69,7 +69,7 @@ #define CLOCK_MONOTONIC_RAW 4 #endif -#ifndef XDG_TOPLEVEL_STATE_SUSPENDED +#ifndef XDG_TOPLEVEL_STATE_SUSPENDED_SINCE_VERSION #define XDG_TOPLEVEL_STATE_SUSPENDED 9 #endif From d4e155ceb5fcd36840b3eb0831a008db3c3014ee Mon Sep 17 00:00:00 2001 From: llyyr Date: Tue, 8 Apr 2025 17:19:23 +0530 Subject: [PATCH 2/2] wayland: support xdg-shell version 7 Waiting for compositor implementation, not actually tested... --- video/out/wayland_common.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/video/out/wayland_common.c b/video/out/wayland_common.c index 629fd09be0e5b..176c2373e01d6 100644 --- a/video/out/wayland_common.c +++ b/video/out/wayland_common.c @@ -73,6 +73,13 @@ #define XDG_TOPLEVEL_STATE_SUSPENDED 9 #endif +#ifndef XDG_TOPLEVEL_STATE_CONSTRAINED_LEFT_SINCE_VERSION +#define XDG_TOPLEVEL_STATE_CONSTRAINED_LEFT 10 +#define XDG_TOPLEVEL_STATE_CONSTRAINED_RIGHT 11 +#define XDG_TOPLEVEL_STATE_CONSTRAINED_TOP 12 +#define XDG_TOPLEVEL_STATE_CONSTRAINED_BOTTOM 13 +#endif + // From the fractional scale protocol #define WAYLAND_SCALE_FACTOR 120.0 @@ -1255,6 +1262,14 @@ static void handle_toplevel_config(void *data, struct xdg_toplevel *toplevel, case XDG_TOPLEVEL_STATE_SUSPENDED: is_suspended = true; break; + case XDG_TOPLEVEL_STATE_CONSTRAINED_LEFT: + case XDG_TOPLEVEL_STATE_CONSTRAINED_RIGHT: + wl->resizing_constraint = MP_WIDTH_CONSTRAINT; + break; + case XDG_TOPLEVEL_STATE_CONSTRAINED_TOP: + case XDG_TOPLEVEL_STATE_CONSTRAINED_BOTTOM: + wl->resizing_constraint = MP_HEIGHT_CONSTRAINT; + break; } } @@ -2011,7 +2026,7 @@ static void registry_handle_add(void *data, struct wl_registry *reg, uint32_t id } if (!strcmp(interface, xdg_wm_base_interface.name) && found++) { - ver = MPMIN(ver, 6); /* Cap at 6 in case new events are added later. */ + ver = MPMIN(ver, 7); /* Cap at 7 in case new events are added later. */ wl->wm_base = wl_registry_bind(reg, id, &xdg_wm_base_interface, ver); xdg_wm_base_add_listener(wl->wm_base, &xdg_wm_base_listener, wl); }