summaryrefslogtreecommitdiff
path: root/src/glx/dri2_glx.c
diff options
context:
space:
mode:
authorMichel Dänzer <daenzer@vmware.com>2010-07-20 12:21:17 +0200
committerMichel Dänzer <michel@daenzer.net>2010-07-20 12:21:17 +0200
commitbd3d2724f51a44b7fc814a5bc43d8ddafa8e3cba (patch)
tree1dc48fcbf9010c2362c2d70c3d29956d242bc09a /src/glx/dri2_glx.c
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.
Diffstat (limited to 'src/glx/dri2_glx.c')
-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 4fbe9496b1..be8671d906 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);
}