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;
|
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
|
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 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