r51837 - in /desktop/unstable/mutter/debian: changelog control control.in patches/git_flush_all_swap_notifies_on_idle.patch patches/series
jbicha-guest at users.alioth.debian.org
jbicha-guest at users.alioth.debian.org
Tue Dec 20 14:04:07 UTC 2016
Author: jbicha-guest
Date: Tue Dec 20 14:04:06 2016
New Revision: 51837
URL: http://svn.debian.org/wsvn/pkg-gnome/?sc=1&rev=51837
Log:
Add patch from 3.22 branch that fixes freezes with multiple monitors on Wayland
Added:
desktop/unstable/mutter/debian/patches/git_flush_all_swap_notifies_on_idle.patch
Modified:
desktop/unstable/mutter/debian/changelog
desktop/unstable/mutter/debian/control
desktop/unstable/mutter/debian/control.in
desktop/unstable/mutter/debian/patches/series
Modified: desktop/unstable/mutter/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/mutter/debian/changelog?rev=51837&op=diff
==============================================================================
--- desktop/unstable/mutter/debian/changelog [utf-8] (original)
+++ desktop/unstable/mutter/debian/changelog [utf-8] Tue Dec 20 14:04:06 2016
@@ -1,3 +1,11 @@
+mutter (3.22.2-3) UNRELEASED; urgency=medium
+
+ * Add git_flush_all_swap_notifies_on_idle.patch:
+ - Add patch from 3.22 branch that fixes freezes with multiple monitors
+ on Wayland
+
+ -- Jeremy Bicha <jbicha at ubuntu.com> Tue, 20 Dec 2016 08:59:06 -0500
+
mutter (3.22.2-2) unstable; urgency=critical
[ Raphaël Hertzog ]
Modified: desktop/unstable/mutter/debian/control
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/mutter/debian/control?rev=51837&op=diff
==============================================================================
--- desktop/unstable/mutter/debian/control [utf-8] (original)
+++ desktop/unstable/mutter/debian/control [utf-8] Tue Dec 20 14:04:06 2016
@@ -5,7 +5,8 @@
Source: mutter
Section: x11
Priority: optional
-Maintainer: Debian GNOME Maintainers <pkg-gnome-maintainers at lists.alioth.debian.org>
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss at lists.ubuntu.com>
+XSBC-Original-Maintainer: Debian GNOME Maintainers <pkg-gnome-maintainers at lists.alioth.debian.org>
Uploaders: Andreas Henriksson <andreas at fatal.se>, Michael Biebl <biebl at debian.org>, Sjoerd Simons <sjoerd at debian.org>
Build-Depends: debhelper (>= 10),
gnome-pkg-tools (>= 0.10),
Modified: desktop/unstable/mutter/debian/control.in
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/mutter/debian/control.in?rev=51837&op=diff
==============================================================================
--- desktop/unstable/mutter/debian/control.in [utf-8] (original)
+++ desktop/unstable/mutter/debian/control.in [utf-8] Tue Dec 20 14:04:06 2016
@@ -1,7 +1,8 @@
Source: mutter
Section: x11
Priority: optional
-Maintainer: Debian GNOME Maintainers <pkg-gnome-maintainers at lists.alioth.debian.org>
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss at lists.ubuntu.com>
+XSBC-Original-Maintainer: Debian GNOME Maintainers <pkg-gnome-maintainers at lists.alioth.debian.org>
Uploaders: @GNOME_TEAM@
Build-Depends: debhelper (>= 10),
gnome-pkg-tools (>= 0.10),
Added: desktop/unstable/mutter/debian/patches/git_flush_all_swap_notifies_on_idle.patch
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/mutter/debian/patches/git_flush_all_swap_notifies_on_idle.patch?rev=51837&op=file
==============================================================================
--- desktop/unstable/mutter/debian/patches/git_flush_all_swap_notifies_on_idle.patch (added)
+++ desktop/unstable/mutter/debian/patches/git_flush_all_swap_notifies_on_idle.patch [utf-8] Tue Dec 20 14:04:06 2016
@@ -0,0 +1,89 @@
+From 497a94fac7191d09f01b21541dddcb4d1dd6c69a Mon Sep 17 00:00:00 2001
+From: Rui Matos <tiagomatos at gmail.com>
+Date: Mon, 5 Dec 2016 19:18:24 +0100
+Subject: MetaRendererNative: Flush all pending swap notifies on idle
+
+We need to do swap notifications asynchronously from flip events since
+these might be processed during swap buffers if we are waiting for the
+previous frame's flip to continue with the current.
+
+This means that we might have more than one swap notification queued
+to be delivered when the idle handler runs. In that case we must
+deliver all notifications for which we've already seen a flip event.
+
+Failing to do so means that if a new frame, that only swaps buffers on
+such a swap notification backlogged Onscreen, is started, when later
+we get its flip event, we'd notify only an old frame which would hit
+this MetaStageNative's frame_cb() early exit:
+
+ if (global_frame_counter <= presented_frame_counter)
+ return;
+
+and we'd never finish the new frame and thus clutter's master clock
+would be waiting forever stuck.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=774557
+---
+ src/backends/native/meta-renderer-native.c | 22 ++++++++++++++++------
+ 1 file changed, 16 insertions(+), 6 deletions(-)
+
+diff --git a/src/backends/native/meta-renderer-native.c b/src/backends/native/meta-renderer-native.c
+index 67bd635..6d89153 100644
+--- a/src/backends/native/meta-renderer-native.c
++++ b/src/backends/native/meta-renderer-native.c
+@@ -73,6 +73,9 @@ typedef struct _MetaOnscreenNative
+
+ gboolean pending_set_crtc;
+
++ int64_t pending_queue_swap_notify_frame_count;
++ int64_t pending_swap_notify_frame_count;
++
+ MetaRendererView *view;
+ int pending_flips;
+ } MetaOnscreenNative;
+@@ -124,16 +127,19 @@ flush_pending_swap_notify (CoglFramebuffer *framebuffer)
+
+ if (onscreen_native->pending_swap_notify)
+ {
+- CoglFrameInfo *info =
+- g_queue_pop_head (&onscreen->pending_frame_infos);
++ CoglFrameInfo *info;
+
+- _cogl_onscreen_notify_frame_sync (onscreen, info);
+- _cogl_onscreen_notify_complete (onscreen, info);
++ while ((info = g_queue_peek_head (&onscreen->pending_frame_infos)) &&
++ info->global_frame_counter <= onscreen_native->pending_swap_notify_frame_count)
++ {
++ _cogl_onscreen_notify_frame_sync (onscreen, info);
++ _cogl_onscreen_notify_complete (onscreen, info);
++ cogl_object_unref (info);
++ g_queue_pop_head (&onscreen->pending_frame_infos);
++ }
+
+ onscreen_native->pending_swap_notify = FALSE;
+ cogl_object_unref (onscreen);
+-
+- cogl_object_unref (info);
+ }
+ }
+ }
+@@ -200,6 +206,9 @@ meta_onscreen_native_queue_swap_notify (CoglOnscreen *onscreen)
+ CoglRendererEGL *egl_renderer = cogl_renderer->winsys;
+ MetaRendererNative *renderer_native = egl_renderer->platform;
+
++ onscreen_native->pending_swap_notify_frame_count =
++ onscreen_native->pending_queue_swap_notify_frame_count;
++
+ /* We only want to notify that the swap is complete when the
+ * application calls cogl_context_dispatch so instead of
+ * immediately notifying we queue an idle callback */
+@@ -640,6 +649,7 @@ meta_onscreen_native_swap_buffers_with_damage (CoglOnscreen *onscreen,
+ onscreen_native->pending_set_crtc = FALSE;
+ }
+
++ onscreen_native->pending_queue_swap_notify_frame_count = renderer_native->frame_counter;
+ meta_onscreen_native_flip_crtcs (onscreen);
+ }
+
+
+
Modified: desktop/unstable/mutter/debian/patches/series
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/mutter/debian/patches/series?rev=51837&op=diff
==============================================================================
--- desktop/unstable/mutter/debian/patches/series [utf-8] (original)
+++ desktop/unstable/mutter/debian/patches/series [utf-8] Tue Dec 20 14:04:06 2016
@@ -1 +1,2 @@
git_dont_set_unavailable_scroll_methods.patch
+git_flush_all_swap_notifies_on_idle.patch
More information about the pkg-gnome-commits
mailing list