diff options
author | Keith Packard <keithp@keithp.com> | 2014-09-04 08:36:07 -0700 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2014-09-11 18:19:41 -0700 |
commit | bf338efc678258d2d366dff2ed873752f98f0bfc (patch) | |
tree | d196a4d1b80965cd5b7c64d20607e1558eae9eb9 /glx | |
parent | 7a0c79c8c478bf22ee71c1ea35886a6f555ef2bb (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.c | 7 |
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); |