From ccf9c0fe29a8031804aa0d07a97da58c0e2cac04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Thu, 6 Jan 2022 20:00:00 +0100 Subject: [PATCH] =?UTF-8?q?wayland:=20don=E2=80=99t=20try=20to=20bind=20wl?= =?UTF-8?q?=5Foutput=20version=204=20unconditionally?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The compositor may offer version 4, while we’re still linked against an old libwayland that does not implement version 4. While we properly #ifdef the callbacks from version 4, we were still requesting version 4 (if offered by the compositor), even when compiled against a too old libwayland. Closes #876 --- wayland.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/wayland.c b/wayland.c index 61e2dfdf..d58fdc40 100644 --- a/wayland.c +++ b/wayland.c @@ -996,8 +996,16 @@ handle_global(void *data, struct wl_registry *registry, if (!verify_iface_version(interface, version, required)) return; +#if defined(WL_OUTPUT_NAME_SINCE_VERSION) + const uint32_t preferred = WL_OUTPUT_NAME_SINCE_VERSION; +#elif defined(WL_OUTPUT_RELEASE_SINCE_VERSION) + const uint32_t preferred = WL_OUTPUT_RELEASE_SINCE_VERSION; +#else + const uint32_t preferred = required; +#endif + struct wl_output *output = wl_registry_bind( - wayl->registry, name, &wl_output_interface, min(version, 4)); + wayl->registry, name, &wl_output_interface, min(version, preferred)); tll_push_back( wayl->monitors,