From 20a16a1f8addad22df9eed753ea3b087e18e20e6 Mon Sep 17 00:00:00 2001 From: Kalev Lember Date: Wed, 4 Oct 2023 10:51:44 +0200 Subject: [PATCH] Backport upstream MR3299 to fix disabling scale-monitor-framebuffer https://bugzilla.redhat.com/show_bug.cgi?id=2242061 --- 3299.patch | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++ mutter.spec | 3 +++ 2 files changed, 61 insertions(+) create mode 100644 3299.patch diff --git a/3299.patch b/3299.patch new file mode 100644 index 0000000..920389b --- /dev/null +++ b/3299.patch @@ -0,0 +1,58 @@ +From 4008ed2f55d4621a4ed2230799c1ab2d012b3545 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jonas=20=C3=85dahl?= +Date: Wed, 27 Sep 2023 22:59:13 +0800 +Subject: [PATCH] monitor-config-store: Discard config with fractional scale + when unusable + +When a configuration has a fractional scale, but we're using a physical +monitor layout, we can't use the scale, but if we do, we end up with +wierd issues down the line. Just discard the config if we run into this. + +Eventually we probably want to store the layout mode in the +configuration so we can handle more seamless switching between physical +and logical layout mode, but first do this. + +Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/3057 +--- + src/backends/meta-monitor-config-store.c | 13 +++++++++++-- + 1 file changed, 11 insertions(+), 2 deletions(-) + +diff --git a/src/backends/meta-monitor-config-store.c b/src/backends/meta-monitor-config-store.c +index fe9406fd3f7..53a32cd2aaf 100644 +--- a/src/backends/meta-monitor-config-store.c ++++ b/src/backends/meta-monitor-config-store.c +@@ -653,6 +653,7 @@ derive_logical_monitor_layout (MetaLogicalMonitorConfig *logical_monitor_conf + MetaMonitorConfig *monitor_config; + int mode_width, mode_height; + int width = 0, height = 0; ++ float scale; + GList *l; + + monitor_config = logical_monitor_config->monitor_configs->data; +@@ -683,13 +684,21 @@ derive_logical_monitor_layout (MetaLogicalMonitorConfig *logical_monitor_conf + height = mode_height; + } + ++ scale = logical_monitor_config->scale; ++ + switch (layout_mode) + { + case META_LOGICAL_MONITOR_LAYOUT_MODE_LOGICAL: +- width = roundf (width / logical_monitor_config->scale); +- height = roundf (height / logical_monitor_config->scale); ++ width = roundf (width / scale); ++ height = roundf (height / scale); + break; + case META_LOGICAL_MONITOR_LAYOUT_MODE_PHYSICAL: ++ if (!G_APPROX_VALUE (scale, roundf (scale), FLT_EPSILON)) ++ { ++ g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, ++ "A fractional scale with physical layout mode not allowed"); ++ return FALSE; ++ } + break; + } + +-- +GitLab + diff --git a/mutter.spec b/mutter.spec index 46ec142..a52b3d7 100644 --- a/mutter.spec +++ b/mutter.spec @@ -36,6 +36,9 @@ Patch5: 0001-util-Add-way-to-print-backtraces.patch Patch6: 0002-clutter-Add-ms2ns-helper.patch Patch7: 0003-native-Stop-using-real-time-thread-if-it-stalls.patch +# https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3299 +Patch8: 3299.patch + BuildRequires: pkgconfig(gobject-introspection-1.0) >= 1.41.0 BuildRequires: pkgconfig(polkit-gobject-1) BuildRequires: pkgconfig(sm)