diff options
author | Norbert Pfeiler | 2018-11-15 05:36:16 +0100 |
---|---|---|
committer | Norbert Pfeiler | 2018-11-15 05:37:10 +0100 |
commit | 10ea55396740cae0b41e3345f3126df7c8cd44da (patch) | |
tree | 255ad68abf8d86b1b048752a8a280fc22db9b200 | |
parent | 8a8dc425ba1cff92a73a62aeb1e50b8279d94975 (diff) | |
download | aur-10ea55396740cae0b41e3345f3126df7c8cd44da.tar.gz |
3.30.2
-rw-r--r-- | .SRCINFO | 12 | ||||
-rw-r--r-- | PKGBUILD | 15 | ||||
-rw-r--r-- | fc02b040f3b750b0513f812813351c09795950f6.patch | 125 |
3 files changed, 142 insertions, 10 deletions
@@ -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 @@ -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 + |