summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorNorbert Pfeiler2018-11-15 05:36:16 +0100
committerNorbert Pfeiler2018-11-15 05:37:10 +0100
commit10ea55396740cae0b41e3345f3126df7c8cd44da (patch)
tree255ad68abf8d86b1b048752a8a280fc22db9b200
parent8a8dc425ba1cff92a73a62aeb1e50b8279d94975 (diff)
downloadaur-10ea55396740cae0b41e3345f3126df7c8cd44da.tar.gz
3.30.2
-rw-r--r--.SRCINFO12
-rw-r--r--PKGBUILD15
-rw-r--r--fc02b040f3b750b0513f812813351c09795950f6.patch125
3 files changed, 142 insertions, 10 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 3a524bc60a56..1c16f9cd6a30 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,8 +1,8 @@
# Generated by mksrcinfo v8
-# Thu Oct 25 19:43:13 UTC 2018
+# Thu Nov 15 04:16:18 UTC 2018
pkgbase = mutter-catalyst
pkgdesc = A window manager for GNOME with patches for catalyst compatibility
- pkgver = 3.30.1
+ pkgver = 3.30.2
pkgrel = 1
url = https://gitlab.gnome.org/GNOME/mutter
arch = x86_64
@@ -26,14 +26,16 @@ pkgbase = mutter-catalyst
depends = libgudev
depends = libinput
depends = pipewire
- provides = mutter=3.30.1
+ provides = mutter=3.30.2
conflicts = mutter
- conflicts = gnome-shell>1:3.30.1+999
- source = git+https://gitlab.gnome.org/GNOME/mutter.git#commit=3faaa9ce147ba4c3bd9d90a20ac86ce9c9680c9b
+ 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
source = catalyst-workaround-v2.patch
source = catalyst mutter cogl.patch
sha256sums = SKIP
+ sha256sums = dffa2ca19281b9fa5a81bf80bd46a8eae78325c7e1f8b2a25c33945aa7cc0903
sha256sums = 5a35ca4794fc361219658d9fae24a3ca21a365f2cb1901702961ac869c759366
sha256sums = 2564846288ea55262d681d38f7e43609c63e94990df1cb0a6b99e16e2c073d14
sha256sums = 55079a9daddedc22d9fe4dcfe2e87607345dfafb370f8e7fb6a98c0acae3348a
diff --git a/PKGBUILD b/PKGBUILD
index 6ddcd40d87ca..1b0f2adda028 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -5,7 +5,7 @@
_realname=mutter
pkgname=$_realname-catalyst
-pkgver=3.30.1
+pkgver=3.30.2
pkgrel=1
pkgdesc="A window manager for GNOME with patches for catalyst compatibility"
url="https://gitlab.gnome.org/GNOME/mutter"
@@ -34,12 +34,14 @@ makedepends=('intltool'
conflicts=('mutter' "gnome-shell>1:${pkgver:0:6}+999")
provides=("mutter=${pkgver}")
groups=('gnome')
-_commit=3faaa9ce147ba4c3bd9d90a20ac86ce9c9680c9b # tags/3.30.1^0
+_commit=bcd6103c44ff74ebffd1737b8e0f3a952b83bd54 # tags/3.30.2^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")
sha256sums=('SKIP'
+ 'dffa2ca19281b9fa5a81bf80bd46a8eae78325c7e1f8b2a25c33945aa7cc0903'
'5a35ca4794fc361219658d9fae24a3ca21a365f2cb1901702961ac869c759366'
'2564846288ea55262d681d38f7e43609c63e94990df1cb0a6b99e16e2c073d14'
'55079a9daddedc22d9fe4dcfe2e87607345dfafb370f8e7fb6a98c0acae3348a')
@@ -52,16 +54,19 @@ pkgver() {
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
- patch -Np1 -i ../startup-notification.patch
+ git apply -3 ../startup-notification.patch
# https://bugzilla.gnome.org/show_bug.cgi?id=741581
echo "Skipping call to output_set_presentation_xrandr to fix issue with catalyst"
- patch -Np1 -i "${srcdir}/catalyst-workaround-v2.patch"
+ git apply -3 "${srcdir}/catalyst-workaround-v2.patch"
# https://bugzilla.gnome.org/show_bug.cgi?id=756306
echo "workaround compatibility shaders used in fw compat ctx in cogl"
- patch -Np1 -i "${srcdir}/catalyst mutter cogl.patch"
+ git apply -3 "${srcdir}/catalyst mutter cogl.patch"
echo "Patches applied"
NOCONFIGURE=1 ./autogen.sh
diff --git a/fc02b040f3b750b0513f812813351c09795950f6.patch b/fc02b040f3b750b0513f812813351c09795950f6.patch
new file mode 100644
index 000000000000..86a779561b89
--- /dev/null
+++ b/fc02b040f3b750b0513f812813351c09795950f6.patch
@@ -0,0 +1,125 @@
+From fc02b040f3b750b0513f812813351c09795950f6 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 was that CoglBool can only count to one pending notification,
+so we just change that to an integer and count properly.
+---
+ 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 74b0895d1..2c5ea409c 100644
+--- a/cogl/cogl/winsys/cogl-winsys-glx.c
++++ b/cogl/cogl/winsys/cogl-winsys-glx.c
+@@ -101,9 +101,9 @@ typedef struct _CoglOnscreenGLX
+ CoglOnscreenXlib _parent;
+ GLXDrawable glxwin;
+ uint32_t last_swap_vsync_counter;
+- CoglBool pending_sync_notify;
+- CoglBool pending_complete_notify;
+- CoglBool 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;
+@@ -349,35 +349,35 @@ flush_pending_notifications_cb (void *data,
+ {
+ CoglOnscreen *onscreen = COGL_ONSCREEN (framebuffer);
+ CoglOnscreenGLX *glx_onscreen = onscreen->winsys;
+- CoglBool pending_sync_notify = glx_onscreen->pending_sync_notify;
+- CoglBool 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--;
++ }
+ }
+ }
+ }
+@@ -419,7 +419,7 @@ set_sync_pending (CoglOnscreen *onscreen)
+ NULL);
+ }
+
+- glx_onscreen->pending_sync_notify = TRUE;
++ glx_onscreen->pending_sync_notify++;
+ }
+
+ static void
+@@ -442,7 +442,7 @@ set_complete_pending (CoglOnscreen *onscreen)
+ NULL);
+ }
+
+- glx_onscreen->pending_complete_notify = TRUE;
++ glx_onscreen->pending_complete_notify++;
+ }
+
+ static void
+@@ -535,7 +535,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
+