From d0a9dfefc8e98b65f9097336b4a1c937feeb2857 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= Date: Mon, 4 May 2020 20:09:28 +0200 Subject: [PATCH] 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: --- 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 1a0fdbd63..da3f1dd54 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 1e34f17da..e8e3a3c9a 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 d6b1f8b45..e4a010e50 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 6113f3a5a..e027324f7 100644 --- a/src/backends/meta-monitor-transform.h +++ b/src/backends/meta-monitor-transform.h @@ -22,6 +22,7 @@ #include #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);