diff options
author | Térence Clastres | 2019-06-09 03:54:31 +0200 |
---|---|---|
committer | Térence Clastres | 2019-06-09 03:57:38 +0200 |
commit | 64ac11a6cb6cce9f24280bd34bb69017f76ad94a (patch) | |
tree | 787598c28e5a0a28cfaad0b03929b4b3ac8fdf5c | |
parent | 696d668b29b864bc3856135e7c56dfee23f7fdda (diff) | |
download | aur-64ac11a6cb6cce9f24280bd34bb69017f76ad94a.tar.gz |
Remove merged .patch
-rw-r--r-- | .SRCINFO | 4 | ||||
-rw-r--r-- | 0001-wayland-output-Report-unscaled-size-even-in-logical-.patch | 147 | ||||
-rw-r--r-- | 216.patch | 128 | ||||
-rw-r--r-- | PKGBUILD | 11 |
4 files changed, 2 insertions, 288 deletions
@@ -31,11 +31,7 @@ pkgbase = mutter-781835-workaround provides = mutter conflicts = mutter source = mutter-781835-workaround::git+https://gitlab.gnome.org/GNOME/mutter.git#commit=13a1624c1050c91cd4d8a298f7a10fafe56fe9e5 - source = 0001-wayland-output-Report-unscaled-size-even-in-logical-.patch - source = 216.patch sha256sums = SKIP - sha256sums = 842162bf8cec5d69fdb80c85fd152ddd3db6a9179d11d6f81d486f79814838c0 - sha256sums = ed4f3cf738a3cffdf8a6e1a352bf24d74078c3b26fb9262c5746e0d95b9df756 pkgname = mutter-781835-workaround diff --git a/0001-wayland-output-Report-unscaled-size-even-in-logical-.patch b/0001-wayland-output-Report-unscaled-size-even-in-logical-.patch deleted file mode 100644 index be86633bd2a2..000000000000 --- a/0001-wayland-output-Report-unscaled-size-even-in-logical-.patch +++ /dev/null @@ -1,147 +0,0 @@ -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/216.patch b/216.patch deleted file mode 100644 index ee92895446d8..000000000000 --- a/216.patch +++ /dev/null @@ -1,128 +0,0 @@ -From 6d8d73beeef3a618c553e89b0b3e532ec3654a30 Mon Sep 17 00:00:00 2001 -From: Daniel van Vugt <daniel.van.vugt@canonical.com> -Date: Mon, 23 Jul 2018 16:28:56 +0800 -Subject: [PATCH] cogl-winsys-glx: Fix frame notification race/leak - -If a second `set_{sync,complete}_pending` was queued before the idle -handler had flushed the first then one of them would be forgotten. -It would stay queued forever and never emitted as a notification. - -This could happen repeatedly causing a slow leak. But worse still, -`clutter-stage-cogl` would then have `pending_swaps` permanently stuck -above zero preventing the presentation timing logic from being used. - -The problem is that a boolean can only count to one, but in some cases -(triple buffering, whether intentional or accidental #334) we need it to -count to two. So just change booleans to integers and count properly. - -https://gitlab.gnome.org/GNOME/mutter/merge_requests/216 ---- - cogl/cogl/winsys/cogl-winsys-glx.c | 58 +++++++++++++++--------------- - 1 file changed, 29 insertions(+), 29 deletions(-) - -diff --git a/cogl/cogl/winsys/cogl-winsys-glx.c b/cogl/cogl/winsys/cogl-winsys-glx.c -index 2623d02c6..235cfe81f 100644 ---- a/cogl/cogl/winsys/cogl-winsys-glx.c -+++ b/cogl/cogl/winsys/cogl-winsys-glx.c -@@ -99,9 +99,9 @@ typedef struct _CoglOnscreenGLX - CoglOnscreenXlib _parent; - GLXDrawable glxwin; - uint32_t last_swap_vsync_counter; -- gboolean pending_sync_notify; -- gboolean pending_complete_notify; -- gboolean pending_resize_notify; -+ uint32_t pending_sync_notify; -+ uint32_t pending_complete_notify; -+ uint32_t pending_resize_notify; - - GThread *swap_wait_thread; - GQueue *swap_wait_queue; -@@ -347,35 +347,35 @@ flush_pending_notifications_cb (void *data, - { - CoglOnscreen *onscreen = COGL_ONSCREEN (framebuffer); - CoglOnscreenGLX *glx_onscreen = onscreen->winsys; -- gboolean pending_sync_notify = glx_onscreen->pending_sync_notify; -- gboolean pending_complete_notify = glx_onscreen->pending_complete_notify; - -- /* If swap_region is called then notifying the sync event could -- * potentially immediately queue a subsequent pending notify so -- * we need to clear the flag before invoking the callback */ -- glx_onscreen->pending_sync_notify = FALSE; -- glx_onscreen->pending_complete_notify = FALSE; -- -- if (pending_sync_notify) -+ while (glx_onscreen->pending_sync_notify > 0 || -+ glx_onscreen->pending_complete_notify > 0 || -+ glx_onscreen->pending_resize_notify > 0) - { -- CoglFrameInfo *info = g_queue_peek_head (&onscreen->pending_frame_infos); -- -- _cogl_onscreen_notify_frame_sync (onscreen, info); -- } -+ if (glx_onscreen->pending_sync_notify > 0) -+ { -+ CoglFrameInfo *info = -+ g_queue_peek_head (&onscreen->pending_frame_infos); - -- if (pending_complete_notify) -- { -- CoglFrameInfo *info = g_queue_pop_head (&onscreen->pending_frame_infos); -+ _cogl_onscreen_notify_frame_sync (onscreen, info); -+ glx_onscreen->pending_sync_notify--; -+ } - -- _cogl_onscreen_notify_complete (onscreen, info); -+ if (glx_onscreen->pending_complete_notify > 0) -+ { -+ CoglFrameInfo *info = -+ g_queue_pop_head (&onscreen->pending_frame_infos); - -- cogl_object_unref (info); -- } -+ _cogl_onscreen_notify_complete (onscreen, info); -+ cogl_object_unref (info); -+ glx_onscreen->pending_complete_notify--; -+ } - -- if (glx_onscreen->pending_resize_notify) -- { -- _cogl_onscreen_notify_resize (onscreen); -- glx_onscreen->pending_resize_notify = FALSE; -+ if (glx_onscreen->pending_resize_notify > 0) -+ { -+ _cogl_onscreen_notify_resize (onscreen); -+ glx_onscreen->pending_resize_notify--; -+ } - } - } - } -@@ -417,7 +417,7 @@ set_sync_pending (CoglOnscreen *onscreen) - NULL); - } - -- glx_onscreen->pending_sync_notify = TRUE; -+ glx_onscreen->pending_sync_notify++; - } - - static void -@@ -440,7 +440,7 @@ set_complete_pending (CoglOnscreen *onscreen) - NULL); - } - -- glx_onscreen->pending_complete_notify = TRUE; -+ glx_onscreen->pending_complete_notify++; - } - - static void -@@ -533,7 +533,7 @@ notify_resize (CoglContext *context, - NULL); - } - -- glx_onscreen->pending_resize_notify = TRUE; -+ glx_onscreen->pending_resize_notify++; - - if (!xlib_onscreen->is_foreign_xwin) - { --- -2.18.1 - @@ -22,12 +22,8 @@ provides=(mutter) conflicts=(mutter) groups=(gnome) _commit=13a1624c1050c91cd4d8a298f7a10fafe56fe9e5 # tags/3.32.2^5 -source=("$pkgname::git+https://gitlab.gnome.org/GNOME/mutter.git#commit=$_commit" - 0001-wayland-output-Report-unscaled-size-even-in-logical-.patch - 216.patch) -sha256sums=('SKIP' - '842162bf8cec5d69fdb80c85fd152ddd3db6a9179d11d6f81d486f79814838c0' - 'ed4f3cf738a3cffdf8a6e1a352bf24d74078c3b26fb9262c5746e0d95b9df756') +source=("$pkgname::git+https://gitlab.gnome.org/GNOME/mutter.git#commit=$_commit") +sha256sums=('SKIP') pkgver() { cd $pkgname @@ -99,9 +95,6 @@ prepare() { # ' # Commented multiline comment end, remove the # above if disabling the patches - - # https://bugzilla.mozilla.org/show_bug.cgi?id=1534089 - patch -Np1 -i ../0001-wayland-output-Report-unscaled-size-even-in-logical-.patch } build() { |