summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorNorbert Pfeiler2019-03-16 07:53:58 +0100
committerNorbert Pfeiler2019-03-16 07:54:55 +0100
commit55085449f6550515ce32043cd6513d8458b10d5a (patch)
tree9ac2adb63c4be145cb411e168ae21d279cc19291
parent10ea55396740cae0b41e3345f3126df7c8cd44da (diff)
downloadaur-55085449f6550515ce32043cd6513d8458b10d5a.tar.gz
3.32.0
-rw-r--r--.SRCINFO20
-rw-r--r--216.patch128
-rw-r--r--PKGBUILD57
3 files changed, 163 insertions, 42 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 1c16f9cd6a30..cf7e583cd1ba 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,17 +1,20 @@
# Generated by mksrcinfo v8
-# Thu Nov 15 04:16:18 UTC 2018
+# Sat Mar 16 06:54:19 UTC 2019
pkgbase = mutter-catalyst
pkgdesc = A window manager for GNOME with patches for catalyst compatibility
- pkgver = 3.30.2
+ pkgver = 3.32.0
pkgrel = 1
url = https://gitlab.gnome.org/GNOME/mutter
arch = x86_64
groups = gnome
license = GPL
+ checkdepends = xorg-server-xvfb
makedepends = intltool
makedepends = gobject-introspection
makedepends = git
makedepends = egl-wayland
+ makedepends = meson
+ makedepends = xorg-server
depends = dconf
depends = gobject-introspection-runtime
depends = gsettings-desktop-schemas
@@ -26,17 +29,16 @@ pkgbase = mutter-catalyst
depends = libgudev
depends = libinput
depends = pipewire
- provides = mutter=3.30.2
+ depends = xorg-server-xwayland
+ provides = mutter=3.32.0
conflicts = mutter
- conflicts = gnome-shell>1:3.30.2+999
- source = git+https://gitlab.gnome.org/GNOME/mutter.git#commit=bcd6103c44ff74ebffd1737b8e0f3a952b83bd54
- source = https://gitlab.gnome.org/vanvugt/mutter/commit/fc02b040f3b750b0513f812813351c09795950f6.patch
- source = startup-notification.patch
+ conflicts = gnome-shell>1:3.32.0+999
+ source = git+https://gitlab.gnome.org/GNOME/mutter.git#commit=efb1ee97308653a28ed4448b0c405e6faf2c4f40
+ source = 216.patch
source = catalyst-workaround-v2.patch
source = catalyst mutter cogl.patch
sha256sums = SKIP
- sha256sums = dffa2ca19281b9fa5a81bf80bd46a8eae78325c7e1f8b2a25c33945aa7cc0903
- sha256sums = 5a35ca4794fc361219658d9fae24a3ca21a365f2cb1901702961ac869c759366
+ sha256sums = ed4f3cf738a3cffdf8a6e1a352bf24d74078c3b26fb9262c5746e0d95b9df756
sha256sums = 2564846288ea55262d681d38f7e43609c63e94990df1cb0a6b99e16e2c073d14
sha256sums = 55079a9daddedc22d9fe4dcfe2e87607345dfafb370f8e7fb6a98c0acae3348a
diff --git a/216.patch b/216.patch
new file mode 100644
index 000000000000..ee92895446d8
--- /dev/null
+++ b/216.patch
@@ -0,0 +1,128 @@
+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
+
diff --git a/PKGBUILD b/PKGBUILD
index 1b0f2adda028..df818f246aa4 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -5,7 +5,7 @@
_realname=mutter
pkgname=$_realname-catalyst
-pkgver=3.30.2
+pkgver=3.32.0
pkgrel=1
pkgdesc="A window manager for GNOME with patches for catalyst compatibility"
url="https://gitlab.gnome.org/GNOME/mutter"
@@ -25,24 +25,26 @@ depends=('dconf'
'libgudev'
'libinput'
'pipewire'
+ 'xorg-server-xwayland'
)
makedepends=('intltool'
'gobject-introspection'
'git'
'egl-wayland'
+ 'meson'
+ 'xorg-server'
)
+checkdepends=('xorg-server-xvfb')
conflicts=('mutter' "gnome-shell>1:${pkgver:0:6}+999")
provides=("mutter=${pkgver}")
groups=('gnome')
-_commit=bcd6103c44ff74ebffd1737b8e0f3a952b83bd54 # tags/3.30.2^0
+_commit=efb1ee97308653a28ed4448b0c405e6faf2c4f40 # tags/3.32.0^0
source=("git+https://gitlab.gnome.org/GNOME/mutter.git#commit=$_commit"
- "https://gitlab.gnome.org/vanvugt/mutter/commit/fc02b040f3b750b0513f812813351c09795950f6.patch"
- "startup-notification.patch"
- "catalyst-workaround-v2.patch"
- "catalyst mutter cogl.patch")
+ 216.patch
+ "catalyst-workaround-v2.patch"
+ "catalyst mutter cogl.patch")
sha256sums=('SKIP'
- 'dffa2ca19281b9fa5a81bf80bd46a8eae78325c7e1f8b2a25c33945aa7cc0903'
- '5a35ca4794fc361219658d9fae24a3ca21a365f2cb1901702961ac869c759366'
+ 'ed4f3cf738a3cffdf8a6e1a352bf24d74078c3b26fb9262c5746e0d95b9df756'
'2564846288ea55262d681d38f7e43609c63e94990df1cb0a6b99e16e2c073d14'
'55079a9daddedc22d9fe4dcfe2e87607345dfafb370f8e7fb6a98c0acae3348a')
@@ -55,11 +57,7 @@ prepare() {
cd "$_realname"
# https://gitlab.gnome.org/GNOME/mutter/merge_requests/216
- git apply -3 ../fc02b040f3b750b0513f812813351c09795950f6.patch
-
- # https://bugs.archlinux.org/task/51940
- # As of 2018-05-08: Still needed, according to fmuellner
- git apply -3 ../startup-notification.patch
+ git apply -3 ../216.patch
# https://bugzilla.gnome.org/show_bug.cgi?id=741581
echo "Skipping call to output_set_presentation_xrandr to fix issue with catalyst"
@@ -68,31 +66,24 @@ prepare() {
echo "workaround compatibility shaders used in fw compat ctx in cogl"
git apply -3 "${srcdir}/catalyst mutter cogl.patch"
echo "Patches applied"
-
- NOCONFIGURE=1 ./autogen.sh
}
build() {
- cd "$_realname"
- ./configure --prefix=/usr \
- --sysconfdir=/etc \
- --localstatedir=/var \
- --libexecdir=/usr/lib \
- --disable-static \
- --disable-schemas-compile \
- --enable-compile-warnings=minimum \
- --enable-gtk-doc \
- --enable-egl-device \
- --enable-remote-desktop
+ arch-meson $_realname build \
+ -D egl_device=true \
+ -D wayland_eglstream=true \
+ -D installed_tests=false
+ ninja -C build
+}
- # https://bugzilla.gnome.org/show_bug.cgi?id=655517
- sed -e 's/ -shared / -Wl,-O1,--as-needed\0/g' \
- -i {.,cogl,clutter}/libtool
+check() (
+ mkdir -p -m 700 "${XDG_RUNTIME_DIR:=$PWD/runtime-dir}"
+ glib-compile-schemas "${GSETTINGS_SCHEMA_DIR:=$PWD/build/data}"
+ export XDG_RUNTIME_DIR GSETTINGS_SCHEMA_DIR
- make
-}
+ dbus-run-session xvfb-run -s '+iglx -noreset' meson test -C build
+)
package() {
- cd "$_realname"
- make DESTDIR="$pkgdir" install
+ DESTDIR="$pkgdir" meson install -C build
}