Revert "wayland/surface: Add fallback for get_highest_output_scale"

Turns out there is a better solution: Almost always, MetaWindow already has
an idea on which monitor it will be, even if it isn't positioned yet. Since
the last commit we're now using that monitor for setting the
highest-output-scale of the window, so this fallback is no longer necessary.

While we could keep this fallback around and also return a valid scale in
case the surface is not even mapped yet, this means we report fractional
scale twice for new surfaces: Once from
wp_fractional_scale_manager::get_fractional_scale() (here we'll enter the
fallback), and a second time (this time with correct scale) right after
creating the MetaWindow.

Note that wp_fractional_scale_v1 doesn't specify that a preferred_scale
event must be sent immediately after
wp_fractional_scale_manager::get_fractional_scale(), so we can safely remove
the fallback.

This reverts commit 8cfbdb4313edbd7748fb21769d37bf5c35692042.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3598>
This commit is contained in:
Jonas Dreßler 2024-02-19 19:25:59 +01:00 committed by Marge Bot
parent bf4aff823f
commit 0fc39b2a87

View File

@ -1419,26 +1419,6 @@ surface_output_disconnect_signals (gpointer key,
surface);
}
static void
get_highest_output_scale (gpointer key,
gpointer value,
gpointer user_data)
{
MetaWaylandOutput *wayland_output = value;
MetaLogicalMonitor *logical_monitor;
double *highest_scale = user_data;
double scale;
logical_monitor = meta_wayland_output_get_logical_monitor (wayland_output);
if (!logical_monitor)
return;
scale = meta_logical_monitor_get_scale (logical_monitor);
if (scale > *highest_scale)
*highest_scale = scale;
}
double
meta_wayland_surface_get_highest_output_scale (MetaWaylandSurface *surface)
{
@ -1448,20 +1428,15 @@ meta_wayland_surface_get_highest_output_scale (MetaWaylandSurface *surface)
window = meta_wayland_surface_get_window (surface);
if (!window)
goto fallback;
goto out;
logical_monitor = meta_window_get_highest_scale_monitor (window);
if (!logical_monitor)
goto fallback;
goto out;
scale = meta_logical_monitor_get_scale (logical_monitor);
return scale;
fallback:
g_hash_table_foreach (surface->compositor->outputs,
get_highest_output_scale,
&scale);
out:
return scale;
}