diff options
author | Norbert Pfeiler | 2019-04-20 20:45:41 +0200 |
---|---|---|
committer | Norbert Pfeiler | 2019-04-21 01:06:26 +0200 |
commit | 23e7d7f3bae1923cdf71fad70a469568a66a7eae (patch) | |
tree | f0a67075eeea8df2ee8cf77616428e408b550a1b | |
parent | 55085449f6550515ce32043cd6513d8458b10d5a (diff) | |
download | aur-23e7d7f3bae1923cdf71fad70a469568a66a7eae.tar.gz |
3.32.1
-rw-r--r-- | .SRCINFO | 12 | ||||
-rw-r--r-- | 0001-wayland-output-Report-unscaled-size-even-in-logical-.patch | 147 | ||||
-rw-r--r-- | PKGBUILD | 9 |
3 files changed, 161 insertions, 7 deletions
@@ -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 + @@ -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 |