wayland: don’t try to bind wl_output version 4 unconditionally

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
This commit is contained in:
Daniel Eklöf 2022-01-06 20:00:00 +01:00
parent 99ebff5a51
commit ccf9c0fe29
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F

View file

@ -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,