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