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)
|
#define miOverlayScreenKey (&miOverlayScreenKeyRec)
|
||||||
|
|
||||||
static void MarkUnderlayWindow(WindowPtr);
|
static void MarkUnderlayWindow(WindowPtr);
|
||||||
|
static Bool CollectUnderlayChildrenRegions(WindowPtr, RegionPtr);
|
||||||
|
|
||||||
#define MIOVERLAY_GET_SCREEN_PRIVATE(pScreen) ((miOverlayScreenPtr) \
|
#define MIOVERLAY_GET_SCREEN_PRIVATE(pScreen) ((miOverlayScreenPtr) \
|
||||||
dixLookupPrivate(&(pScreen)->devPrivates, miOverlayScreenKey))
|
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
|
static void
|
||||||
MarkUnderlayWindow(WindowPtr pWin)
|
MarkUnderlayWindow(WindowPtr pWin)
|
||||||
{
|
{
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
typedef void (*miOverlayTransFunc) (ScreenPtr, int, BoxPtr);
|
typedef void (*miOverlayTransFunc) (ScreenPtr, int, BoxPtr);
|
||||||
typedef Bool (*miOverlayInOverlayFunc) (WindowPtr);
|
typedef Bool (*miOverlayInOverlayFunc) (WindowPtr);
|
||||||
|
|
||||||
|
extern _X_EXPORT Bool miOverlayCollectUnderlayRegions(WindowPtr, RegionPtr *);
|
||||||
extern _X_EXPORT void miOverlayComputeCompositeClip(GCPtr, WindowPtr);
|
extern _X_EXPORT void miOverlayComputeCompositeClip(GCPtr, WindowPtr);
|
||||||
extern _X_EXPORT Bool miOverlayCopyUnderlay(ScreenPtr);
|
extern _X_EXPORT Bool miOverlayCopyUnderlay(ScreenPtr);
|
||||||
extern _X_EXPORT void miOverlaySetRootClip(ScreenPtr, Bool);
|
extern _X_EXPORT void miOverlaySetRootClip(ScreenPtr, Bool);
|
||||||
|
|
Loading…
Reference in New Issue