Merge remote-tracking branch 'airlied/pwin-cleanup'
This commit is contained in:
commit
a095a6d4e8
103
dix/window.c
103
dix/window.c
|
@ -116,6 +116,7 @@ Equipment Corporation.
|
||||||
#include "dixstruct.h"
|
#include "dixstruct.h"
|
||||||
#include "gcstruct.h"
|
#include "gcstruct.h"
|
||||||
#include "servermd.h"
|
#include "servermd.h"
|
||||||
|
#include "mivalidate.h"
|
||||||
#ifdef PANORAMIX
|
#ifdef PANORAMIX
|
||||||
#include "panoramiX.h"
|
#include "panoramiX.h"
|
||||||
#include "panoramiXsrv.h"
|
#include "panoramiXsrv.h"
|
||||||
|
@ -3684,3 +3685,105 @@ WindowParentHasDeviceCursor(WindowPtr pWin,
|
||||||
}
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SetRootClip --
|
||||||
|
* Enable or disable rendering to the screen by
|
||||||
|
* setting the root clip list and revalidating
|
||||||
|
* all of the windows
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
SetRootClip(ScreenPtr pScreen, Bool enable)
|
||||||
|
{
|
||||||
|
WindowPtr pWin = pScreen->root;
|
||||||
|
WindowPtr pChild;
|
||||||
|
Bool WasViewable;
|
||||||
|
Bool anyMarked = FALSE;
|
||||||
|
WindowPtr pLayerWin;
|
||||||
|
BoxRec box;
|
||||||
|
|
||||||
|
if (!pWin)
|
||||||
|
return;
|
||||||
|
WasViewable = (Bool)(pWin->viewable);
|
||||||
|
if (WasViewable)
|
||||||
|
{
|
||||||
|
for (pChild = pWin->firstChild; pChild; pChild = pChild->nextSib)
|
||||||
|
{
|
||||||
|
(void) (*pScreen->MarkOverlappedWindows)(pChild,
|
||||||
|
pChild,
|
||||||
|
&pLayerWin);
|
||||||
|
}
|
||||||
|
(*pScreen->MarkWindow) (pWin);
|
||||||
|
anyMarked = TRUE;
|
||||||
|
if (pWin->valdata)
|
||||||
|
{
|
||||||
|
if (HasBorder (pWin))
|
||||||
|
{
|
||||||
|
RegionPtr borderVisible;
|
||||||
|
|
||||||
|
borderVisible = RegionCreate(NullBox, 1);
|
||||||
|
RegionSubtract(borderVisible,
|
||||||
|
&pWin->borderClip, &pWin->winSize);
|
||||||
|
pWin->valdata->before.borderVisible = borderVisible;
|
||||||
|
}
|
||||||
|
pWin->valdata->before.resized = TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Use REGION_BREAK to avoid optimizations in ValidateTree
|
||||||
|
* that assume the root borderClip can't change well, normally
|
||||||
|
* it doesn't...)
|
||||||
|
*/
|
||||||
|
if (enable)
|
||||||
|
{
|
||||||
|
box.x1 = 0;
|
||||||
|
box.y1 = 0;
|
||||||
|
box.x2 = pScreen->width;
|
||||||
|
box.y2 = pScreen->height;
|
||||||
|
RegionInit(&pWin->winSize, &box, 1);
|
||||||
|
RegionInit(&pWin->borderSize, &box, 1);
|
||||||
|
if (WasViewable)
|
||||||
|
RegionReset(&pWin->borderClip, &box);
|
||||||
|
pWin->drawable.width = pScreen->width;
|
||||||
|
pWin->drawable.height = pScreen->height;
|
||||||
|
RegionBreak(&pWin->clipList);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
RegionEmpty(&pWin->borderClip);
|
||||||
|
RegionBreak(&pWin->clipList);
|
||||||
|
}
|
||||||
|
|
||||||
|
ResizeChildrenWinSize (pWin, 0, 0, 0, 0);
|
||||||
|
|
||||||
|
if (WasViewable)
|
||||||
|
{
|
||||||
|
if (pWin->firstChild)
|
||||||
|
{
|
||||||
|
anyMarked |= (*pScreen->MarkOverlappedWindows)(pWin->firstChild,
|
||||||
|
pWin->firstChild,
|
||||||
|
(WindowPtr *)NULL);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
(*pScreen->MarkWindow) (pWin);
|
||||||
|
anyMarked = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (anyMarked)
|
||||||
|
(*pScreen->ValidateTree)(pWin, NullWindow, VTOther);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (WasViewable)
|
||||||
|
{
|
||||||
|
if (anyMarked)
|
||||||
|
(*pScreen->HandleExposures)(pWin);
|
||||||
|
if (anyMarked && pScreen->PostValidateTree)
|
||||||
|
(*pScreen->PostValidateTree)(pWin, NullWindow, VTOther);
|
||||||
|
}
|
||||||
|
if (pWin->realized)
|
||||||
|
WindowsRestructured ();
|
||||||
|
FlushAllOutput();
|
||||||
|
}
|
||||||
|
|
|
@ -91,95 +91,6 @@ static Bool kdCaughtSignal = FALSE;
|
||||||
|
|
||||||
KdOsFuncs *kdOsFuncs;
|
KdOsFuncs *kdOsFuncs;
|
||||||
|
|
||||||
void
|
|
||||||
KdSetRootClip (ScreenPtr pScreen, BOOL enable)
|
|
||||||
{
|
|
||||||
WindowPtr pWin = pScreen->root;
|
|
||||||
WindowPtr pChild;
|
|
||||||
Bool WasViewable;
|
|
||||||
Bool anyMarked = FALSE;
|
|
||||||
WindowPtr pLayerWin;
|
|
||||||
BoxRec box;
|
|
||||||
|
|
||||||
if (!pWin)
|
|
||||||
return;
|
|
||||||
WasViewable = (Bool)(pWin->viewable);
|
|
||||||
if (WasViewable)
|
|
||||||
{
|
|
||||||
for (pChild = pWin->firstChild; pChild; pChild = pChild->nextSib)
|
|
||||||
{
|
|
||||||
(void) (*pScreen->MarkOverlappedWindows)(pChild,
|
|
||||||
pChild,
|
|
||||||
&pLayerWin);
|
|
||||||
}
|
|
||||||
(*pScreen->MarkWindow) (pWin);
|
|
||||||
anyMarked = TRUE;
|
|
||||||
if (pWin->valdata)
|
|
||||||
{
|
|
||||||
if (HasBorder (pWin))
|
|
||||||
{
|
|
||||||
RegionPtr borderVisible;
|
|
||||||
|
|
||||||
borderVisible = RegionCreate(NullBox, 1);
|
|
||||||
RegionSubtract(borderVisible,
|
|
||||||
&pWin->borderClip, &pWin->winSize);
|
|
||||||
pWin->valdata->before.borderVisible = borderVisible;
|
|
||||||
}
|
|
||||||
pWin->valdata->before.resized = TRUE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (enable)
|
|
||||||
{
|
|
||||||
box.x1 = 0;
|
|
||||||
box.y1 = 0;
|
|
||||||
box.x2 = pScreen->width;
|
|
||||||
box.y2 = pScreen->height;
|
|
||||||
pWin->drawable.width = pScreen->width;
|
|
||||||
pWin->drawable.height = pScreen->height;
|
|
||||||
RegionInit(&pWin->winSize, &box, 1);
|
|
||||||
RegionInit(&pWin->borderSize, &box, 1);
|
|
||||||
RegionReset(&pWin->borderClip, &box);
|
|
||||||
RegionBreak(&pWin->clipList);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
RegionEmpty(&pWin->borderClip);
|
|
||||||
RegionBreak(&pWin->clipList);
|
|
||||||
}
|
|
||||||
|
|
||||||
ResizeChildrenWinSize (pWin, 0, 0, 0, 0);
|
|
||||||
|
|
||||||
if (WasViewable)
|
|
||||||
{
|
|
||||||
if (pWin->firstChild)
|
|
||||||
{
|
|
||||||
anyMarked |= (*pScreen->MarkOverlappedWindows)(pWin->firstChild,
|
|
||||||
pWin->firstChild,
|
|
||||||
(WindowPtr *)NULL);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
(*pScreen->MarkWindow) (pWin);
|
|
||||||
anyMarked = TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if (anyMarked)
|
|
||||||
(*pScreen->ValidateTree)(pWin, NullWindow, VTOther);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (WasViewable)
|
|
||||||
{
|
|
||||||
if (anyMarked)
|
|
||||||
(*pScreen->HandleExposures)(pWin);
|
|
||||||
if (anyMarked && pScreen->PostValidateTree)
|
|
||||||
(*pScreen->PostValidateTree)(pWin, NullWindow, VTOther);
|
|
||||||
}
|
|
||||||
if (pWin->realized)
|
|
||||||
WindowsRestructured ();
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
KdDisableScreen (ScreenPtr pScreen)
|
KdDisableScreen (ScreenPtr pScreen)
|
||||||
{
|
{
|
||||||
|
@ -188,7 +99,7 @@ KdDisableScreen (ScreenPtr pScreen)
|
||||||
if (!pScreenPriv->enabled)
|
if (!pScreenPriv->enabled)
|
||||||
return;
|
return;
|
||||||
if (!pScreenPriv->closed)
|
if (!pScreenPriv->closed)
|
||||||
KdSetRootClip (pScreen, FALSE);
|
SetRootClip (pScreen, FALSE);
|
||||||
KdDisableColormap (pScreen);
|
KdDisableColormap (pScreen);
|
||||||
if (!pScreenPriv->screen->dumb && pScreenPriv->card->cfuncs->disableAccel)
|
if (!pScreenPriv->screen->dumb && pScreenPriv->card->cfuncs->disableAccel)
|
||||||
(*pScreenPriv->card->cfuncs->disableAccel) (pScreen);
|
(*pScreenPriv->card->cfuncs->disableAccel) (pScreen);
|
||||||
|
@ -271,7 +182,7 @@ KdEnableScreen (ScreenPtr pScreen)
|
||||||
if (!pScreenPriv->screen->dumb && pScreenPriv->card->cfuncs->enableAccel)
|
if (!pScreenPriv->screen->dumb && pScreenPriv->card->cfuncs->enableAccel)
|
||||||
(*pScreenPriv->card->cfuncs->enableAccel) (pScreen);
|
(*pScreenPriv->card->cfuncs->enableAccel) (pScreen);
|
||||||
KdEnableColormap (pScreen);
|
KdEnableColormap (pScreen);
|
||||||
KdSetRootClip (pScreen, TRUE);
|
SetRootClip (pScreen, TRUE);
|
||||||
if (pScreenPriv->card->cfuncs->dpms)
|
if (pScreenPriv->card->cfuncs->dpms)
|
||||||
(*pScreenPriv->card->cfuncs->dpms) (pScreen, pScreenPriv->dpmsState);
|
(*pScreenPriv->card->cfuncs->dpms) (pScreen, pScreenPriv->dpmsState);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
|
@ -386,9 +386,6 @@ KdStoreColors (ColormapPtr pCmap, int ndef, xColorItem *pdefs);
|
||||||
/* kdrive.c */
|
/* kdrive.c */
|
||||||
extern miPointerScreenFuncRec kdPointerScreenFuncs;
|
extern miPointerScreenFuncRec kdPointerScreenFuncs;
|
||||||
|
|
||||||
void
|
|
||||||
KdSetRootClip (ScreenPtr pScreen, BOOL enable);
|
|
||||||
|
|
||||||
void
|
void
|
||||||
KdDisableScreen (ScreenPtr pScreen);
|
KdDisableScreen (ScreenPtr pScreen);
|
||||||
|
|
||||||
|
|
|
@ -982,106 +982,6 @@ xf86SetBlackWhitePixels(ScreenPtr pScreen)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* xf86SetRootClip --
|
|
||||||
* Enable or disable rendering to the screen by
|
|
||||||
* setting the root clip list and revalidating
|
|
||||||
* all of the windows
|
|
||||||
*/
|
|
||||||
|
|
||||||
static void
|
|
||||||
xf86SetRootClip (ScreenPtr pScreen, Bool enable)
|
|
||||||
{
|
|
||||||
WindowPtr pWin = pScreen->root;
|
|
||||||
WindowPtr pChild;
|
|
||||||
Bool WasViewable = (Bool)(pWin->viewable);
|
|
||||||
Bool anyMarked = FALSE;
|
|
||||||
WindowPtr pLayerWin;
|
|
||||||
BoxRec box;
|
|
||||||
|
|
||||||
if (WasViewable)
|
|
||||||
{
|
|
||||||
for (pChild = pWin->firstChild; pChild; pChild = pChild->nextSib)
|
|
||||||
{
|
|
||||||
(void) (*pScreen->MarkOverlappedWindows)(pChild,
|
|
||||||
pChild,
|
|
||||||
&pLayerWin);
|
|
||||||
}
|
|
||||||
(*pScreen->MarkWindow) (pWin);
|
|
||||||
anyMarked = TRUE;
|
|
||||||
if (pWin->valdata)
|
|
||||||
{
|
|
||||||
if (HasBorder (pWin))
|
|
||||||
{
|
|
||||||
RegionPtr borderVisible;
|
|
||||||
|
|
||||||
borderVisible = RegionCreate(NullBox, 1);
|
|
||||||
RegionSubtract(borderVisible,
|
|
||||||
&pWin->borderClip, &pWin->winSize);
|
|
||||||
pWin->valdata->before.borderVisible = borderVisible;
|
|
||||||
}
|
|
||||||
pWin->valdata->before.resized = TRUE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Use REGION_BREAK to avoid optimizations in ValidateTree
|
|
||||||
* that assume the root borderClip can't change well, normally
|
|
||||||
* it doesn't...)
|
|
||||||
*/
|
|
||||||
if (enable)
|
|
||||||
{
|
|
||||||
box.x1 = 0;
|
|
||||||
box.y1 = 0;
|
|
||||||
box.x2 = pScreen->width;
|
|
||||||
box.y2 = pScreen->height;
|
|
||||||
RegionInit(&pWin->winSize, &box, 1);
|
|
||||||
RegionInit(&pWin->borderSize, &box, 1);
|
|
||||||
if (WasViewable)
|
|
||||||
RegionReset(&pWin->borderClip, &box);
|
|
||||||
pWin->drawable.width = pScreen->width;
|
|
||||||
pWin->drawable.height = pScreen->height;
|
|
||||||
RegionBreak(&pWin->clipList);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
RegionEmpty(&pWin->borderClip);
|
|
||||||
RegionBreak(&pWin->clipList);
|
|
||||||
}
|
|
||||||
|
|
||||||
ResizeChildrenWinSize (pWin, 0, 0, 0, 0);
|
|
||||||
|
|
||||||
if (WasViewable)
|
|
||||||
{
|
|
||||||
if (pWin->firstChild)
|
|
||||||
{
|
|
||||||
anyMarked |= (*pScreen->MarkOverlappedWindows)(pWin->firstChild,
|
|
||||||
pWin->firstChild,
|
|
||||||
(WindowPtr *)NULL);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
(*pScreen->MarkWindow) (pWin);
|
|
||||||
anyMarked = TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if (anyMarked)
|
|
||||||
(*pScreen->ValidateTree)(pWin, NullWindow, VTOther);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (WasViewable)
|
|
||||||
{
|
|
||||||
if (anyMarked)
|
|
||||||
(*pScreen->HandleExposures)(pWin);
|
|
||||||
if (anyMarked && pScreen->PostValidateTree)
|
|
||||||
(*pScreen->PostValidateTree)(pWin, NullWindow, VTOther);
|
|
||||||
}
|
|
||||||
if (pWin->realized)
|
|
||||||
WindowsRestructured ();
|
|
||||||
FlushAllOutput ();
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Function to enable/disable access to the frame buffer
|
* Function to enable/disable access to the frame buffer
|
||||||
*
|
*
|
||||||
|
@ -1115,7 +1015,7 @@ xf86EnableDisableFBAccess(int scrnIndex, Bool enable)
|
||||||
* Restore all of the clip lists on the screen
|
* Restore all of the clip lists on the screen
|
||||||
*/
|
*/
|
||||||
if (!xf86Resetting)
|
if (!xf86Resetting)
|
||||||
xf86SetRootClip (pScreen, TRUE);
|
SetRootClip (pScreen, TRUE);
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1123,7 +1023,7 @@ xf86EnableDisableFBAccess(int scrnIndex, Bool enable)
|
||||||
/*
|
/*
|
||||||
* Empty all of the clip lists on the screen
|
* Empty all of the clip lists on the screen
|
||||||
*/
|
*/
|
||||||
xf86SetRootClip (pScreen, FALSE);
|
SetRootClip (pScreen, FALSE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1497,10 +1497,6 @@ DRIGetDrawableInfo(ScreenPtr pScreen,
|
||||||
*stamp = pDRIPriv->pSAREA->drawableTable[*index].stamp;
|
*stamp = pDRIPriv->pSAREA->drawableTable[*index].stamp;
|
||||||
*X = (int)(pWin->drawable.x);
|
*X = (int)(pWin->drawable.x);
|
||||||
*Y = (int)(pWin->drawable.y);
|
*Y = (int)(pWin->drawable.y);
|
||||||
#if 0
|
|
||||||
*W = (int)(pWin->winSize.extents.x2 - pWin->winSize.extents.x1);
|
|
||||||
*H = (int)(pWin->winSize.extents.y2 - pWin->winSize.extents.y1);
|
|
||||||
#endif
|
|
||||||
*W = (int)(pWin->drawable.width);
|
*W = (int)(pWin->drawable.width);
|
||||||
*H = (int)(pWin->drawable.height);
|
*H = (int)(pWin->drawable.height);
|
||||||
*numClipRects = RegionNumRects(&pWin->clipList);
|
*numClipRects = RegionNumRects(&pWin->clipList);
|
||||||
|
|
|
@ -767,113 +767,3 @@ void AbortDDX( void )
|
||||||
OsAbort();
|
OsAbort();
|
||||||
}
|
}
|
||||||
|
|
||||||
#include "mivalidate.h" // for union _Validate used by windowstr.h
|
|
||||||
#include "windowstr.h" // for struct _Window
|
|
||||||
#include "scrnintstr.h" // for struct _Screen
|
|
||||||
|
|
||||||
// This is copied from Xserver/hw/xfree86/common/xf86Helper.c.
|
|
||||||
// Quartz mode uses this when switching in and out of Quartz.
|
|
||||||
// Quartz or IOKit can use this when waking from sleep.
|
|
||||||
// Copyright (c) 1997-1998 by The XFree86 Project, Inc.
|
|
||||||
|
|
||||||
/*
|
|
||||||
* xf86SetRootClip --
|
|
||||||
* Enable or disable rendering to the screen by
|
|
||||||
* setting the root clip list and revalidating
|
|
||||||
* all of the windows
|
|
||||||
*/
|
|
||||||
|
|
||||||
void
|
|
||||||
xf86SetRootClip (ScreenPtr pScreen, int enable)
|
|
||||||
{
|
|
||||||
WindowPtr pWin = pScreen->root;
|
|
||||||
WindowPtr pChild;
|
|
||||||
Bool WasViewable = (Bool)(pWin->viewable);
|
|
||||||
Bool anyMarked = TRUE;
|
|
||||||
RegionPtr pOldClip = NULL;
|
|
||||||
WindowPtr pLayerWin;
|
|
||||||
BoxRec box;
|
|
||||||
|
|
||||||
if (WasViewable)
|
|
||||||
{
|
|
||||||
for (pChild = pWin->firstChild; pChild; pChild = pChild->nextSib)
|
|
||||||
{
|
|
||||||
(void) (*pScreen->MarkOverlappedWindows)(pChild,
|
|
||||||
pChild,
|
|
||||||
&pLayerWin);
|
|
||||||
}
|
|
||||||
(*pScreen->MarkWindow) (pWin);
|
|
||||||
anyMarked = TRUE;
|
|
||||||
if (pWin->valdata)
|
|
||||||
{
|
|
||||||
if (HasBorder (pWin))
|
|
||||||
{
|
|
||||||
RegionPtr borderVisible;
|
|
||||||
|
|
||||||
borderVisible = RegionCreate(NullBox, 1);
|
|
||||||
RegionSubtract(borderVisible,
|
|
||||||
&pWin->borderClip, &pWin->winSize);
|
|
||||||
pWin->valdata->before.borderVisible = borderVisible;
|
|
||||||
}
|
|
||||||
pWin->valdata->before.resized = TRUE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Use REGION_BREAK to avoid optimizations in ValidateTree
|
|
||||||
* that assume the root borderClip can't change well, normally
|
|
||||||
* it doesn't...)
|
|
||||||
*/
|
|
||||||
if (enable)
|
|
||||||
{
|
|
||||||
box.x1 = 0;
|
|
||||||
box.y1 = 0;
|
|
||||||
box.x2 = pScreen->width;
|
|
||||||
box.y2 = pScreen->height;
|
|
||||||
RegionReset(&pWin->borderClip, &box);
|
|
||||||
RegionBreak(&pWin->clipList);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
RegionEmpty(&pWin->borderClip);
|
|
||||||
RegionBreak(&pWin->clipList);
|
|
||||||
}
|
|
||||||
|
|
||||||
ResizeChildrenWinSize (pWin, 0, 0, 0, 0);
|
|
||||||
|
|
||||||
if (WasViewable)
|
|
||||||
{
|
|
||||||
if (pWin->backStorage)
|
|
||||||
{
|
|
||||||
pOldClip = RegionCreate(NullBox, 1);
|
|
||||||
RegionCopy(pOldClip, &pWin->clipList);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pWin->firstChild)
|
|
||||||
{
|
|
||||||
anyMarked |= (*pScreen->MarkOverlappedWindows)(pWin->firstChild,
|
|
||||||
pWin->firstChild,
|
|
||||||
(WindowPtr *)NULL);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
(*pScreen->MarkWindow) (pWin);
|
|
||||||
anyMarked = TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if (anyMarked)
|
|
||||||
(*pScreen->ValidateTree)(pWin, NullWindow, VTOther);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (WasViewable)
|
|
||||||
{
|
|
||||||
if (anyMarked)
|
|
||||||
(*pScreen->HandleExposures)(pWin);
|
|
||||||
if (anyMarked && pScreen->PostValidateTree)
|
|
||||||
(*pScreen->PostValidateTree)(pWin, NullWindow, VTOther);
|
|
||||||
}
|
|
||||||
if (pWin->realized)
|
|
||||||
WindowsRestructured ();
|
|
||||||
FlushAllOutput ();
|
|
||||||
}
|
|
||||||
|
|
|
@ -42,7 +42,6 @@
|
||||||
void DarwinPrintBanner(void);
|
void DarwinPrintBanner(void);
|
||||||
int DarwinParseModifierList(const char *constmodifiers, int separatelr);
|
int DarwinParseModifierList(const char *constmodifiers, int separatelr);
|
||||||
void DarwinAdjustScreenOrigins(ScreenInfo *pScreenInfo);
|
void DarwinAdjustScreenOrigins(ScreenInfo *pScreenInfo);
|
||||||
void xf86SetRootClip (ScreenPtr pScreen, int enable);
|
|
||||||
|
|
||||||
#define SCREEN_PRIV(pScreen) ((DarwinFramebufferPtr) \
|
#define SCREEN_PRIV(pScreen) ((DarwinFramebufferPtr) \
|
||||||
dixLookupPrivate(&pScreen->devPrivates, darwinScreenKey))
|
dixLookupPrivate(&pScreen->devPrivates, darwinScreenKey))
|
||||||
|
|
|
@ -442,7 +442,7 @@ void QuartzSetRootClip(
|
||||||
|
|
||||||
for (i = 0; i < screenInfo.numScreens; i++) {
|
for (i = 0; i < screenInfo.numScreens; i++) {
|
||||||
if (screenInfo.screens[i]) {
|
if (screenInfo.screens[i]) {
|
||||||
xf86SetRootClip(screenInfo.screens[i], enable);
|
SetRootClip(screenInfo.screens[i], enable);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -63,106 +63,6 @@ winRandRGetInfo (ScreenPtr pScreen, Rotation *pRotations)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Copied from the xfree86 DDX
|
|
||||||
|
|
||||||
Why can't this be in DIX?
|
|
||||||
Does union _Validate vary depending on DDX??
|
|
||||||
*/
|
|
||||||
static void
|
|
||||||
xf86SetRootClip (ScreenPtr pScreen, Bool enable)
|
|
||||||
{
|
|
||||||
WindowPtr pWin = pScreen->root;
|
|
||||||
WindowPtr pChild;
|
|
||||||
Bool WasViewable = (Bool)(pWin->viewable);
|
|
||||||
Bool anyMarked = FALSE;
|
|
||||||
WindowPtr pLayerWin;
|
|
||||||
BoxRec box;
|
|
||||||
|
|
||||||
if (WasViewable)
|
|
||||||
{
|
|
||||||
for (pChild = pWin->firstChild; pChild; pChild = pChild->nextSib)
|
|
||||||
{
|
|
||||||
(void) (*pScreen->MarkOverlappedWindows)(pChild,
|
|
||||||
pChild,
|
|
||||||
&pLayerWin);
|
|
||||||
}
|
|
||||||
(*pScreen->MarkWindow) (pWin);
|
|
||||||
anyMarked = TRUE;
|
|
||||||
if (pWin->valdata)
|
|
||||||
{
|
|
||||||
if (HasBorder (pWin))
|
|
||||||
{
|
|
||||||
RegionPtr borderVisible;
|
|
||||||
|
|
||||||
borderVisible = REGION_CREATE(pScreen, NullBox, 1);
|
|
||||||
REGION_SUBTRACT(pScreen, borderVisible,
|
|
||||||
&pWin->borderClip, &pWin->winSize);
|
|
||||||
pWin->valdata->before.borderVisible = borderVisible;
|
|
||||||
}
|
|
||||||
pWin->valdata->before.resized = TRUE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Use REGION_BREAK to avoid optimizations in ValidateTree
|
|
||||||
* that assume the root borderClip can't change well, normally
|
|
||||||
* it doesn't...)
|
|
||||||
*/
|
|
||||||
if (enable)
|
|
||||||
{
|
|
||||||
box.x1 = 0;
|
|
||||||
box.y1 = 0;
|
|
||||||
box.x2 = pScreen->width;
|
|
||||||
box.y2 = pScreen->height;
|
|
||||||
REGION_INIT (pScreen, &pWin->winSize, &box, 1);
|
|
||||||
REGION_INIT (pScreen, &pWin->borderSize, &box, 1);
|
|
||||||
if (WasViewable)
|
|
||||||
REGION_RESET(pScreen, &pWin->borderClip, &box);
|
|
||||||
pWin->drawable.width = pScreen->width;
|
|
||||||
pWin->drawable.height = pScreen->height;
|
|
||||||
REGION_BREAK (pWin->drawable.pScreen, &pWin->clipList);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
REGION_EMPTY(pScreen, &pWin->borderClip);
|
|
||||||
REGION_BREAK (pWin->drawable.pScreen, &pWin->clipList);
|
|
||||||
}
|
|
||||||
|
|
||||||
ResizeChildrenWinSize (pWin, 0, 0, 0, 0);
|
|
||||||
|
|
||||||
if (WasViewable)
|
|
||||||
{
|
|
||||||
if (pWin->firstChild)
|
|
||||||
{
|
|
||||||
anyMarked |= (*pScreen->MarkOverlappedWindows)(pWin->firstChild,
|
|
||||||
pWin->firstChild,
|
|
||||||
(WindowPtr *)NULL);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
(*pScreen->MarkWindow) (pWin);
|
|
||||||
anyMarked = TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if (anyMarked)
|
|
||||||
(*pScreen->ValidateTree)(pWin, NullWindow, VTOther);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (WasViewable)
|
|
||||||
{
|
|
||||||
if (anyMarked)
|
|
||||||
(*pScreen->HandleExposures)(pWin);
|
|
||||||
if (anyMarked && pScreen->PostValidateTree)
|
|
||||||
(*pScreen->PostValidateTree)(pWin, NullWindow, VTOther);
|
|
||||||
}
|
|
||||||
if (pWin->realized)
|
|
||||||
WindowsRestructured ();
|
|
||||||
FlushAllOutput ();
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
@ -178,7 +78,7 @@ winDoRandRScreenSetSize (ScreenPtr pScreen,
|
||||||
WindowPtr pRoot = pScreen->root;
|
WindowPtr pRoot = pScreen->root;
|
||||||
|
|
||||||
// Prevent screen updates while we change things around
|
// Prevent screen updates while we change things around
|
||||||
xf86SetRootClip(pScreen, FALSE);
|
SetRootClip(pScreen, FALSE);
|
||||||
|
|
||||||
/* Update the screen size as requested */
|
/* Update the screen size as requested */
|
||||||
pScreenInfo->dwWidth = width;
|
pScreenInfo->dwWidth = width;
|
||||||
|
@ -205,7 +105,7 @@ winDoRandRScreenSetSize (ScreenPtr pScreen,
|
||||||
// does this emit a ConfigureNotify??
|
// does this emit a ConfigureNotify??
|
||||||
|
|
||||||
// Restore the ability to update screen, now with new dimensions
|
// Restore the ability to update screen, now with new dimensions
|
||||||
xf86SetRootClip(pScreen, TRUE);
|
SetRootClip(pScreen, TRUE);
|
||||||
|
|
||||||
// and arrange for it to be repainted
|
// and arrange for it to be repainted
|
||||||
miPaintWindow(pRoot, &pRoot->borderClip, PW_BACKGROUND);
|
miPaintWindow(pRoot, &pRoot->borderClip, PW_BACKGROUND);
|
||||||
|
|
|
@ -266,4 +266,5 @@ extern _X_EXPORT void DisableMapUnmapEvents(
|
||||||
extern _X_EXPORT void EnableMapUnmapEvents(
|
extern _X_EXPORT void EnableMapUnmapEvents(
|
||||||
WindowPtr /* pWin */ );
|
WindowPtr /* pWin */ );
|
||||||
|
|
||||||
|
extern _X_EXPORT void SetRootClip(ScreenPtr pScreen, Bool enable);
|
||||||
#endif /* WINDOW_H */
|
#endif /* WINDOW_H */
|
||||||
|
|
Loading…
Reference in New Issue