From 4c17dfb71d878f71c2bb9b788653b544084cb1eb Mon Sep 17 00:00:00 2001 From: Mariusz Bialonczyk Date: Thu, 11 Jan 2024 07:39:01 +0100 Subject: [PATCH] [uwac] output: take a max scale into scaling code Fix for a hybrid multimonitor configurations: Previous code was working for me because the display with scale=2 was last on the wayland display list. After restarting it was earlier. To fix this - just take the highest scale provided by a display. Similar as eg. here the SDL is doing: https://github.com/libsdl-org/SDL/blob/b5bc64aa553fe12d09fe2821eace14ea5b948bd9/src/video/wayland/SDL_waylandwindow.c#L1170 --- uwac/libuwac/uwac-output.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/uwac/libuwac/uwac-output.c b/uwac/libuwac/uwac-output.c index ee378443f..079018eb0 100644 --- a/uwac/libuwac/uwac-output.c +++ b/uwac/libuwac/uwac-output.c @@ -88,7 +88,9 @@ static void output_handle_scale(void* data, struct wl_output* wl_output, int32_t UwacOutput* output = data; assert(output); - output->display->actual_scale = output->scale = scale; + output->scale = scale; + if (scale > output->display->actual_scale) + output->display->actual_scale = scale; } static void output_handle_name(void* data, struct wl_output* wl_output, const char* name)