[gnome-flashback] monitor-config-manager: use helper to calculate mirroring scale
- From: Alberts Muktupāvels <muktupavels src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-flashback] monitor-config-manager: use helper to calculate mirroring scale
- Date: Sun, 4 Sep 2022 09:16:10 +0000 (UTC)
commit fd1ddd0ff22c9c9c1604e2ffd49e35101af55a7c
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date: Fri Aug 19 20:46:43 2022 +0300
monitor-config-manager: use helper to calculate mirroring scale
Based on mutter commit:
https://gitlab.gnome.org/GNOME/mutter/-/commit/71bf31da8379b19415d0a59d64bd06748fb3d3d6
backends/gf-monitor-config-manager.c | 72 +++++++++++++++++++-----------------
1 file changed, 39 insertions(+), 33 deletions(-)
---
diff --git a/backends/gf-monitor-config-manager.c b/backends/gf-monitor-config-manager.c
index 11e8070..fb7fbdc 100644
--- a/backends/gf-monitor-config-manager.c
+++ b/backends/gf-monitor-config-manager.c
@@ -340,10 +340,40 @@ create_preferred_logical_monitor_config (GfMonitorManager *monitor_man
return logical_monitor_config;
}
+static float
+compute_scale_for_monitor (GfMonitorManager *monitor_manager,
+ GfMonitor *monitor,
+ GfMonitor *primary_monitor)
+
+{
+ GfMonitor *target_monitor;
+ GfMonitorManagerCapability capabilities;
+ GfLogicalMonitorLayoutMode layout_mode;
+ GfMonitorMode *monitor_mode;
+
+ target_monitor = monitor;
+ capabilities = gf_monitor_manager_get_capabilities (monitor_manager);
+
+ if ((capabilities & GF_MONITOR_MANAGER_CAPABILITY_GLOBAL_SCALE_REQUIRED) &&
+ primary_monitor != NULL)
+ {
+ target_monitor = primary_monitor;
+ }
+
+ layout_mode = gf_monitor_manager_get_default_layout_mode (monitor_manager);
+ monitor_mode = gf_monitor_get_preferred_mode (target_monitor);
+
+ return gf_monitor_manager_calculate_monitor_mode_scale (monitor_manager,
+ layout_mode,
+ target_monitor,
+ monitor_mode);
+}
+
static GfMonitorsConfig *
create_for_switch_config_all_mirror (GfMonitorConfigManager *config_manager)
{
GfMonitorManager *monitor_manager = config_manager->monitor_manager;
+ GfMonitor *primary_monitor;
GfLogicalMonitorLayoutMode layout_mode;
GfLogicalMonitorConfig *logical_monitor_config = NULL;
GList *logical_monitor_configs;
@@ -358,6 +388,12 @@ create_for_switch_config_all_mirror (GfMonitorConfigManager *config_manager)
int width;
int height;
+ primary_monitor = find_primary_monitor (monitor_manager,
+ MONITOR_MATCH_ALLOW_FALLBACK);
+
+ if (primary_monitor == NULL)
+ return NULL;
+
layout_mode = gf_monitor_manager_get_default_layout_mode (monitor_manager);
monitors = gf_monitor_manager_get_monitors (monitor_manager);
monitor = monitors->data;
@@ -430,10 +466,9 @@ create_for_switch_config_all_mirror (GfMonitorConfigManager *config_manager)
if (!mode)
continue;
- scale = gf_monitor_manager_calculate_monitor_mode_scale (monitor_manager,
- layout_mode,
- l_monitor,
- mode);
+ scale = compute_scale_for_monitor (monitor_manager,
+ l_monitor,
+ primary_monitor);
best_scale = MAX (best_scale, scale);
monitor_configs = g_list_prepend (monitor_configs, gf_monitor_config_new (l_monitor, mode));
@@ -519,35 +554,6 @@ verify_suggested_monitors_config (GList *logical_monitor_configs)
return TRUE;
}
-static float
-compute_scale_for_monitor (GfMonitorManager *monitor_manager,
- GfMonitor *monitor,
- GfMonitor *primary_monitor)
-
-{
- GfMonitor *target_monitor;
- GfMonitorManagerCapability capabilities;
- GfLogicalMonitorLayoutMode layout_mode;
- GfMonitorMode *monitor_mode;
-
- target_monitor = monitor;
- capabilities = gf_monitor_manager_get_capabilities (monitor_manager);
-
- if ((capabilities & GF_MONITOR_MANAGER_CAPABILITY_GLOBAL_SCALE_REQUIRED) &&
- primary_monitor != NULL)
- {
- target_monitor = primary_monitor;
- }
-
- layout_mode = gf_monitor_manager_get_default_layout_mode (monitor_manager);
- monitor_mode = gf_monitor_get_preferred_mode (target_monitor);
-
- return gf_monitor_manager_calculate_monitor_mode_scale (monitor_manager,
- layout_mode,
- target_monitor,
- monitor_mode);
-}
-
static GfMonitorsConfig *
create_monitors_config (GfMonitorConfigManager *config_manager,
MonitorMatchRule match_rule,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]