diff options
Diffstat (limited to 'src/mesa/drivers/dri')
| -rw-r--r-- | src/mesa/drivers/dri/common/dri_util.c | 31 | 
1 files changed, 17 insertions, 14 deletions
diff --git a/src/mesa/drivers/dri/common/dri_util.c b/src/mesa/drivers/dri/common/dri_util.c index 11c189a660..d2ffa5da64 100644 --- a/src/mesa/drivers/dri/common/dri_util.c +++ b/src/mesa/drivers/dri/common/dri_util.c @@ -153,19 +153,24 @@ static int driBindContext(__DRIcontext *pcp,  {      __DRIscreen *psp = NULL; -    /* Bind the drawable to the context */ +    /* +    ** Assume error checking is done properly in glXMakeCurrent before +    ** calling driUnbindContext. +    */ -    if (pcp) { -	psp = pcp->driScreenPriv; -	pcp->driDrawablePriv = pdp; -	pcp->driReadablePriv = prp; -	if (pdp) { -	    pdp->driContextPriv = pcp; -    	    dri_get_drawable(pdp); -	} -	if ( prp && pdp != prp ) { -    	    dri_get_drawable(prp); -	} +    if (!pcp) +	return GL_FALSE; + +    /* Bind the drawable to the context */ +    psp = pcp->driScreenPriv; +    pcp->driDrawablePriv = pdp; +    pcp->driReadablePriv = prp; +    if (pdp) { +	pdp->driContextPriv = pcp; +	dri_get_drawable(pdp); +    } +    if (prp && pdp != prp) { +	dri_get_drawable(prp);      }      /* @@ -173,7 +178,6 @@ static int driBindContext(__DRIcontext *pcp,      ** initialize the drawable information if has not been done before.      */ -    assert(psp);      if (!psp->dri2.enabled) {  	if (pdp && !pdp->pStamp) {  	    DRM_SPINLOCK(&psp->pSAREA->drawable_lock, psp->drawLockID); @@ -188,7 +192,6 @@ static int driBindContext(__DRIcontext *pcp,      }      /* Call device-specific MakeCurrent */ -      return (*psp->DriverAPI.MakeCurrent)(pcp, pdp, prp);  }  | 
