[arch-commits] Commit in mutter/trunk (6 files)

Jan Steffens heftig at archlinux.org
Thu Dec 12 21:11:20 UTC 2019


    Date: Thursday, December 12, 2019 @ 21:11:20
  Author: heftig
Revision: 371325

3.34.2-1

Added:
  mutter/trunk/0001-EGL-Include-EGL-eglmesaext.h.patch
  mutter/trunk/0002-surface-actor-wayland-Do-not-send-frame-callbacks-if.patch
  mutter/trunk/0003-xwayland-Do-not-queue-frame-callbacks-unconditionall.patch
Modified:
  mutter/trunk/PKGBUILD
Deleted:
  mutter/trunk/918.patch
  mutter/trunk/fix-build.diff

-----------------------------------------------------------------+
 0001-EGL-Include-EGL-eglmesaext.h.patch                         |   68 ++++++++++
 0002-surface-actor-wayland-Do-not-send-frame-callbacks-if.patch |   33 ++++
 0003-xwayland-Do-not-queue-frame-callbacks-unconditionall.patch |   64 +++++++++
 918.patch                                                       |   33 ----
 PKGBUILD                                                        |   23 ++-
 fix-build.diff                                                  |   55 --------
 6 files changed, 179 insertions(+), 97 deletions(-)

Added: 0001-EGL-Include-EGL-eglmesaext.h.patch
===================================================================
--- 0001-EGL-Include-EGL-eglmesaext.h.patch	                        (rev 0)
+++ 0001-EGL-Include-EGL-eglmesaext.h.patch	2019-12-12 21:11:20 UTC (rev 371325)
@@ -0,0 +1,68 @@
+From f494725ec52f91c9f7cbb1c76cb52beb2a7e35d5 Mon Sep 17 00:00:00 2001
+From: "Jan Alexander Steffens (heftig)" <jan.steffens at 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 a/cogl/cogl/meson.build b/cogl/cogl/meson.build
+index 1057ef955..9a642947d 100644
+--- 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]
+ 
+ if have_egl
+-  cogl_egl_includes_string = '#include <EGL/egl.h>\n#include <EGL/eglext.h>'
++  cogl_egl_includes_string = '#include <EGL/egl.h>\n#include <EGL/eglext.h>\n#include <EGL/eglmesaext.h>'
+ else
+   cogl_egl_includes_string = ''
+ endif
+diff --git a/src/backends/meta-egl-ext.h b/src/backends/meta-egl-ext.h
+index 8705e7d5b..db0b74f76 100644
+--- a/src/backends/meta-egl-ext.h
++++ b/src/backends/meta-egl-ext.h
+@@ -29,6 +29,7 @@
+ 
+ #include <EGL/egl.h>
+ #include <EGL/eglext.h>
++#include <EGL/eglmesaext.h>
+ 
+ /*
+  * This is a little different to the tests shipped with EGL implementations,
+diff --git a/src/backends/meta-egl.c b/src/backends/meta-egl.c
+index 6554be935..fdeff4f77 100644
+--- a/src/backends/meta-egl.c
++++ b/src/backends/meta-egl.c
+@@ -27,6 +27,7 @@
+ 
+ #include <EGL/egl.h>
+ #include <EGL/eglext.h>
++#include <EGL/eglmesaext.h>
+ #include <gio/gio.h>
+ #include <glib.h>
+ #include <glib-object.h>
+diff --git a/src/backends/meta-egl.h b/src/backends/meta-egl.h
+index f2a816445..4591e7d85 100644
+--- a/src/backends/meta-egl.h
++++ b/src/backends/meta-egl.h
+@@ -28,6 +28,7 @@
+ 
+ #include <EGL/egl.h>
+ #include <EGL/eglext.h>
++#include <EGL/eglmesaext.h>
+ #include <glib-object.h>
+ 
+ #define META_EGL_ERROR meta_egl_error_quark ()
+-- 
+2.24.1
+

Added: 0002-surface-actor-wayland-Do-not-send-frame-callbacks-if.patch
===================================================================
--- 0002-surface-actor-wayland-Do-not-send-frame-callbacks-if.patch	                        (rev 0)
+++ 0002-surface-actor-wayland-Do-not-send-frame-callbacks-if.patch	2019-12-12 21:11:20 UTC (rev 371325)
@@ -0,0 +1,33 @@
+From a2789eef9adbb8fb5e3ba1c278041996fa69eedc Mon Sep 17 00:00:00 2001
+From: Robert Mader <robert.mader at posteo.de>
+Date: Mon, 4 Nov 2019 11:45:13 +0100
+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
+out and nothing of it will get painted. This includes that there are no clones,
+no effects etc. In this cases we don't want to send frame callbacks, thus avoiding
+unnecessary client work.
+
+https://gitlab.gnome.org/GNOME/mutter/merge_requests/918
+---
+ 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 1c933d554..e16f53ff2 100644
+--- a/src/compositor/meta-surface-actor-wayland.c
++++ b/src/compositor/meta-surface-actor-wayland.c
+@@ -115,7 +115,8 @@ meta_surface_actor_wayland_paint (ClutterActor *actor)
+ {
+   MetaSurfaceActorWayland *self = META_SURFACE_ACTOR_WAYLAND (actor);
+ 
+-  if (self->surface)
++  if (self->surface &&
++      !meta_surface_actor_is_obscured (META_SURFACE_ACTOR (actor)))
+     {
+       MetaWaylandCompositor *compositor = self->surface->compositor;
+ 
+-- 
+2.24.1
+

Added: 0003-xwayland-Do-not-queue-frame-callbacks-unconditionall.patch
===================================================================
--- 0003-xwayland-Do-not-queue-frame-callbacks-unconditionall.patch	                        (rev 0)
+++ 0003-xwayland-Do-not-queue-frame-callbacks-unconditionall.patch	2019-12-12 21:11:20 UTC (rev 371325)
@@ -0,0 +1,64 @@
+From 722021dc1827bd75a7f4086f0ce55da6b0214a34 Mon Sep 17 00:00:00 2001
+From: Robert Mader <robert.mader at 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
+

Deleted: 918.patch
===================================================================
--- 918.patch	2019-12-12 21:03:14 UTC (rev 371324)
+++ 918.patch	2019-12-12 21:11:20 UTC (rev 371325)
@@ -1,33 +0,0 @@
-From 1b26e414eccc33e26c464b282739315cb24f8f38 Mon Sep 17 00:00:00 2001
-From: Robert Mader <robert.mader at posteo.de>
-Date: Mon, 4 Nov 2019 11:45:13 +0100
-Subject: [PATCH] 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
-out and nothing of it will get painted. This includes that there are no clones,
-no effects etc. In this cases we don't want to send frame callbacks, thus avoiding
-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(+)
-
-diff --git a/src/compositor/meta-surface-actor-wayland.c b/src/compositor/meta-surface-actor-wayland.c
-index 0b1c4ef01..e0335348f 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)
- {
-   MetaSurfaceActorWayland *self = META_SURFACE_ACTOR_WAYLAND (actor);
- 
-+  if (meta_surface_actor_is_obscured (META_SURFACE_ACTOR (actor)))
-+    return;
-+
-   if (self->surface)
-     {
-       MetaWaylandCompositor *compositor = self->surface->compositor;
--- 
-2.22.0
-

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2019-12-12 21:03:14 UTC (rev 371324)
+++ PKGBUILD	2019-12-12 21:11:20 UTC (rev 371325)
@@ -3,7 +3,7 @@
 # Contributor: Michael Kanis <mkanis_at_gmx_dot_de>
 
 pkgname=mutter
-pkgver=3.34.1+65+g1b75d78c7
+pkgver=3.34.2
 pkgrel=1
 pkgdesc="A window manager for GNOME"
 url="https://gitlab.gnome.org/GNOME/mutter"
@@ -16,13 +16,15 @@
 checkdepends=(xorg-server-xvfb)
 groups=(gnome)
 install=mutter.install
-_commit=1b75d78c72bc188b3332b3d23b13c17f673e385f  # gnome-3-34
+_commit=8b087cfe5692f9d508b26790cce0b930a8b02c16  # tags/3.34.2^0
 source=("git+https://gitlab.gnome.org/GNOME/mutter.git#commit=$_commit"
-        918.patch
-        fix-build.diff)
+        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
@@ -32,11 +34,14 @@
 prepare() {
   cd $pkgname
 
+  # 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
 
-  # fix build with libglvnd's EGL headers
-  git apply -3 ../fix-build.diff
+  # https://gitlab.gnome.org/GNOME/mutter/merge_requests/956
+  git apply -3 ../0003-xwayland-Do-not-queue-frame-callbacks-unconditionall.patch
 }
 
 build() {

Deleted: fix-build.diff
===================================================================
--- fix-build.diff	2019-12-12 21:03:14 UTC (rev 371324)
+++ fix-build.diff	2019-12-12 21:11:20 UTC (rev 371325)
@@ -1,55 +0,0 @@
- 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
-index 1057ef955..9a642947d 100644
---- c/cogl/cogl/meson.build
-+++ i/cogl/cogl/meson.build
-@@ -48,7 +48,7 @@ cogl_gl_header_h = configure_file(
- built_headers += [cogl_gl_header_h]
- 
- if have_egl
--  cogl_egl_includes_string = '#include <EGL/egl.h>\n#include <EGL/eglext.h>'
-+  cogl_egl_includes_string = '#include <EGL/egl.h>\n#include <EGL/eglext.h>\n#include <EGL/eglmesaext.h>'
- else
-   cogl_egl_includes_string = ''
- endif
-diff --git c/src/backends/meta-egl-ext.h i/src/backends/meta-egl-ext.h
-index 8705e7d5b..db0b74f76 100644
---- c/src/backends/meta-egl-ext.h
-+++ i/src/backends/meta-egl-ext.h
-@@ -29,6 +29,7 @@
- 
- #include <EGL/egl.h>
- #include <EGL/eglext.h>
-+#include <EGL/eglmesaext.h>
- 
- /*
-  * 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
-index 6554be935..fdeff4f77 100644
---- c/src/backends/meta-egl.c
-+++ i/src/backends/meta-egl.c
-@@ -27,6 +27,7 @@
- 
- #include <EGL/egl.h>
- #include <EGL/eglext.h>
-+#include <EGL/eglmesaext.h>
- #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
-index f2a816445..4591e7d85 100644
---- c/src/backends/meta-egl.h
-+++ i/src/backends/meta-egl.h
-@@ -28,6 +28,7 @@
- 
- #include <EGL/egl.h>
- #include <EGL/eglext.h>
-+#include <EGL/eglmesaext.h>
- #include <glib-object.h>
- 
- #define META_EGL_ERROR meta_egl_error_quark ()



More information about the arch-commits mailing list