[mutter/gnome-3-36] monitor-config-manager: Only use crtc transform for assignment



commit 5e9986bbcbfe18d1eb58f62753472113e9b9522d
Author: Jonas Ådahl <jadahl gmail com>
Date:   Tue Apr 14 10:23:43 2020 +0200

    monitor-config-manager: Only use crtc transform for assignment
    
    The CRTC level transform (i.e. not necessarily the one set on the
    hardware) is what is relevant for calculating the layout the CRTC will
    have on the stage, so only use the one that can be handled by the
    hardware for the CRTC assignment.
    
    This makes the CRTC layout valid for tiled monitors.
    
    https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1199

 src/backends/meta-monitor-config-manager.c | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)
---
diff --git a/src/backends/meta-monitor-config-manager.c b/src/backends/meta-monitor-config-manager.c
index 5739ca18b..cc9159683 100644
--- a/src/backends/meta-monitor-config-manager.c
+++ b/src/backends/meta-monitor-config-manager.c
@@ -172,6 +172,7 @@ assign_monitor_crtc (MetaMonitor         *monitor,
   MetaCrtc *crtc;
   MetaMonitorTransform transform;
   MetaMonitorTransform crtc_transform;
+  MetaMonitorTransform crtc_hw_transform;
   int crtc_x, crtc_y;
   float x_offset, y_offset;
   float scale = 0.0;
@@ -200,10 +201,12 @@ assign_monitor_crtc (MetaMonitor         *monitor,
 
   transform = data->logical_monitor_config->transform;
   crtc_transform = meta_monitor_logical_to_crtc_transform (monitor, transform);
-  if (!meta_monitor_manager_is_transform_handled (data->monitor_manager,
-                                                  crtc,
-                                                  crtc_transform))
-    crtc_transform = META_MONITOR_TRANSFORM_NORMAL;
+  if (meta_monitor_manager_is_transform_handled (data->monitor_manager,
+                                                 crtc,
+                                                 crtc_transform))
+    crtc_hw_transform = crtc_transform;
+  else
+    crtc_hw_transform = META_MONITOR_TRANSFORM_NORMAL;
 
   meta_monitor_calculate_crtc_pos (monitor, mode, output, crtc_transform,
                                    &crtc_x, &crtc_y);
@@ -244,7 +247,7 @@ assign_monitor_crtc (MetaMonitor         *monitor,
     .crtc = crtc,
     .mode = crtc_mode,
     .layout = crtc_layout,
-    .transform = crtc_transform,
+    .transform = crtc_hw_transform,
     .outputs = g_ptr_array_new ()
   };
   g_ptr_array_add (crtc_info->outputs, output);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]