On Sun, Sep 14, 2014 at 17:17:33 -0700, Keith Packard wrote: > Julien Cristau <jcris...@debian.org> writes: > > > On Sat, Sep 13, 2014 at 16:43:08 +0200, Sjoerd Simons wrote: > > > >> Package: xserver-xorg-core > >> Version: 2:1.16.0-2+b1 > >> Severity: important > >> Tags: patch > >> > >> Both totem and cheese (3.13.X) crash in cogl due to receiving duplicate > >> GLX_BufferSwapComplete events. > >> > >> Uupstream gnome bug: https://bugzilla.gnome.org/show_bug.cgi?id=733282 > >> Xorg upstream commit: > >> http://cgit.freedesktop.org/xorg/xserver/commit/?id=bf338efc678258d2d366dff2ed873752f98f0bfc > >> > > As far as I can tell that patch is an ABI break, as > > present_complete_notify_proc is exported in the SDK. So I'm not sure I > > can pull that in to the 1.16 branch. Keith, any idea how to resolve > > that? > > We can just change the caller to not call except when needed as a patch > for 1.16. I almost did that on master, but decided to just make the > interface pass all of the arguments. > Right, that's even simpler...
From: Keith Packard <kei...@keithp.com> Date: Thu, 4 Sep 2014 08:36:07 -0700 Subject: [PATCH] glx/present: Only send GLX_BufferSwapComplete for PresentCompleteKindPixmap Present didn't provide the 'kind' argument to the present_complete_notify hook that GLX uses to construct GLX_BufferSwapComplete events, so GLX was reporting events for PresentCompleteKindMSC notifications, which resulted in duplicate GLX_BufferSwapComplete events and crashes in clutter. See the gnome bug: https://bugzilla.gnome.org/show_bug.cgi?id=733282 Signed-off-by: Keith Packard <kei...@keithp.com> Reviewed-by: Eric Anholt <e...@anholt.net> (cherry picked from commit bf338efc678258d2d366dff2ed873752f98f0bfc) [backport to 1.16: check 'kind' in the caller to avoid ABI change] Signed-off-by: Julien Cristau <jcris...@debian.org> --- present/present_event.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/present/present_event.c b/present/present_event.c index ff57eba..e9b8276 100644 --- a/present/present_event.c +++ b/present/present_event.c @@ -173,7 +173,7 @@ present_send_complete_notify(WindowPtr window, CARD8 kind, CARD8 mode, CARD32 se } } } - if (complete_notify) + if (complete_notify && kind == PresentCompleteKindPixmap) (*complete_notify)(window, mode, serial, ust, msc); } -- 2.1.0
signature.asc
Description: Digital signature