From f2c59f8608218ea3270ee106d93af0cbcf9d831c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Fri, 4 Sep 2020 17:56:40 +0200 Subject: [PATCH] wayland: register xdg-output interface on pre-existing output objects The XDG output manager object may arrive *after* output objects. In this case, we need to register the pre-existing output objects with the XDG output manager. This fixes an issue with some monitors having a DPI value of 0 on Gnome/mutter, which resulted in incorrect font sizes. --- wayland.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/wayland.c b/wayland.c index ac8dc273..dce240d3 100644 --- a/wayland.c +++ b/wayland.c @@ -796,6 +796,13 @@ handle_global(void *data, struct wl_registry *registry, wayl->xdg_output_manager = wl_registry_bind( wayl->registry, name, &zxdg_output_manager_v1_interface, min(version, 2)); + + tll_foreach(wayl->monitors, it) { + struct monitor *mon = &it->item; + mon->xdg = zxdg_output_manager_v1_get_xdg_output( + wayl->xdg_output_manager, mon->output); + zxdg_output_v1_add_listener(mon->xdg, &xdg_output_listener, mon); + } } else if (strcmp(interface, wl_output_interface.name) == 0) {