From 1035200f26efaddc8c21194e775f11fedf2ee266 Mon Sep 17 00:00:00 2001 From: Hans de Goede Date: Sun, 17 Sep 2017 12:07:12 +0200 Subject: monitor-config-manager: Fix 90/270 degree rotation not working When rotating 90/270 degrees we need to swap width and height. This fixes the screen going black and the following errors showing in the journal: gnome-shell[1097]: Failed to set CRTC mode 800x1280: No space left on device gnome-shell[1097]: Failed to flip: Device or resource busy gnome-shell[1097]: Failed to set CRTC mode 800x1280: No space left on device gnome-shell[1097]: Failed to set CRTC mode 800x1280: No space left on device When rotating a tablet with accelerometer 90/270 degrees. https://bugzilla.gnome.org/show_bug.cgi?id=787836 --- src/backends/meta-monitor-config-manager.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/backends/meta-monitor-config-manager.c b/src/backends/meta-monitor-config-manager.c index 265269c..d40c2e0 100644 --- a/src/backends/meta-monitor-config-manager.c +++ b/src/backends/meta-monitor-config-manager.c @@ -764,6 +764,14 @@ create_for_builtin_display_rotation (MetaMonitorConfigManager *config_manager, logical_monitor_config->monitor_configs = g_list_append (NULL, monitor_config); logical_monitor_config->transform = transform; + if (meta_monitor_transform_is_rotated (current_logical_monitor_config->transform) != + meta_monitor_transform_is_rotated (logical_monitor_config->transform)) + { + int temp = logical_monitor_config->layout.width; + logical_monitor_config->layout.width = logical_monitor_config->layout.height; + logical_monitor_config->layout.height = temp; + } + return meta_monitors_config_new (g_list_append (NULL, logical_monitor_config), config_manager->current_config->layout_mode, META_MONITORS_CONFIG_FLAG_NONE); -- cgit v0.12 From 7e3a780dcdabaff6ff94fddec7995681029b2f9a Mon Sep 17 00:00:00 2001 From: Hans de Goede Date: Sun, 17 Sep 2017 16:21:46 +0200 Subject: monitor-config-manager-kms: Fix is_transform_handled meta_monitor_manager_kms_is_transform_handled should checked the transform passed as function argument, not the current crtc transform. https://bugzilla.gnome.org/show_bug.cgi?id=787836 --- src/backends/native/meta-monitor-manager-kms.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backends/native/meta-monitor-manager-kms.c b/src/backends/native/meta-monitor-manager-kms.c index 6507e51..23a79ae 100644 --- a/src/backends/native/meta-monitor-manager-kms.c +++ b/src/backends/native/meta-monitor-manager-kms.c @@ -1782,7 +1782,7 @@ meta_monitor_manager_kms_is_transform_handled (MetaMonitorManager *manager, { MetaCrtcKms *crtc_kms = crtc->driver_private; - if ((1 << crtc->transform) & crtc_kms->all_hw_transforms) + if ((1 << transform) & crtc_kms->all_hw_transforms) return TRUE; else return FALSE; -- cgit v0.12