diff options
author | ldelgass <ldelgass> | 2003-02-16 02:02:11 +0000 |
---|---|---|
committer | ldelgass <ldelgass> | 2003-02-16 02:02:11 +0000 |
commit | a71da4872e22319beb93be93ac7d0038add69258 (patch) | |
tree | 5e1786defaac909f143c4c88af2f3348ea6f83fb | |
parent | f287b43cdeb53a25ca56e5e8b7a2cb478ac749ce (diff) |
Sync with XFree86 cvs (drawable fix, pBackClipRects leak fix)
-rw-r--r-- | xc/lib/GL/dri/dri_util.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/xc/lib/GL/dri/dri_util.c b/xc/lib/GL/dri/dri_util.c index de2c2745e..3152dd5aa 100644 --- a/xc/lib/GL/dri/dri_util.c +++ b/xc/lib/GL/dri/dri_util.c @@ -609,7 +609,8 @@ __driUtilUpdateDrawableInfo(__DRIdrawablePrivate *pdp) DRM_SPINUNLOCK(&psp->pSAREA->drawable_lock, psp->drawLockID); - if (!XF86DRIGetDrawableInfo(pdp->display, pdp->screen, pdp->draw, + if (!__driFindDrawable(psp->drawHash, pdp->draw) || + !XF86DRIGetDrawableInfo(pdp->display, pdp->screen, pdp->draw, &pdp->index, &pdp->lastStamp, &pdp->x, &pdp->y, &pdp->w, &pdp->h, &pdp->numClipRects, &pdp->pClipRects, @@ -625,7 +626,7 @@ __driUtilUpdateDrawableInfo(__DRIdrawablePrivate *pdp) pdp->numClipRects = 0; pdp->pClipRects = NULL; pdp->numBackClipRects = 0; - pdp->pBackClipRects = 0; + pdp->pBackClipRects = NULL; } else pdp->pStamp = &(psp->pSAREA->drawableTable[pdp->index].stamp); @@ -745,8 +746,14 @@ static void driDestroyDrawable(Display *dpy, void *drawablePrivate) (*psp->DriverAPI.DestroyBuffer)(pdp); if (__driWindowExists(dpy, pdp->draw)) (void)XF86DRIDestroyDrawable(dpy, scrn, pdp->draw); - if (pdp->pClipRects) + if (pdp->pClipRects) { Xfree(pdp->pClipRects); + pdp->pClipRects = NULL; + } + if (pdp->pBackClipRects) { + Xfree(pdp->pBackClipRects); + pdp->pBackClipRects = NULL; + } Xfree(pdp); } } |