[gnome-flashback] monitor-config-manager: use helper to calculate mirroring scale



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]