mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-02 12:18:09 +02:00
Track the currently bound read drawable and make sure its info is up
to date.
This commit is contained in:
parent
8c5ae80916
commit
7b1ff32607
2 changed files with 15 additions and 2 deletions
|
|
@ -323,6 +323,7 @@ static GLboolean DoBindContext(__DRInativeDisplay *dpy,
|
|||
|
||||
/* Bind the drawable to the context */
|
||||
pcp->driDrawablePriv = pdp;
|
||||
pcp->driReadablePriv = prp;
|
||||
pdp->driContextPriv = pcp;
|
||||
pdp->refcount++;
|
||||
if ( pdp != prp ) {
|
||||
|
|
@ -339,6 +340,12 @@ static GLboolean DoBindContext(__DRInativeDisplay *dpy,
|
|||
DRM_SPINUNLOCK(&psp->pSAREA->drawable_lock, psp->drawLockID);
|
||||
}
|
||||
|
||||
if ((pdp != prp) && (!pdp->pStamp || *pdp->pStamp != pdp->lastStamp)) {
|
||||
DRM_SPINLOCK(&psp->pSAREA->drawable_lock, psp->drawLockID);
|
||||
__driUtilUpdateDrawableInfo(prp);
|
||||
DRM_SPINUNLOCK(&psp->pSAREA->drawable_lock, psp->drawLockID);
|
||||
}
|
||||
|
||||
/* Call device-specific MakeCurrent */
|
||||
(*psp->DriverAPI.MakeCurrent)(pcp, pdp, prp);
|
||||
|
||||
|
|
@ -402,7 +409,8 @@ __driUtilUpdateDrawableInfo(__DRIdrawablePrivate *pdp)
|
|||
__DRIscreenPrivate *psp;
|
||||
__DRIcontextPrivate *pcp = pdp->driContextPriv;
|
||||
|
||||
if (!pcp || (pdp != pcp->driDrawablePriv)) {
|
||||
if (!pcp
|
||||
|| ((pdp != pcp->driDrawablePriv) && (pdp != pcp->driReadablePriv))) {
|
||||
/* ERROR!!! */
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -355,10 +355,15 @@ struct __DRIcontextPrivateRec {
|
|||
__DRInativeDisplay *display;
|
||||
|
||||
/**
|
||||
* Pointer to drawable currently bound to this context.
|
||||
* Pointer to drawable currently bound to this context for drawing.
|
||||
*/
|
||||
__DRIdrawablePrivate *driDrawablePriv;
|
||||
|
||||
/**
|
||||
* Pointer to drawable currently bound to this context for reading.
|
||||
*/
|
||||
__DRIdrawablePrivate *driReadablePriv;
|
||||
|
||||
/**
|
||||
* Pointer to screen on which this context was created.
|
||||
*/
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue