Revert "mi: drop obsolete miOverlayCollectUnderlayRegions()"
This reverts commit a860ce2c9f
.
Requested by Nvidia - their proprietary driver still needs it.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1843>
This commit is contained in:
parent
4cdc184c13
commit
ab95b569e1
|
@ -63,6 +63,7 @@ static DevPrivateKeyRec miOverlayScreenKeyRec;
|
|||
#define miOverlayScreenKey (&miOverlayScreenKeyRec)
|
||||
|
||||
static void MarkUnderlayWindow(WindowPtr);
|
||||
static Bool CollectUnderlayChildrenRegions(WindowPtr, RegionPtr);
|
||||
|
||||
#define MIOVERLAY_GET_SCREEN_PRIVATE(pScreen) ((miOverlayScreenPtr) \
|
||||
dixLookupPrivate(&(pScreen)->devPrivates, miOverlayScreenKey))
|
||||
|
@ -164,6 +165,63 @@ miOverlayComputeCompositeClip(GCPtr pGC, WindowPtr pWin)
|
|||
}
|
||||
}
|
||||
|
||||
Bool
|
||||
miOverlayCollectUnderlayRegions(WindowPtr pWin, RegionPtr *region)
|
||||
{
|
||||
miOverlayTreePtr pTree = MIOVERLAY_GET_WINDOW_TREE(pWin);
|
||||
|
||||
if (pTree) {
|
||||
*region = &pTree->borderClip;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
*region = RegionCreate(NullBox, 0);
|
||||
|
||||
CollectUnderlayChildrenRegions(pWin, *region);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static Bool
|
||||
CollectUnderlayChildrenRegions(WindowPtr pWin, RegionPtr pReg)
|
||||
{
|
||||
WindowPtr pChild;
|
||||
miOverlayTreePtr pTree;
|
||||
Bool hasUnderlay;
|
||||
|
||||
if (!(pChild = pWin->firstChild))
|
||||
return FALSE;
|
||||
|
||||
hasUnderlay = FALSE;
|
||||
|
||||
while (1) {
|
||||
if ((pTree = MIOVERLAY_GET_WINDOW_TREE(pChild))) {
|
||||
RegionAppend(pReg, &pTree->borderClip);
|
||||
hasUnderlay = TRUE;
|
||||
}
|
||||
else if (pChild->firstChild) {
|
||||
pChild = pChild->firstChild;
|
||||
continue;
|
||||
}
|
||||
|
||||
while (!pChild->nextSib && (pWin != pChild))
|
||||
pChild = pChild->parent;
|
||||
|
||||
if (pChild == pWin)
|
||||
break;
|
||||
|
||||
pChild = pChild->nextSib;
|
||||
}
|
||||
|
||||
if (hasUnderlay) {
|
||||
Bool overlap;
|
||||
|
||||
RegionValidate(pReg, &overlap);
|
||||
}
|
||||
|
||||
return hasUnderlay;
|
||||
}
|
||||
|
||||
static void
|
||||
MarkUnderlayWindow(WindowPtr pWin)
|
||||
{
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
typedef void (*miOverlayTransFunc) (ScreenPtr, int, BoxPtr);
|
||||
typedef Bool (*miOverlayInOverlayFunc) (WindowPtr);
|
||||
|
||||
extern _X_EXPORT Bool miOverlayCollectUnderlayRegions(WindowPtr, RegionPtr *);
|
||||
extern _X_EXPORT void miOverlayComputeCompositeClip(GCPtr, WindowPtr);
|
||||
extern _X_EXPORT Bool miOverlayCopyUnderlay(ScreenPtr);
|
||||
extern _X_EXPORT void miOverlaySetRootClip(ScreenPtr, Bool);
|
||||
|
|
Loading…
Reference in New Issue