#4 Apply monitor transform regression patch
Merged 5 years ago by kalev. Opened 5 years ago by jadahl.
rpms/ jadahl/mutter wip/monitor-rotate-regression-fix  into  f28

@@ -0,0 +1,88 @@ 

+ From 91c5c94434b22895f97b3ae47a889ccb902b86aa Mon Sep 17 00:00:00 2001

+ From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>

+ Date: Mon, 23 Jul 2018 21:36:57 +0200

+ Subject: [PATCH] renderer/native: Check calculated transform when creating

+  view

+ 

+ The "backends: Move MetaOutput::crtc field into private struct"

+ accidentally changed the view transform calculation code to assume that

+ "MetaCrtc::transform" corresponds to the transform of the CRTC; so is

+ not the case yet; one must calculate the transform from the logical

+ monitor, and check whether it is supported by the CRTC using

+ meta_monitor_manager_is_transform_handled(). This commit restores the

+ old behaviour that doesn't use MetaCrtc::transform when calculating the

+ view transform.

+ 

+ Fixes: https://gitlab.gnome.org/GNOME/mutter/issues/216

+ ---

+  src/backends/native/meta-renderer-native.c         | 9 +++++++--

+  src/backends/x11/nested/meta-renderer-x11-nested.c | 8 ++++++--

+  2 files changed, 13 insertions(+), 4 deletions(-)

+ 

+ diff --git a/src/backends/native/meta-renderer-native.c b/src/backends/native/meta-renderer-native.c

+ index fc6b223026..8dc0da7104 100644

+ --- a/src/backends/native/meta-renderer-native.c

+ +++ b/src/backends/native/meta-renderer-native.c

+ @@ -2720,9 +2720,14 @@ calculate_view_transform (MetaMonitorManager *monitor_manager,

+    MetaMonitor *main_monitor;

+    MetaOutput *main_output;

+    MetaCrtc *crtc;

+ +  MetaMonitorTransform crtc_transform;

+ +

+    main_monitor = meta_logical_monitor_get_monitors (logical_monitor)->data;

+    main_output = meta_monitor_get_main_output (main_monitor);

+    crtc = meta_output_get_assigned_crtc (main_output);

+ +  crtc_transform =

+ +    meta_monitor_logical_to_crtc_transform (main_monitor,

+ +                                            logical_monitor->transform);

+  

+    /*

+     * Pick any monitor and output and check; all CRTCs of a logical monitor will

+ @@ -2731,10 +2736,10 @@ calculate_view_transform (MetaMonitorManager *monitor_manager,

+  

+    if (meta_monitor_manager_is_transform_handled (monitor_manager,

+                                                   crtc,

+ -                                                 crtc->transform))

+ +                                                 crtc_transform))

+      return META_MONITOR_TRANSFORM_NORMAL;

+    else

+ -    return crtc->transform;

+ +    return crtc_transform;

+  }

+  

+  static MetaRendererView *

+ diff --git a/src/backends/x11/nested/meta-renderer-x11-nested.c b/src/backends/x11/nested/meta-renderer-x11-nested.c

+ index 8fdf46b0b5..b29b9c69e2 100644

+ --- a/src/backends/x11/nested/meta-renderer-x11-nested.c

+ +++ b/src/backends/x11/nested/meta-renderer-x11-nested.c

+ @@ -51,10 +51,14 @@ calculate_view_transform (MetaMonitorManager *monitor_manager,

+    MetaMonitor *main_monitor;

+    MetaOutput *main_output;

+    MetaCrtc *crtc;

+ +  MetaMonitorTransform crtc_transform;

+  

+    main_monitor = meta_logical_monitor_get_monitors (logical_monitor)->data;

+    main_output = meta_monitor_get_main_output (main_monitor);

+    crtc = meta_output_get_assigned_crtc (main_output);

+ +  crtc_transform =

+ +    meta_monitor_logical_to_crtc_transform (main_monitor,

+ +                                            logical_monitor->transform);

+    /*

+     * Pick any monitor and output and check; all CRTCs of a logical monitor will

+     * always have the same transform assigned to them.

+ @@ -62,10 +66,10 @@ calculate_view_transform (MetaMonitorManager *monitor_manager,

+  

+    if (meta_monitor_manager_is_transform_handled (monitor_manager,

+                                                   crtc,

+ -                                                 crtc->transform))

+ +                                                 crtc_transform))

+      return META_MONITOR_TRANSFORM_NORMAL;

+    else

+ -    return crtc->transform;

+ +    return crtc_transform;

+  }

+  

+  static MetaRendererView *

+ -- 

+ 2.17.1

+ 

file modified
+7 -1
@@ -7,7 +7,7 @@ 

  

  Name:          mutter

  Version:       3.28.3

- Release:       1%{?dist}

+ Release:       2%{?dist}

  Summary:       Window and compositing manager based on Clutter

  

  License:       GPLv2+
@@ -20,6 +20,9 @@ 

  # Upload HW cursor on demand, avoiding stuttering on hybrid GPU laptops

  Patch1:        hw-cursor-on-demand-gnome-3-28.patch

  

+ # Check hw support for calculated view transform

+ Patch2:        0001-renderer-native-Check-calculated-transform-when-crea.patch

+ 

  BuildRequires: chrpath

  BuildRequires: pango-devel

  BuildRequires: startup-notification-devel
@@ -183,6 +186,9 @@ 

  %{_datadir}/mutter/tests

  

  %changelog

+ * Mon Jul 23 2018 Jonas Ådalh <jadahl@redhat.com> - 3.28.3-2

+ - Apply monitor transform regression patch

+ 

  * Wed Jul 18 2018 Florian Müllner <fmuellner@redhat.com> - 3.28.3-1

  - Update to 3.28.3

  

3.28.3 introduced a regression[0] causing non-native transforms not
working anymore. Backport the patch that fixes the regression.

[0] https://gitlab.gnome.org/GNOME/mutter/issues/216

Pull-Request has been merged by kalev

5 years ago