forked from AuroraMiddleware/gtk
wayland: Use scale from core wl_output protocol
The “xdg-output” protocol provides clients with the outputs size and position in compositor coordinates, and does not provide the output scale which is already provided by the core “wl_output” protocol. So when receiving the wl_output scale event, we should update the scale regardless of “xdg-output” support, otherwise the scale will remain to its default value of 1 and the surface will be scaled up by the compositor to match the actual output scale, which causes blurry fonts and widgets. Fixes: https://gitlab.gnome.org/GNOME/gtk/issues/1901 Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
This commit is contained in:
parent
d0137ef627
commit
713fceb1bd
@ -2357,16 +2357,18 @@ output_handle_scale (void *data,
|
||||
GDK_NOTE (MISC,
|
||||
g_message ("handle scale output %d, scale %d", monitor->id, scale));
|
||||
|
||||
if (monitor_has_xdg_output (monitor))
|
||||
return;
|
||||
|
||||
gdk_monitor_get_geometry (GDK_MONITOR (monitor), &previous_geometry);
|
||||
previous_scale = gdk_monitor_get_scale_factor (GDK_MONITOR (monitor));
|
||||
|
||||
/* Set the scale from wl_output protocol, regardless of xdg-output support */
|
||||
gdk_monitor_set_scale_factor (GDK_MONITOR (monitor), scale);
|
||||
|
||||
if (monitor_has_xdg_output (monitor))
|
||||
return;
|
||||
|
||||
width = previous_geometry.width * previous_scale;
|
||||
height = previous_geometry.height * previous_scale;
|
||||
|
||||
gdk_monitor_set_scale_factor (GDK_MONITOR (monitor), scale);
|
||||
monitor->width = width / scale;
|
||||
monitor->height = height / scale;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user