monitor-config-manager: Use helper to calculate mirroring scale

This will eventually help with better hueristics for finding a good
scale. It currently doesn't change much, but the helper will later gain
more functionality that will also help when coming up with mirroring
configs.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2479>
This commit is contained in:
Jonas Ådahl 2022-06-23 12:48:57 +02:00 committed by Marge Bot
parent 8698b4a493
commit 71bf31da83

View File

@ -1169,6 +1169,7 @@ static MetaMonitorsConfig *
create_for_switch_config_all_mirror (MetaMonitorConfigManager *config_manager) create_for_switch_config_all_mirror (MetaMonitorConfigManager *config_manager)
{ {
MetaMonitorManager *monitor_manager = config_manager->monitor_manager; MetaMonitorManager *monitor_manager = config_manager->monitor_manager;
MetaMonitor *primary_monitor;
MetaLogicalMonitorLayoutMode layout_mode; MetaLogicalMonitorLayoutMode layout_mode;
MetaLogicalMonitorConfig *logical_monitor_config = NULL; MetaLogicalMonitorConfig *logical_monitor_config = NULL;
GList *logical_monitor_configs; GList *logical_monitor_configs;
@ -1182,6 +1183,11 @@ create_for_switch_config_all_mirror (MetaMonitorConfigManager *config_manager)
MetaMonitorsConfig *monitors_config; MetaMonitorsConfig *monitors_config;
int width, height; int width, height;
primary_monitor = find_primary_monitor (monitor_manager,
MONITOR_MATCH_ALLOW_FALLBACK);
if (!primary_monitor)
return NULL;
layout_mode = meta_monitor_manager_get_default_layout_mode (monitor_manager); layout_mode = meta_monitor_manager_get_default_layout_mode (monitor_manager);
monitors = meta_monitor_manager_get_monitors (monitor_manager); monitors = meta_monitor_manager_get_monitors (monitor_manager);
monitor = monitors->data; monitor = monitors->data;
@ -1255,9 +1261,8 @@ create_for_switch_config_all_mirror (MetaMonitorConfigManager *config_manager)
if (!mode) if (!mode)
continue; continue;
scale = meta_monitor_manager_calculate_monitor_mode_scale (monitor_manager, scale = compute_scale_for_monitor (config_manager, monitor,
layout_mode, primary_monitor);
monitor, mode);
best_scale = MAX (best_scale, scale); best_scale = MAX (best_scale, scale);
monitor_configs = g_list_prepend (monitor_configs, create_monitor_config (monitor, mode)); monitor_configs = g_list_prepend (monitor_configs, create_monitor_config (monitor, mode));
} }