glx: Don't destroy context with XID 0
We use XID 0 to indicate the context has already been destroyed, but it's currently bound.
This commit is contained in:
parent
6739d52fdc
commit
d77bb8e059
|
@ -119,6 +119,7 @@ dri2_destroy_context(__GLXcontext *context)
|
|||
struct dri2_context *pcp = (struct dri2_context *) context;
|
||||
struct dri2_screen *psc = (struct dri2_screen *) context->psc;
|
||||
|
||||
if (context->xid)
|
||||
glx_send_destroy_context(psc->base.dpy, context->xid);
|
||||
|
||||
if (context->extensions)
|
||||
|
|
|
@ -505,6 +505,7 @@ dri_destroy_context(__GLXcontext * context)
|
|||
struct dri_context *pcp = (struct dri_context *) context;
|
||||
struct dri_screen *psc = (struct dri_screen *) context->psc;
|
||||
|
||||
if (context->xid)
|
||||
glx_send_destroy_context(psc->base.dpy, context->xid);
|
||||
|
||||
if (context->extensions)
|
||||
|
|
|
@ -245,6 +245,7 @@ drisw_destroy_context(__GLXcontext *context)
|
|||
struct drisw_context *pcp = (struct drisw_context *) context;
|
||||
struct drisw_screen *psc = (struct drisw_screen *) context->psc;
|
||||
|
||||
if (context->xid)
|
||||
glx_send_destroy_context(psc->base.dpy, context->xid);
|
||||
|
||||
if (context->extensions)
|
||||
|
|
|
@ -584,7 +584,7 @@ glx_send_destroy_context(Display *dpy, XID xid)
|
|||
static void
|
||||
indirect_destroy_context(__GLXcontext *gc)
|
||||
{
|
||||
if (!gc->imported)
|
||||
if (!gc->imported && gc->xid)
|
||||
glx_send_destroy_context(gc->psc->dpy, gc->xid);
|
||||
|
||||
__glXFreeVertexArrayState(gc);
|
||||
|
@ -619,6 +619,8 @@ DestroyContext(Display * dpy, GLXContext gc)
|
|||
* Note that we set gc->xid = None above. In MakeContextCurrent()
|
||||
* we check for that and delete the context there.
|
||||
*/
|
||||
if (!gc->imported)
|
||||
glx_send_destroy_context(dpy, gc->xid);
|
||||
gc->xid = None;
|
||||
__glXUnlock();
|
||||
return;
|
||||
|
|
Loading…
Reference in New Issue