summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichel Dänzer <[email protected]>2010-07-20 12:21:17 +0200
committerMichel Dänzer <[email protected]>2010-07-20 12:21:17 +0200
commitbd3d2724f51a44b7fc814a5bc43d8ddafa8e3cba (patch)
tree1dc48fcbf9010c2362c2d70c3d29956d242bc09a
parentbdde9d2fcead2e49985f4cd1c73ad4aae5b2878f (diff)
glx/dri2: Fix dri2CopySubBuffer() again.
Only refresh the fake front buffer if there is one, and only destroy the region once. Fixes X11 protocol errors reported by 'mcgreg' on IRC.
-rw-r--r--src/glx/dri2_glx.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/glx/dri2_glx.c b/src/glx/dri2_glx.c
index 4fbe9496b11..be8671d9069 100644
--- a/src/glx/dri2_glx.c
+++ b/src/glx/dri2_glx.c
@@ -352,13 +352,14 @@ dri2CopySubBuffer(__GLXDRIdrawable *pdraw, int x, int y, int width, int height)
region = XFixesCreateRegion(psc->base.dpy, &xrect, 1);
DRI2CopyRegion(psc->base.dpy, pdraw->xDrawable, region,
DRI2BufferFrontLeft, DRI2BufferBackLeft);
- XFixesDestroyRegion(psc->base.dpy, region);
/* Refresh the fake front (if present) after we just damaged the real
* front.
*/
- DRI2CopyRegion(psc->base.dpy, pdraw->xDrawable, region,
- DRI2BufferFakeFrontLeft, DRI2BufferFrontLeft);
+ if (priv->have_fake_front)
+ DRI2CopyRegion(psc->base.dpy, pdraw->xDrawable, region,
+ DRI2BufferFakeFrontLeft, DRI2BufferFrontLeft);
+
XFixesDestroyRegion(psc->base.dpy, region);
}