Mark Vojkovich
mvojk****@XFree*****
2003年 8月 14日 (木) 12:27:24 JST
I do not believe it is possible for XAACacheTile to return NULL, at least, not without some other fundamental bug somewhere else causing it. Workarounds for a XAACacheTile that returns NULL is definitely the wrong fix. Mark. On Wed, 13 Aug 2003, David Dawes wrote: > Could you get some more information from XAACacheTile() that might show > why pCache is NULL? The values of size and the pCachePriv fields that > get used might help. > > Thanks. > > David > > On Wed, Aug 13, 2003 at 04:52:13PM +0900, Chisato Yamauchi wrote: > > Hi, > > > > Our investigation has progressed, so we report it. > > > > After I sent patch:5752, we were able to prepare a complete patch. > >We attach the patch. The garbage problem is also solved! > > > > The investigation of this problem is done by Koike Kazuhiko. > >Please write his name FIRST in ChangeLog when applying the attached > >patch. > > > > Thanks. > > > >====================================================== > > After X-TT Project > > >*** xc/programs/Xserver/hw/xfree86/xaa/xaaPCache.c.orig 2000-09-26 08:56:14.000000000 +0900 > >--- xc/programs/Xserver/hw/xfree86/xaa/xaaPCache.c 2003-08-12 16:18:03.000000000 +0900 > >*************** > >*** 1472,1477 **** > >--- 1472,1482 ---- > > pCache = &cacheRoot[(*current)++]; > > if(*current >= max) *current = 0; > > > >+ if ( pCache==NULL ){ > >+ ErrorF("Something's wrong in XAACacheTile() [pCache==NULL]\n"); > >+ return pCache; > >+ } > >+ > > pCache->serialNumber = pPix->drawable.serialNumber; > > pCache->trans_color = pCache->bg = pCache->fg = -1; > > pCache->orig_w = w; pCache->orig_h = h; > >*** xc/programs/Xserver/hw/xfree86/xaa/xaaPaintWin.c.orig 2003-02-18 01:08:29.000000000 +0900 > >--- xc/programs/Xserver/hw/xfree86/xaa/xaaPaintWin.c 2003-08-12 18:47:13.000000000 +0900 > >*************** > >*** 164,172 **** > > > > XAACacheInfoPtr pCache = > > (*infoRec->CacheTile)(infoRec->pScrn, pPix); > >! (*infoRec->FillCacheBltRects)(infoRec->pScrn, GXcopy, ~0, > >! nBox, pBox, xorg, yorg, pCache); > >! return; > > } > > > > if(infoRec->FillImageWriteRects && > >--- 164,174 ---- > > > > XAACacheInfoPtr pCache = > > (*infoRec->CacheTile)(infoRec->pScrn, pPix); > >! if(pCache) { > >! (*infoRec->FillCacheBltRects)(infoRec->pScrn, GXcopy, ~0, > >! nBox, pBox, xorg, yorg, pCache); > >! return; > >! } > > } > > > > if(infoRec->FillImageWriteRects && > >