diff options
author | Térence Clastres | 2019-12-28 20:30:17 +0100 |
---|---|---|
committer | Térence Clastres | 2019-12-28 21:07:07 +0100 |
commit | d042f809aaff7bc0d8bfc8308eca21420faec009 (patch) | |
tree | af35dfa510dadf6f3bb904dab4bf342bb71b4f12 | |
parent | 9e00bdb2973671ae22201fd17bd493604ecfdab0 (diff) | |
download | aur-d042f809aaff7bc0d8bfc8308eca21420faec009.tar.gz |
Sync with [extra]
-rw-r--r-- | .SRCINFO | 11 | ||||
-rw-r--r-- | 0001-EGL-Include-EGL-eglmesaext.h.patch (renamed from fix-build.patch) | 37 | ||||
-rw-r--r-- | 0002-surface-actor-wayland-Do-not-send-frame-callbacks-if.patch (renamed from 918.patch) | 22 | ||||
-rw-r--r-- | 0003-xwayland-Do-not-queue-frame-callbacks-unconditionall.patch | 64 | ||||
-rw-r--r-- | PKGBUILD | 19 | ||||
-rw-r--r-- | mutter.install | 7 |
6 files changed, 127 insertions, 33 deletions
@@ -3,6 +3,7 @@ pkgbase = mutter-performance pkgver = 3.34.1+66+gc0e76186d pkgrel = 1 url = https://gitlab.gnome.org/GNOME/mutter + install = mutter.install arch = x86_64 groups = gnome license = GPL @@ -33,11 +34,13 @@ pkgbase = mutter-performance conflicts = mutter replaces = mutter-781835-workaround source = mutter-performance::git+https://gitlab.gnome.org/GNOME/mutter.git#commit=c0e76186da5b7baf7c8804c0ffa80232a5a6bf98 - source = 918.patch - source = fix-build.patch + source = 0001-EGL-Include-EGL-eglmesaext.h.patch + source = 0002-surface-actor-wayland-Do-not-send-frame-callbacks-if.patch + source = 0003-xwayland-Do-not-queue-frame-callbacks-unconditionall.patch sha256sums = SKIP - sha256sums = 775fbcd209a170b6ca13326367ef62b8d35acff16019553c40eb24f0684c3495 - sha256sums = 28aa24daed161f2566ca2b159beb43285184c533956b851a7eb318de741da935 + sha256sums = 8440403c1862187b648e3ddd20056666f1a9fea38d0511d7bdf4422ce70b4139 + sha256sums = 9f6881cd9fe2031b7119288972d3b921358f387b8cbfbd4c624a0dc33abce8e2 + sha256sums = 0ad4084834b6314873d2dc0a9c8bb3b30f0a6106fa44aac98a54129ec0fc0b2c pkgname = mutter-performance diff --git a/fix-build.patch b/0001-EGL-Include-EGL-eglmesaext.h.patch index 79d1e6dec87b..aebc51736292 100644 --- a/fix-build.patch +++ b/0001-EGL-Include-EGL-eglmesaext.h.patch @@ -1,13 +1,23 @@ +From f494725ec52f91c9f7cbb1c76cb52beb2a7e35d5 Mon Sep 17 00:00:00 2001 +From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com> +Date: Sun, 20 Oct 2019 12:04:31 +0200 +Subject: [PATCH 1/3] EGL: Include EGL/eglmesaext.h + +The eglext.h shipped by libglvnd does not include the Mesa extensions, +unlike the header shipped in Mesa. + +Fixes https://gitlab.gnome.org/GNOME/mutter/issues/876 +--- cogl/cogl/meson.build | 2 +- src/backends/meta-egl-ext.h | 1 + src/backends/meta-egl.c | 1 + src/backends/meta-egl.h | 1 + 4 files changed, 4 insertions(+), 1 deletion(-) -diff --git c/cogl/cogl/meson.build i/cogl/cogl/meson.build +diff --git a/cogl/cogl/meson.build b/cogl/cogl/meson.build index 1057ef955..9a642947d 100644 ---- c/cogl/cogl/meson.build -+++ i/cogl/cogl/meson.build +--- a/cogl/cogl/meson.build ++++ b/cogl/cogl/meson.build @@ -48,7 +48,7 @@ cogl_gl_header_h = configure_file( built_headers += [cogl_gl_header_h] @@ -17,10 +27,10 @@ index 1057ef955..9a642947d 100644 else cogl_egl_includes_string = '' endif -diff --git c/src/backends/meta-egl-ext.h i/src/backends/meta-egl-ext.h +diff --git a/src/backends/meta-egl-ext.h b/src/backends/meta-egl-ext.h index 8705e7d5b..db0b74f76 100644 ---- c/src/backends/meta-egl-ext.h -+++ i/src/backends/meta-egl-ext.h +--- a/src/backends/meta-egl-ext.h ++++ b/src/backends/meta-egl-ext.h @@ -29,6 +29,7 @@ #include <EGL/egl.h> @@ -29,10 +39,10 @@ index 8705e7d5b..db0b74f76 100644 /* * This is a little different to the tests shipped with EGL implementations, -diff --git c/src/backends/meta-egl.c i/src/backends/meta-egl.c +diff --git a/src/backends/meta-egl.c b/src/backends/meta-egl.c index 6554be935..fdeff4f77 100644 ---- c/src/backends/meta-egl.c -+++ i/src/backends/meta-egl.c +--- a/src/backends/meta-egl.c ++++ b/src/backends/meta-egl.c @@ -27,6 +27,7 @@ #include <EGL/egl.h> @@ -41,10 +51,10 @@ index 6554be935..fdeff4f77 100644 #include <gio/gio.h> #include <glib.h> #include <glib-object.h> -diff --git c/src/backends/meta-egl.h i/src/backends/meta-egl.h +diff --git a/src/backends/meta-egl.h b/src/backends/meta-egl.h index f2a816445..4591e7d85 100644 ---- c/src/backends/meta-egl.h -+++ i/src/backends/meta-egl.h +--- a/src/backends/meta-egl.h ++++ b/src/backends/meta-egl.h @@ -28,6 +28,7 @@ #include <EGL/egl.h> @@ -53,3 +63,6 @@ index f2a816445..4591e7d85 100644 #include <glib-object.h> #define META_EGL_ERROR meta_egl_error_quark () +-- +2.24.1 + diff --git a/918.patch b/0002-surface-actor-wayland-Do-not-send-frame-callbacks-if.patch index a59a483421bd..07c4f2e68b75 100644 --- a/918.patch +++ b/0002-surface-actor-wayland-Do-not-send-frame-callbacks-if.patch @@ -1,7 +1,7 @@ -From 1b26e414eccc33e26c464b282739315cb24f8f38 Mon Sep 17 00:00:00 2001 +From a2789eef9adbb8fb5e3ba1c278041996fa69eedc Mon Sep 17 00:00:00 2001 From: Robert Mader <robert.mader@posteo.de> Date: Mon, 4 Nov 2019 11:45:13 +0100 -Subject: [PATCH] surface-actor-wayland: Do not send frame callbacks if the +Subject: [PATCH 2/3] surface-actor-wayland: Do not send frame callbacks if the actor is obscured `meta_surface_actor_is_obscured` implies that the actor got successfully culled @@ -11,23 +11,23 @@ unnecessary client work. https://gitlab.gnome.org/GNOME/mutter/merge_requests/918 --- - src/compositor/meta-surface-actor-wayland.c | 3 +++ - 1 file changed, 3 insertions(+) + src/compositor/meta-surface-actor-wayland.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/compositor/meta-surface-actor-wayland.c b/src/compositor/meta-surface-actor-wayland.c -index 0b1c4ef01..e0335348f 100644 +index 1c933d554..e16f53ff2 100644 --- a/src/compositor/meta-surface-actor-wayland.c +++ b/src/compositor/meta-surface-actor-wayland.c -@@ -103,6 +103,9 @@ meta_surface_actor_wayland_paint (ClutterActor *actor) +@@ -115,7 +115,8 @@ meta_surface_actor_wayland_paint (ClutterActor *actor) { MetaSurfaceActorWayland *self = META_SURFACE_ACTOR_WAYLAND (actor); -+ if (meta_surface_actor_is_obscured (META_SURFACE_ACTOR (actor))) -+ return; -+ - if (self->surface) +- if (self->surface) ++ if (self->surface && ++ !meta_surface_actor_is_obscured (META_SURFACE_ACTOR (actor))) { MetaWaylandCompositor *compositor = self->surface->compositor; + -- -2.22.0 +2.24.1 diff --git a/0003-xwayland-Do-not-queue-frame-callbacks-unconditionall.patch b/0003-xwayland-Do-not-queue-frame-callbacks-unconditionall.patch new file mode 100644 index 000000000000..2ebb63990eba --- /dev/null +++ b/0003-xwayland-Do-not-queue-frame-callbacks-unconditionall.patch @@ -0,0 +1,64 @@ +From 722021dc1827bd75a7f4086f0ce55da6b0214a34 Mon Sep 17 00:00:00 2001 +From: Robert Mader <robert.mader@posteo.de> +Date: Wed, 4 Dec 2019 18:54:42 +0100 +Subject: [PATCH 3/3] xwayland: Do not queue frame callbacks unconditionally + +The removed comment is not longer true: XWayland schedules its VSYNC +from frame callbacks nowadays. Only sending callbacks when the surface +actor is unobscured makes XWayland throttle its VSYNC to 1/sec, +reducing repaints in many cases. + +Follow up of https://gitlab.gnome.org/GNOME/mutter/merge_requests/918 + +https://gitlab.gnome.org/GNOME/mutter/merge_requests/956 +--- + src/wayland/meta-xwayland.c | 26 -------------------------- + 1 file changed, 26 deletions(-) + +diff --git a/src/wayland/meta-xwayland.c b/src/wayland/meta-xwayland.c +index f1ad12aa3..17d7a4b20 100644 +--- a/src/wayland/meta-xwayland.c ++++ b/src/wayland/meta-xwayland.c +@@ -876,31 +876,6 @@ xwayland_surface_assigned (MetaWaylandSurfaceRole *surface_role) + surface_role_class->assigned (surface_role); + } + +-static void +-xwayland_surface_commit (MetaWaylandSurfaceRole *surface_role, +- MetaWaylandPendingState *pending) +-{ +- MetaWaylandSurface *surface = +- meta_wayland_surface_role_get_surface (surface_role); +- MetaWaylandSurfaceRoleClass *surface_role_class = +- META_WAYLAND_SURFACE_ROLE_CLASS (meta_wayland_surface_role_xwayland_parent_class); +- +- /* For Xwayland windows, throttling frames when the window isn't actually +- * drawn is less useful, because Xwayland still has to do the drawing sent +- * from the application - the throttling would only be of sending us damage +- * messages, so we simplify and send frame callbacks after the next paint of +- * the screen, whether the window was drawn or not. +- * +- * Currently it may take a few frames before we draw the window, for not +- * completely understood reasons, and in that case, not thottling frame +- * callbacks to drawing has the happy side effect that we avoid showing the +- * user the initial black frame from when the window is mapped empty. +- */ +- meta_wayland_surface_queue_pending_state_frame_callbacks (surface, pending); +- +- surface_role_class->commit (surface_role, pending); +-} +- + static MetaWaylandSurface * + xwayland_surface_get_toplevel (MetaWaylandSurfaceRole *surface_role) + { +@@ -965,7 +940,6 @@ meta_wayland_surface_role_xwayland_class_init (MetaWaylandSurfaceRoleXWaylandCla + object_class->finalize = xwayland_surface_finalize; + + surface_role_class->assigned = xwayland_surface_assigned; +- surface_role_class->commit = xwayland_surface_commit; + surface_role_class->get_toplevel = xwayland_surface_get_toplevel; + + actor_surface_class->get_geometry_scale = xwayland_surface_get_geometry_scale; +-- +2.24.1 + @@ -30,13 +30,16 @@ provides=(mutter mutter-781835-workaround) conflicts=(mutter) replaces=(mutter-781835-workaround) groups=(gnome) +install=mutter.install _commit=c0e76186da5b7baf7c8804c0ffa80232a5a6bf98 # gnome-3-34 source=("$pkgname::git+https://gitlab.gnome.org/GNOME/mutter.git#commit=$_commit" - 918.patch - fix-build.patch) + 0001-EGL-Include-EGL-eglmesaext.h.patch + 0002-surface-actor-wayland-Do-not-send-frame-callbacks-if.patch + 0003-xwayland-Do-not-queue-frame-callbacks-unconditionall.patch) sha256sums=('SKIP' - '775fbcd209a170b6ca13326367ef62b8d35acff16019553c40eb24f0684c3495' - '28aa24daed161f2566ca2b159beb43285184c533956b851a7eb318de741da935') + '8440403c1862187b648e3ddd20056666f1a9fea38d0511d7bdf4422ce70b4139' + '9f6881cd9fe2031b7119288972d3b921358f387b8cbfbd4c624a0dc33abce8e2' + '0ad4084834b6314873d2dc0a9c8bb3b30f0a6106fa44aac98a54129ec0fc0b2c') pkgver() { cd $pkgname @@ -159,10 +162,14 @@ prepare() { pick_mr '!719' 97140ab6346bd29208e99c9c9aab892c2eec0e52 'revert' pick_mr '!762' e9ba9dc2 'merge' + # fix build with libglvnd's EGL headers + git apply -3 ../0001-EGL-Include-EGL-eglmesaext.h.patch + # https://gitlab.gnome.org/GNOME/mutter/merge_requests/918 - git apply -3 ../918.patch + git apply -3 ../0002-surface-actor-wayland-Do-not-send-frame-callbacks-if.patch - patch -Np1 < ../fix-build.patch + # https://gitlab.gnome.org/GNOME/mutter/merge_requests/956 + git apply -3 ../0003-xwayland-Do-not-queue-frame-callbacks-unconditionall.patch } diff --git a/mutter.install b/mutter.install new file mode 100644 index 000000000000..e419c628d76e --- /dev/null +++ b/mutter.install @@ -0,0 +1,7 @@ +post_install() { + setcap cap_sys_nice+ep usr/bin/mutter +} + +post_upgrade() { + post_install +} |