summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorNorbert Pfeiler2019-04-20 20:45:41 +0200
committerNorbert Pfeiler2019-04-21 01:06:26 +0200
commit23e7d7f3bae1923cdf71fad70a469568a66a7eae (patch)
treef0a67075eeea8df2ee8cf77616428e408b550a1b
parent55085449f6550515ce32043cd6513d8458b10d5a (diff)
downloadaur-23e7d7f3bae1923cdf71fad70a469568a66a7eae.tar.gz
3.32.1
-rw-r--r--.SRCINFO12
-rw-r--r--0001-wayland-output-Report-unscaled-size-even-in-logical-.patch147
-rw-r--r--PKGBUILD9
3 files changed, 161 insertions, 7 deletions
diff --git a/.SRCINFO b/.SRCINFO
index cf7e583cd1ba..7af766804cbb 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,8 +1,8 @@
# Generated by mksrcinfo v8
-# Sat Mar 16 06:54:19 UTC 2019
+# Sat Apr 20 23:06:11 UTC 2019
pkgbase = mutter-catalyst
pkgdesc = A window manager for GNOME with patches for catalyst compatibility
- pkgver = 3.32.0
+ pkgver = 3.32.1
pkgrel = 1
url = https://gitlab.gnome.org/GNOME/mutter
arch = x86_64
@@ -30,14 +30,16 @@ pkgbase = mutter-catalyst
depends = libinput
depends = pipewire
depends = xorg-server-xwayland
- provides = mutter=3.32.0
+ provides = mutter=3.32.1
conflicts = mutter
- conflicts = gnome-shell>1:3.32.0+999
- source = git+https://gitlab.gnome.org/GNOME/mutter.git#commit=efb1ee97308653a28ed4448b0c405e6faf2c4f40
+ conflicts = gnome-shell>1:3.32.1+999
+ source = git+https://gitlab.gnome.org/GNOME/mutter.git#commit=e3f3274bbf631c57f9a01b7bead6ebf6374f5be4
+ source = 0001-wayland-output-Report-unscaled-size-even-in-logical-.patch
source = 216.patch
source = catalyst-workaround-v2.patch
source = catalyst mutter cogl.patch
sha256sums = SKIP
+ sha256sums = 842162bf8cec5d69fdb80c85fd152ddd3db6a9179d11d6f81d486f79814838c0
sha256sums = ed4f3cf738a3cffdf8a6e1a352bf24d74078c3b26fb9262c5746e0d95b9df756
sha256sums = 2564846288ea55262d681d38f7e43609c63e94990df1cb0a6b99e16e2c073d14
sha256sums = 55079a9daddedc22d9fe4dcfe2e87607345dfafb370f8e7fb6a98c0acae3348a
diff --git a/0001-wayland-output-Report-unscaled-size-even-in-logical-.patch b/0001-wayland-output-Report-unscaled-size-even-in-logical-.patch
new file mode 100644
index 000000000000..be86633bd2a2
--- /dev/null
+++ b/0001-wayland-output-Report-unscaled-size-even-in-logical-.patch
@@ -0,0 +1,147 @@
+From 761000ec8f4b53d0fa06f235be2ed30b80ec5bcb Mon Sep 17 00:00:00 2001
+Message-Id: <761000ec8f4b53d0fa06f235be2ed30b80ec5bcb.1553890447.git.jan.steffens@gmail.com>
+From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com>
+Date: Wed, 27 Mar 2019 00:38:02 +0100
+Subject: [PATCH] wayland/output: Report unscaled size even in logical layout
+ mode
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+In physical layout mode, the size and scale of the `wl_output` matches
+the actual monitor:
+
+| Monitor | `wl_output` | `GdkMonitor` |
+| ------------ | ------------ | ------------ |
+| 3840×2160 @1 | 3840×2160 @1 | 3840×2160 @1 |
+| 3840×2160 @2 | 3840×2160 @2 | 1920×1080 @2 |
+
+GTK currently does not support `xdg_output`. To estimate the logical
+output size for `GdkMonitor`, it divides the output's size by its scale
+factor. There might be other legacy clients making the same assumption.
+
+In logical layout mode, mutter currently reports logical geometry for
+the `wl_output`s, but this no longer matches the monitors:
+
+| Monitor | `wl_output` | `GdkMonitor` |
+| -------------- | ------------ | ------------ |
+| 3840×2160 @1 | 3840×2160 @1 | 3840×2160 @1 |
+| 3840×2160 @2 | 1920×1080 @2 | 960×540 @2 |
+| 3840×2160 @1.5 | 2560×1440 @2 | 1280×720 @2 |
+
+This patch changes logical layout mode to multiply the sizes by the
+`wl_output`'s scale factor before sending them to the client. Now the
+sizes match the physical layout mode again:
+
+| Monitor | `wl_output` | `GdkMonitor` |
+| -------------- | ------------ | ------------ |
+| 3840×2160 @1 | 3840×2160 @1 | 3840×2160 @1 |
+| 3840×2160 @2 | 3840×2160 @2 | 1920×1080 @2 |
+| 3840×2160 @1.5 | 5120×2880 @2 | 2560×1440 @2 |
+
+Unfortunately, non-integer output scales are not representable in
+`wl_output`. Still, I believe these values are better than before, and
+the best we can do for clients that do not know about `xdg_output`: The
+size of the output will match the size that a buffer for a fullscreen
+surface should have at the indicated scale.
+
+Fixes part of https://bugzilla.mozilla.org/show_bug.cgi?id=1534089
+https://gitlab.gnome.org/GNOME/mutter/merge_requests/510
+---
+ src/wayland/meta-wayland-outputs.c | 33 +++++++++++++++++++-----------
+ 1 file changed, 21 insertions(+), 12 deletions(-)
+
+diff --git a/src/wayland/meta-wayland-outputs.c b/src/wayland/meta-wayland-outputs.c
+index 7695d86af..712a143a8 100644
+--- a/src/wayland/meta-wayland-outputs.c
++++ b/src/wayland/meta-wayland-outputs.c
+@@ -181,24 +181,36 @@ send_output_events (struct wl_resource *resource,
+ MetaLogicalMonitor *old_logical_monitor;
+ guint old_mode_flags;
+ gint old_scale;
++ gint scale;
++ MetaRectangle old_rect;
++ MetaRectangle rect;
+ float old_refresh_rate;
+ float refresh_rate;
+
+ old_logical_monitor = wayland_output->logical_monitor;
+ old_mode_flags = wayland_output->mode_flags;
+ old_scale = wayland_output->scale;
++ old_rect = old_logical_monitor->rect;
+ old_refresh_rate = wayland_output->refresh_rate;
+
++ scale = calculate_wayland_output_scale (logical_monitor);
++ rect = logical_monitor->rect;
+ monitor = pick_main_monitor (logical_monitor);
+-
+ current_mode = meta_monitor_get_current_mode (monitor);
+ refresh_rate = meta_monitor_mode_get_refresh_rate (current_mode);
+
++ if (meta_is_stage_views_scaled ()) {
++ old_rect.width *= old_scale;
++ old_rect.height *= old_scale;
++ rect.width *= scale;
++ rect.height *= scale;
++ }
++
+ gboolean need_done = FALSE;
+
+ if (need_all_events ||
+- old_logical_monitor->rect.x != logical_monitor->rect.x ||
+- old_logical_monitor->rect.y != logical_monitor->rect.y ||
++ old_rect.x != rect.x ||
++ old_rect.y != rect.y ||
+ is_different_rotation (old_logical_monitor, logical_monitor))
+ {
+ int width_mm, height_mm;
+@@ -229,40 +241,37 @@ send_output_events (struct wl_resource *resource,
+ transform = WL_OUTPUT_TRANSFORM_NORMAL;
+
+ wl_output_send_geometry (resource,
+- logical_monitor->rect.x,
+- logical_monitor->rect.y,
++ rect.x,
++ rect.y,
+ width_mm,
+ height_mm,
+ subpixel_order,
+ vendor,
+ product,
+ transform);
+ need_done = TRUE;
+ }
+
+ preferred_mode = meta_monitor_get_preferred_mode (monitor);
+ if (current_mode == preferred_mode)
+ mode_flags |= WL_OUTPUT_MODE_PREFERRED;
+
+ if (need_all_events ||
+- old_logical_monitor->rect.width != logical_monitor->rect.width ||
+- old_logical_monitor->rect.height != logical_monitor->rect.height ||
++ old_rect.width != rect.width ||
++ old_rect.height != rect.height ||
+ old_refresh_rate != refresh_rate ||
+ old_mode_flags != mode_flags)
+ {
+ wl_output_send_mode (resource,
+ mode_flags,
+- logical_monitor->rect.width,
+- logical_monitor->rect.height,
++ rect.width,
++ rect.height,
+ (int32_t) (refresh_rate * 1000));
+ need_done = TRUE;
+ }
+
+ if (version >= WL_OUTPUT_SCALE_SINCE_VERSION)
+ {
+- int scale;
+-
+- scale = calculate_wayland_output_scale (logical_monitor);
+ if (need_all_events ||
+ old_scale != scale)
+ {
+--
+2.21.0
+
diff --git a/PKGBUILD b/PKGBUILD
index df818f246aa4..75994c5c9116 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -5,7 +5,7 @@
_realname=mutter
pkgname=$_realname-catalyst
-pkgver=3.32.0
+pkgver=3.32.1
pkgrel=1
pkgdesc="A window manager for GNOME with patches for catalyst compatibility"
url="https://gitlab.gnome.org/GNOME/mutter"
@@ -38,12 +38,14 @@ checkdepends=('xorg-server-xvfb')
conflicts=('mutter' "gnome-shell>1:${pkgver:0:6}+999")
provides=("mutter=${pkgver}")
groups=('gnome')
-_commit=efb1ee97308653a28ed4448b0c405e6faf2c4f40 # tags/3.32.0^0
+_commit=e3f3274bbf631c57f9a01b7bead6ebf6374f5be4 # tags/3.32.1^0
source=("git+https://gitlab.gnome.org/GNOME/mutter.git#commit=$_commit"
+ 0001-wayland-output-Report-unscaled-size-even-in-logical-.patch
216.patch
"catalyst-workaround-v2.patch"
"catalyst mutter cogl.patch")
sha256sums=('SKIP'
+ '842162bf8cec5d69fdb80c85fd152ddd3db6a9179d11d6f81d486f79814838c0'
'ed4f3cf738a3cffdf8a6e1a352bf24d74078c3b26fb9262c5746e0d95b9df756'
'2564846288ea55262d681d38f7e43609c63e94990df1cb0a6b99e16e2c073d14'
'55079a9daddedc22d9fe4dcfe2e87607345dfafb370f8e7fb6a98c0acae3348a')
@@ -56,6 +58,9 @@ pkgver() {
prepare() {
cd "$_realname"
+ # https://bugzilla.mozilla.org/show_bug.cgi?id=1534089
+ patch -Np1 -i ../0001-wayland-output-Report-unscaled-size-even-in-logical-.patch
+
# https://gitlab.gnome.org/GNOME/mutter/merge_requests/216
git apply -3 ../216.patch