diff options
author | Yaakov Selkowitz <yselkowitz@users.sourceforge.net> | 2010-04-26 11:40:57 -0500 |
---|---|---|
committer | Yaakov Selkowitz <yselkowitz@users.sourceforge.net> | 2010-04-26 11:40:57 -0500 |
commit | be4b761f78e8c767915c15bbed3be23f0aec4db3 (patch) | |
tree | 96988d438d57dc98318bf2aa637897370ec43e97 /glx/glxext.c | |
parent | 4ae527cec2cd01a973351a8dec9816413522c963 (diff) | |
parent | b557571dbff3d9a615e03cad904d46b8af9153a0 (diff) |
Merge remote branch 'origin/master' into cygwincygwin
Diffstat (limited to 'glx/glxext.c')
-rw-r--r-- | glx/glxext.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/glx/glxext.c b/glx/glxext.c index 59bcfbed2..89e58b0b0 100644 --- a/glx/glxext.c +++ b/glx/glxext.c @@ -126,6 +126,17 @@ static Bool DrawableGone(__GLXdrawable *glxPriv, XID xid) { __GLXcontext *c; + /* If this drawable was created using glx 1.3 drawable + * constructors, we added it as a glx drawable resource under both + * its glx drawable ID and it X drawable ID. Remove the other + * resource now so we don't a callback for freed memory. */ + if (glxPriv->drawId != glxPriv->pDraw->id) { + if (xid == glxPriv->drawId) + FreeResourceByType(glxPriv->pDraw->id, __glXDrawableRes, TRUE); + else + FreeResourceByType(glxPriv->drawId, __glXDrawableRes, TRUE); + } + for (c = glxAllContexts; c; c = c->next) { if (c->isCurrent && (c->drawPriv == glxPriv || c->readPriv == glxPriv)) { int i; |