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>
This commit is contained in:
Marco Trevisan (Treviño) 2020-05-04 20:09:28 +02:00 committed by Jonas Ådahl
parent bf54a16f92
commit d0a9dfefc8
4 changed files with 28 additions and 32 deletions

View File

@ -702,6 +702,7 @@ get_monitor_transform (MetaMonitorManager *monitor_manager,
MetaMonitor *monitor) MetaMonitor *monitor)
{ {
MetaOrientationManager *orientation_manager; MetaOrientationManager *orientation_manager;
MetaOrientation orientation;
MetaBackend *backend; MetaBackend *backend;
if (!meta_monitor_is_laptop_panel (monitor) || 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); backend = meta_monitor_manager_get_backend (monitor_manager);
orientation_manager = meta_backend_get_orientation_manager (backend); orientation_manager = meta_backend_get_orientation_manager (backend);
orientation = meta_orientation_manager_get_orientation (orientation_manager);
switch (meta_orientation_manager_get_orientation (orientation_manager)) return meta_monitor_transform_from_orientation (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;
}
} }
static MetaLogicalMonitorConfig * static MetaLogicalMonitorConfig *

View File

@ -864,6 +864,7 @@ static void
handle_orientation_change (MetaOrientationManager *orientation_manager, handle_orientation_change (MetaOrientationManager *orientation_manager,
MetaMonitorManager *manager) MetaMonitorManager *manager)
{ {
MetaOrientation orientation;
MetaMonitorTransform transform; MetaMonitorTransform transform;
GError *error = NULL; GError *error = NULL;
MetaMonitorsConfig *config; MetaMonitorsConfig *config;
@ -877,25 +878,8 @@ handle_orientation_change (MetaOrientationManager *orientation_manager,
if (!meta_monitor_is_active (laptop_panel)) if (!meta_monitor_is_active (laptop_panel))
return; return;
switch (meta_orientation_manager_get_orientation (orientation_manager)) orientation = meta_orientation_manager_get_orientation (orientation_manager);
{ transform = meta_monitor_transform_from_orientation (orientation);
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;
}
laptop_logical_monitor = meta_monitor_get_logical_monitor (laptop_panel); laptop_logical_monitor = meta_monitor_get_logical_monitor (laptop_panel);
if (meta_logical_monitor_get_transform (laptop_logical_monitor) == transform) if (meta_logical_monitor_get_transform (laptop_logical_monitor) == transform)

View File

@ -19,6 +19,24 @@
#include "backends/meta-monitor-transform.h" #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 MetaMonitorTransform
meta_monitor_transform_invert (MetaMonitorTransform transform) meta_monitor_transform_invert (MetaMonitorTransform transform)
{ {

View File

@ -22,6 +22,7 @@
#include <glib-object.h> #include <glib-object.h>
#include "backends/meta-backend-types.h" #include "backends/meta-backend-types.h"
#include "backends/meta-orientation-manager.h"
#include "core/util-private.h" #include "core/util-private.h"
enum _MetaMonitorTransform enum _MetaMonitorTransform
@ -53,6 +54,9 @@ meta_monitor_transform_is_flipped (MetaMonitorTransform transform)
return (transform >= META_MONITOR_TRANSFORM_FLIPPED); return (transform >= META_MONITOR_TRANSFORM_FLIPPED);
} }
META_EXPORT_TEST
MetaMonitorTransform meta_monitor_transform_from_orientation (MetaOrientation orientation);
META_EXPORT_TEST META_EXPORT_TEST
MetaMonitorTransform meta_monitor_transform_invert (MetaMonitorTransform transform); MetaMonitorTransform meta_monitor_transform_invert (MetaMonitorTransform transform);