monitor-manager: Fix orientation changes on devices with 90° mounted panels

Commit 2289f56112 ("monitor-manager: Don't apply unneeded orientation
changes") added an early return to handle_orientation_change () in case
the transform is unchanged.

But this did not take the correction of the transform for devices
with 90° mounted panels into account causing a desired orientation
change to get skipped if the new orientation matches the corrected
logical orientation from the previous transform setting.

Fix this by calling meta_monitor_crtc_to_logical_transform () on the
transform before comparing it, matching the
meta_monitor_crtc_to_logical_transform () call in
create_for_builtin_display_rotation ().

Related: https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1233
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2090>
This commit is contained in:
Hans de Goede 2021-11-15 17:20:27 +01:00 committed by Marge Bot
parent 6204769fdb
commit cc9bb7c516

View File

@ -869,6 +869,7 @@ handle_orientation_change (MetaOrientationManager *orientation_manager,
{ {
MetaOrientation orientation; MetaOrientation orientation;
MetaMonitorTransform transform; MetaMonitorTransform transform;
MetaMonitorTransform panel_transform;
GError *error = NULL; GError *error = NULL;
MetaMonitorsConfig *config; MetaMonitorsConfig *config;
MetaMonitor *laptop_panel; MetaMonitor *laptop_panel;
@ -885,7 +886,10 @@ handle_orientation_change (MetaOrientationManager *orientation_manager,
transform = meta_monitor_transform_from_orientation (orientation); transform = meta_monitor_transform_from_orientation (orientation);
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) panel_transform =
meta_monitor_crtc_to_logical_transform (laptop_panel, transform);
if (meta_logical_monitor_get_transform (laptop_logical_monitor) ==
panel_transform)
return; return;
current_config = current_config =