summaryrefslogtreecommitdiff
path: root/glx
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2014-09-04 08:36:07 -0700
committerKeith Packard <keithp@keithp.com>2014-09-11 18:19:41 -0700
commitbf338efc678258d2d366dff2ed873752f98f0bfc (patch)
treed196a4d1b80965cd5b7c64d20607e1558eae9eb9 /glx
parent7a0c79c8c478bf22ee71c1ea35886a6f555ef2bb (diff)
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 <keithp@keithp.com> Reviewed-by: Eric Anholt <eric@anholt.net>
Diffstat (limited to 'glx')
-rw-r--r--glx/glxcmds.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/glx/glxcmds.c b/glx/glxcmds.c
index 2fc3f4cc8..d11c66798 100644
--- a/glx/glxcmds.c
+++ b/glx/glxcmds.c
@@ -2508,13 +2508,16 @@ __glXsendSwapEvent(__GLXdrawable *drawable, int type, CARD64 ust,
#if PRESENT
static void
-__glXpresentCompleteNotify(WindowPtr window, CARD8 present_mode, CARD32 serial,
- uint64_t ust, uint64_t msc)
+__glXpresentCompleteNotify(WindowPtr window, CARD8 present_kind, CARD8 present_mode,
+ CARD32 serial, uint64_t ust, uint64_t msc)
{
__GLXdrawable *drawable;
int glx_type;
int rc;
+ if (present_kind != PresentCompleteKindPixmap)
+ return;
+
rc = dixLookupResourceByType((void **) &drawable, window->drawable.id,
__glXDrawableRes, serverClient, DixGetAttrAccess);