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) {
|
if(pDRIDrawablePriv) {
|
||||||
ScreenPtr pScreen = pWin->drawable.pScreen;
|
ScreenPtr pScreen = pWin->drawable.pScreen;
|
||||||
DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(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_STOPWALKING;
|
||||||
}
|
}
|
||||||
return WT_WALKCHILDREN;
|
return WT_WALKCHILDREN;
|
||||||
|
@ -1885,6 +1889,7 @@ DRICopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc)
|
||||||
RegionRec reg;
|
RegionRec reg;
|
||||||
|
|
||||||
REGION_NULL(pScreen, ®);
|
REGION_NULL(pScreen, ®);
|
||||||
|
pDRIPriv->nrWalked = 0;
|
||||||
TraverseTree(pWin, DRITreeTraversal, (pointer)(®));
|
TraverseTree(pWin, DRITreeTraversal, (pointer)(®));
|
||||||
|
|
||||||
if(REGION_NOTEMPTY(pScreen, ®)) {
|
if(REGION_NOTEMPTY(pScreen, ®)) {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user