[mutter] monitor-transform: Add function to compute from orientation



commit d0a9dfefc8e98b65f9097336b4a1c937feeb2857
Author: Marco Trevisan (TreviƱo) <mail 3v1n0 net>
Date:   Mon May 4 20:09:28 2020 +0200

    monitor-transform: Add function to compute from orientation
    
    We have two places in the code where we compute the monitor
    transformation from the device orientation, avoid duplicating this
    code.
    
    Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1233>

 src/backends/meta-monitor-config-manager.c | 16 +++-------------
 src/backends/meta-monitor-manager.c        | 22 +++-------------------
 src/backends/meta-monitor-transform.c      | 18 ++++++++++++++++++
 src/backends/meta-monitor-transform.h      |  4 ++++
 4 files changed, 28 insertions(+), 32 deletions(-)
---
diff --git a/src/backends/meta-monitor-config-manager.c b/src/backends/meta-monitor-config-manager.c
index 1a0fdbd63b..da3f1dd544 100644
--- a/src/backends/meta-monitor-config-manager.c
+++ b/src/backends/meta-monitor-config-manager.c
@@ -702,6 +702,7 @@ get_monitor_transform (MetaMonitorManager *monitor_manager,
                        MetaMonitor        *monitor)
 {
   MetaOrientationManager *orientation_manager;
+  MetaOrientation orientation;
   MetaBackend *backend;
 
   if (!meta_monitor_is_laptop_panel (monitor) ||
@@ -710,20 +711,9 @@ get_monitor_transform (MetaMonitorManager *monitor_manager,
 
   backend = meta_monitor_manager_get_backend (monitor_manager);
   orientation_manager = meta_backend_get_orientation_manager (backend);
+  orientation = meta_orientation_manager_get_orientation (orientation_manager);
 
-  switch (meta_orientation_manager_get_orientation (orientation_manager))
-    {
-    case META_ORIENTATION_BOTTOM_UP:
-      return META_MONITOR_TRANSFORM_180;
-    case META_ORIENTATION_LEFT_UP:
-      return META_MONITOR_TRANSFORM_90;
-    case META_ORIENTATION_RIGHT_UP:
-      return META_MONITOR_TRANSFORM_270;
-    case META_ORIENTATION_UNDEFINED:
-    case META_ORIENTATION_NORMAL:
-    default:
-      return META_MONITOR_TRANSFORM_NORMAL;
-    }
+  return meta_monitor_transform_from_orientation (orientation);
 }
 
 static MetaLogicalMonitorConfig *
diff --git a/src/backends/meta-monitor-manager.c b/src/backends/meta-monitor-manager.c
index 1e34f17da4..e8e3a3c9ad 100644
--- a/src/backends/meta-monitor-manager.c
+++ b/src/backends/meta-monitor-manager.c
@@ -864,6 +864,7 @@ static void
 handle_orientation_change (MetaOrientationManager *orientation_manager,
                            MetaMonitorManager     *manager)
 {
+  MetaOrientation orientation;
   MetaMonitorTransform transform;
   GError *error = NULL;
   MetaMonitorsConfig *config;
@@ -877,25 +878,8 @@ handle_orientation_change (MetaOrientationManager *orientation_manager,
   if (!meta_monitor_is_active (laptop_panel))
     return;
 
-  switch (meta_orientation_manager_get_orientation (orientation_manager))
-    {
-    case META_ORIENTATION_NORMAL:
-      transform = META_MONITOR_TRANSFORM_NORMAL;
-      break;
-    case META_ORIENTATION_BOTTOM_UP:
-      transform = META_MONITOR_TRANSFORM_180;
-      break;
-    case META_ORIENTATION_LEFT_UP:
-      transform = META_MONITOR_TRANSFORM_90;
-      break;
-    case META_ORIENTATION_RIGHT_UP:
-      transform = META_MONITOR_TRANSFORM_270;
-      break;
-
-    case META_ORIENTATION_UNDEFINED:
-    default:
-      return;
-    }
+  orientation = meta_orientation_manager_get_orientation (orientation_manager);
+  transform = meta_monitor_transform_from_orientation (orientation);
 
   laptop_logical_monitor = meta_monitor_get_logical_monitor (laptop_panel);
   if (meta_logical_monitor_get_transform (laptop_logical_monitor) == transform)
diff --git a/src/backends/meta-monitor-transform.c b/src/backends/meta-monitor-transform.c
index d6b1f8b45d..e4a010e502 100644
--- a/src/backends/meta-monitor-transform.c
+++ b/src/backends/meta-monitor-transform.c
@@ -19,6 +19,24 @@
 
 #include "backends/meta-monitor-transform.h"
 
+MetaMonitorTransform
+meta_monitor_transform_from_orientation (MetaOrientation orientation)
+{
+  switch (orientation)
+    {
+    case META_ORIENTATION_BOTTOM_UP:
+      return META_MONITOR_TRANSFORM_180;
+    case META_ORIENTATION_LEFT_UP:
+      return META_MONITOR_TRANSFORM_90;
+    case META_ORIENTATION_RIGHT_UP:
+      return META_MONITOR_TRANSFORM_270;
+    case META_ORIENTATION_UNDEFINED:
+    case META_ORIENTATION_NORMAL:
+    default:
+      return META_MONITOR_TRANSFORM_NORMAL;
+    }
+}
+
 MetaMonitorTransform
 meta_monitor_transform_invert (MetaMonitorTransform transform)
 {
diff --git a/src/backends/meta-monitor-transform.h b/src/backends/meta-monitor-transform.h
index 6113f3a5aa..e027324f72 100644
--- a/src/backends/meta-monitor-transform.h
+++ b/src/backends/meta-monitor-transform.h
@@ -22,6 +22,7 @@
 #include <glib-object.h>
 
 #include "backends/meta-backend-types.h"
+#include "backends/meta-orientation-manager.h"
 #include "core/util-private.h"
 
 enum _MetaMonitorTransform
@@ -53,6 +54,9 @@ meta_monitor_transform_is_flipped (MetaMonitorTransform transform)
   return (transform >= META_MONITOR_TRANSFORM_FLIPPED);
 }
 
+META_EXPORT_TEST
+MetaMonitorTransform meta_monitor_transform_from_orientation (MetaOrientation orientation);
+
 META_EXPORT_TEST
 MetaMonitorTransform meta_monitor_transform_invert (MetaMonitorTransform transform);
 


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