Revert "mi: drop obsolete miOverlayComputeCompositeClip()"
This reverts commit bfb69b7316
.
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
9d88cc5f11
commit
4cdc184c13
|
@ -108,6 +108,62 @@ miOverlayCopyUnderlay(ScreenPtr pScreen)
|
|||
return MIOVERLAY_GET_SCREEN_PRIVATE(pScreen)->copyUnderlay;
|
||||
}
|
||||
|
||||
void
|
||||
miOverlayComputeCompositeClip(GCPtr pGC, WindowPtr pWin)
|
||||
{
|
||||
miOverlayTreePtr pTree = MIOVERLAY_GET_WINDOW_TREE(pWin);
|
||||
RegionPtr pregWin;
|
||||
Bool freeTmpClip, freeCompClip;
|
||||
|
||||
if (!pTree) {
|
||||
miComputeCompositeClip(pGC, &pWin->drawable);
|
||||
return;
|
||||
}
|
||||
|
||||
if (pGC->subWindowMode == IncludeInferiors) {
|
||||
pregWin = RegionCreate(NullBox, 1);
|
||||
freeTmpClip = TRUE;
|
||||
if (pWin->parent || (screenIsSaved != SCREEN_SAVER_ON) ||
|
||||
!HasSaverWindow(pGC->pScreen)) {
|
||||
RegionIntersect(pregWin, &pTree->borderClip, &pWin->winSize);
|
||||
}
|
||||
}
|
||||
else {
|
||||
pregWin = &pTree->clipList;
|
||||
freeTmpClip = FALSE;
|
||||
}
|
||||
freeCompClip = pGC->freeCompClip;
|
||||
if (!pGC->clientClip) {
|
||||
if (freeCompClip)
|
||||
RegionDestroy(pGC->pCompositeClip);
|
||||
pGC->pCompositeClip = pregWin;
|
||||
pGC->freeCompClip = freeTmpClip;
|
||||
}
|
||||
else {
|
||||
RegionTranslate(pGC->clientClip,
|
||||
pWin->drawable.x + pGC->clipOrg.x,
|
||||
pWin->drawable.y + pGC->clipOrg.y);
|
||||
|
||||
if (freeCompClip) {
|
||||
RegionIntersect(pGC->pCompositeClip, pregWin, pGC->clientClip);
|
||||
if (freeTmpClip)
|
||||
RegionDestroy(pregWin);
|
||||
}
|
||||
else if (freeTmpClip) {
|
||||
RegionIntersect(pregWin, pregWin, pGC->clientClip);
|
||||
pGC->pCompositeClip = pregWin;
|
||||
}
|
||||
else {
|
||||
pGC->pCompositeClip = RegionCreate(NullBox, 0);
|
||||
RegionIntersect(pGC->pCompositeClip, pregWin, pGC->clientClip);
|
||||
}
|
||||
pGC->freeCompClip = TRUE;
|
||||
RegionTranslate(pGC->clientClip,
|
||||
-(pWin->drawable.x + pGC->clipOrg.x),
|
||||
-(pWin->drawable.y + pGC->clipOrg.y));
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
MarkUnderlayWindow(WindowPtr pWin)
|
||||
{
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
typedef void (*miOverlayTransFunc) (ScreenPtr, int, BoxPtr);
|
||||
typedef Bool (*miOverlayInOverlayFunc) (WindowPtr);
|
||||
|
||||
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