diff --git a/libxkbcommon/.signature b/libxkbcommon/.signature index eadbb9924..4d6fe5b68 100644 --- a/libxkbcommon/.signature +++ b/libxkbcommon/.signature @@ -1,5 +1,6 @@ untrusted comment: verify with /etc/ports/opt.pub -RWSE3ohX2g5d/YebRJ05Rgw5lL/EOCqjlf/uTi76Sgf+CNq4omz63Q70GO/uUfvoOX6HwiL2aXYzjcVQlCOf16X/A1RdlcXQDwQ= -SHA256 (Pkgfile) = ab0af8401b388b198de580ed7bd0feb7fa8c7e39818e248d60ae8a17e0f9ce84 +RWSE3ohX2g5d/fcJgIC0w5lZsMn6edwIcCxs8PjWfrOWGRBqOFVwTS+D9SipMpI+LXWjdW4ghPwbCvp2fpwOJ+qsIscPfIrGXg8= +SHA256 (Pkgfile) = 56e1c4df1155e902525ce82c142eb053b0947ddd8eb74df3cca1604351546032 SHA256 (.footprint) = c4c5d4c7e0f46b05b5f563ef4c12e58670f43e60fb096e3f942f3238502d785a SHA256 (xkbcommon-1.4.1.tar.gz) = 3b86670dd91441708dedc32bc7f684a034232fd4a9bb209f53276c9783e9d40e +SHA256 (320f56d2a4a31026e5c8d3b60303af98bf885e1b.patch) = e3672a164360c1fc272846b38526bf45a5a14d6d9ea23e07c0506b9a022d07e1 diff --git a/libxkbcommon/320f56d2a4a31026e5c8d3b60303af98bf885e1b.patch b/libxkbcommon/320f56d2a4a31026e5c8d3b60303af98bf885e1b.patch new file mode 100644 index 000000000..ec1b0fe21 --- /dev/null +++ b/libxkbcommon/320f56d2a4a31026e5c8d3b60303af98bf885e1b.patch @@ -0,0 +1,57 @@ +From 320f56d2a4a31026e5c8d3b60303af98bf885e1b Mon Sep 17 00:00:00 2001 +From: "Jan Alexander Steffens (heftig)" +Date: Sun, 4 Sep 2022 00:51:07 +0200 +Subject: [PATCH] interactive-wayland: Fix interface versioning + +We need to request the lower version of the interface versions we +support and the server supports, not the higher version. + +Using the higher version caused crashes due to unbound callbacks on +GNOME, which supports a higher version of `xdg_wm_base`. +--- + tools/interactive-wayland.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/tools/interactive-wayland.c b/tools/interactive-wayland.c +index d23432d4..890680f5 100644 +--- a/tools/interactive-wayland.c ++++ b/tools/interactive-wayland.c +@@ -42,7 +42,7 @@ + #include "xdg-shell-client-protocol.h" + #include + +-#define MAX(a, b) ((a) > (b) ? (a) : (b)) ++#define MIN(a, b) ((a) < (b) ? (a) : (b)) + + struct interactive_dpy { + struct wl_display *dpy; +@@ -557,7 +557,7 @@ seat_create(struct interactive_dpy *inter, struct wl_registry *registry, + seat->global_name = name; + seat->inter = inter; + seat->wl_seat = wl_registry_bind(registry, name, &wl_seat_interface, +- MAX(version, 5)); ++ MIN(version, 5)); + wl_seat_add_listener(seat->wl_seat, &seat_listener, seat); + ret = asprintf(&seat->name_str, "seat:%d", + wl_proxy_get_id((struct wl_proxy *) seat->wl_seat)); +@@ -607,17 +607,17 @@ registry_global(void *data, struct wl_registry *registry, uint32_t name, + else if (strcmp(interface, "xdg_wm_base") == 0) { + inter->shell = wl_registry_bind(registry, name, + &xdg_wm_base_interface, +- MAX(version, 2)); ++ MIN(version, 2)); + xdg_wm_base_add_listener(inter->shell, &shell_listener, inter); + } + else if (strcmp(interface, "wl_compositor") == 0) { + inter->compositor = wl_registry_bind(registry, name, + &wl_compositor_interface, +- MAX(version, 1)); ++ MIN(version, 1)); + } + else if (strcmp(interface, "wl_shm") == 0) { + inter->shm = wl_registry_bind(registry, name, &wl_shm_interface, +- MAX(version, 1)); ++ MIN(version, 1)); + } + } + diff --git a/libxkbcommon/Pkgfile b/libxkbcommon/Pkgfile index 1e83ecf80..0aae3a6fc 100644 --- a/libxkbcommon/Pkgfile +++ b/libxkbcommon/Pkgfile @@ -6,11 +6,13 @@ name=libxkbcommon version=1.4.1 -release=1 -source=(https://github.com/xkbcommon/libxkbcommon/archive/xkbcommon-$version.tar.gz) +release=2 +source=(https://github.com/xkbcommon/libxkbcommon/archive/xkbcommon-$version.tar.gz + 320f56d2a4a31026e5c8d3b60303af98bf885e1b.patch) build() { prt-get isinst wayland-protocols || PKGMK_XKBCOMMON+=' -D enable-wayland=false' + patch -Np1 -d libxkbcommon-xkbcommon-$version -i $SRC/320f56d2a4a31026e5c8d3b60303af98bf885e1b.patch meson build libxkbcommon-xkbcommon-$version $PKGMK_XKBCOMMON \ --prefix=/usr \