DRITreeTraversal: Stop walking tree when we've seen all DRI windows.
This commit is contained in:
parent
0fb44c6f9a
commit
5d896e43fd
|
@ -1863,11 +1863,15 @@ DRITreeTraversal(WindowPtr pWin, pointer data)
|
|||
if(pDRIDrawablePriv) {
|
||||
ScreenPtr pScreen = pWin->drawable.pScreen;
|
||||
DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen);
|
||||
RegionPtr reg = (RegionPtr)data;
|
||||
|
||||
REGION_UNION(pScreen, reg, reg, &(pWin->clipList));
|
||||
if(REGION_NUM_RECTS(&(pWin->clipList)) > 0) {
|
||||
RegionPtr reg = (RegionPtr)data;
|
||||
|
||||
if(pDRIPriv->nrWindows == 1)
|
||||
REGION_UNION(pScreen, reg, reg, &(pWin->clipList));
|
||||
pDRIPriv->nrWalked++;
|
||||
}
|
||||
|
||||
if(pDRIPriv->nrWindows == pDRIPriv->nrWalked)
|
||||
return WT_STOPWALKING;
|
||||
}
|
||||
return WT_WALKCHILDREN;
|
||||
|
@ -1885,6 +1889,7 @@ DRICopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc)
|
|||
RegionRec reg;
|
||||
|
||||
REGION_NULL(pScreen, ®);
|
||||
pDRIPriv->nrWalked = 0;
|
||||
TraverseTree(pWin, DRITreeTraversal, (pointer)(®));
|
||||
|
||||
if(REGION_NOTEMPTY(pScreen, ®)) {
|
||||
|
|
Loading…
Reference in New Issue
Block a user