summaryrefslogtreecommitdiff
path: root/src/glx
diff options
context:
space:
mode:
authorMichel Dänzer <daenzer@vmware.com>2009-03-25 15:53:28 +0100
committerMichel Dänzer <daenzer@vmware.com>2009-03-25 15:55:20 +0100
commit7dff7029fa37d0fd52dbe137d359bd1c00826fce (patch)
treef05f785de1b473c52e7c40ac4104071f8ccda7bc /src/glx
parentf8fd9bc46bb0f3f37e1d278f87b6d8619c179a2e (diff)
downloadmesa-7dff7029fa37d0fd52dbe137d359bd1c00826fce.tar.gz
Revert "dri2: Avoid round-tripping on DRI2GetBuffers for the same set of buffers."
This scheme breaks when the display connection doesn't receive ConfigureNotify events. This caused reporoducible problems (cropped / misplaced output) when starting a 3D application in a guest operating system in VMware Workstation. This reverts commit dd1c68f15123a889a3ce9d2afe724e272d163e32. Conflicts: src/glx/x11/dri2_glx.c (cherry picked from commit 11da7e02aa3dba192aa3d95e9debec620133a41c)
Diffstat (limited to 'src/glx')
-rw-r--r--src/glx/x11/dri2_glx.c52
-rw-r--r--src/glx/x11/glxclient.h1
2 files changed, 0 insertions, 53 deletions
diff --git a/src/glx/x11/dri2_glx.c b/src/glx/x11/dri2_glx.c
index ed6633685e7..6a031d41851 100644
--- a/src/glx/x11/dri2_glx.c
+++ b/src/glx/x11/dri2_glx.c
@@ -60,9 +60,6 @@ struct __GLXDRIdisplayPrivateRec {
int driMajor;
int driMinor;
int driPatch;
-
- unsigned long configureSeqno;
- Bool (*oldConfigProc)(Display *, XEvent *, xEvent *);
};
struct __GLXDRIcontextPrivateRec {
@@ -76,7 +73,6 @@ struct __GLXDRIdrawablePrivateRec {
__DRIbuffer buffers[5];
int bufferCount;
int width, height;
- unsigned long configureSeqno;
int have_back;
int have_front;
int have_fake_front;
@@ -174,7 +170,6 @@ static __GLXDRIdrawable *dri2CreateDrawable(__GLXscreenConfigs *psc,
pdraw->base.drawable = drawable;
pdraw->base.psc = psc;
pdraw->bufferCount = 0;
- pdraw->configureSeqno = ~0;
DRI2CreateDrawable(psc->dpy, xDrawable);
@@ -277,30 +272,9 @@ dri2GetBuffers(__DRIdrawable *driDrawable,
int *out_count, void *loaderPrivate)
{
__GLXDRIdrawablePrivate *pdraw = loaderPrivate;
- __GLXdisplayPrivate *dpyPriv = __glXInitialize(pdraw->base.psc->dpy);
- __GLXDRIdisplayPrivate *pdp = (__GLXDRIdisplayPrivate *)dpyPriv->dri2Display;
DRI2Buffer *buffers;
int i;
- /**
- * Check if a ConfigureNotify has come in since we last asked for the
- * buffers associated with this drawable. If not, we can assume that they're
- * the same set at glViewport time, and save a synchronous round-trip to the
- * X Server.
- */
- if (pdraw->configureSeqno == pdp->configureSeqno &&
- count == pdraw->bufferCount) {
- for (i = 0; i < count; i++) {
- if (pdraw->buffers[i].attachment != attachments[i])
- break;
- }
- if (i == count) {
- *out_count = pdraw->bufferCount;
- return pdraw->buffers;
- }
- }
- pdraw->configureSeqno = pdp->configureSeqno;
-
buffers = DRI2GetBuffers(pdraw->base.psc->dpy, pdraw->base.xDrawable,
width, height, attachments, count, out_count);
if (buffers == NULL)
@@ -446,28 +420,6 @@ static void dri2DestroyDisplay(__GLXDRIdisplay *dpy)
Xfree(dpy);
}
-/**
- * Makes a note on receiving ConfigureNotify that we need to re-check the
- * DRI2 buffers, as window sizes may have resulted in reallocation.
- */
-static Bool dri2ConfigureNotifyProc(Display *dpy, XEvent *re, xEvent *event)
-{
- __GLXdisplayPrivate *dpyPriv = __glXInitialize(dpy);
- __GLXDRIdisplayPrivate *pdp;
- Bool ret;
-
- /* We should always be able to find our pdp, as it only gets torn down
- * when the Display is torn down.
- */
- pdp = (__GLXDRIdisplayPrivate *)dpyPriv->dri2Display;
-
- ret = pdp->oldConfigProc(dpy, re, event);
-
- pdp->configureSeqno = re->xconfigure.serial;
-
- return ret;
-}
-
/*
* Allocate, initialize and return a __DRIdisplayPrivate object.
* This is called from __glXInitialize() when we are given a new
@@ -490,11 +442,7 @@ _X_HIDDEN __GLXDRIdisplay *dri2CreateDisplay(Display *dpy)
return NULL;
}
- pdp->oldConfigProc = XESetWireToEvent(dpy, ConfigureNotify,
- dri2ConfigureNotifyProc);
-
pdp->driPatch = 0;
- pdp->configureSeqno = 0;
pdp->base.destroyDisplay = dri2DestroyDisplay;
pdp->base.createScreen = dri2CreateScreen;
diff --git a/src/glx/x11/glxclient.h b/src/glx/x11/glxclient.h
index d37b3ceb4f6..d03746d116f 100644
--- a/src/glx/x11/glxclient.h
+++ b/src/glx/x11/glxclient.h
@@ -604,7 +604,6 @@ extern void __glXSendLargeCommand(__GLXcontext *, const GLvoid *, GLint,
const GLvoid *, GLint);
/* Initialize the GLX extension for dpy */
-extern __GLXdisplayPrivate * __glXGetPrivateFromDisplay(Display *dpy);
extern __GLXdisplayPrivate *__glXInitialize(Display*);
/************************************************************************/