viktor@fine.princeton.edu (Viktor Dukhovni) (10/06/90)
This is my attempt at generating a global repaint within the server
Is there a better way? This seems to only generate mono refreshes.
[ Note that HandleExposures is the one from dix/window.c ]
Message-ID: <3114@idunno.Princeton.EDU>
Date: 5 Oct 90 03:48:24 GMT
Sender: news@idunno.Princeton.EDU
Distribution: usa
Lines: 49
...
for( i = 0; i < screenInfo.numScreens; i++ )
{
ScreenPtr pScreen = screenInfo.screens[i];
WindowPtr pWin = WindowTable[i];
/* XXX: Color windows come out mono! */
ExposeEveryone(pWin,pScreen);
HandleExposures(pWin);
}
}
static
ExposeEveryone(pWin, pScreen)
WindowPtr pWin;
ScreenPtr pScreen;
{
WindowPtr pChild;
ValidatePtr val;
extern MarkWindow() ;
pChild = pWin;
while( pChild )
{
if (pChild->viewable)
{
MarkWindow(pChild);
val = pChild->valdata;
(pScreen->RegionInit)
(&val->after.exposed, NullBox, 0);
(pScreen->RegionInit)
(&val->after.borderExposed, NullBox, 0);
(pScreen->RegionCopy)
(&val->after.exposed, &pWin->clipList);
(pScreen->RegionCopy)
(&val->after.borderExposed, &pWin->borderClip);
}
ExposeEveryone(pChild->firstChild, pScreen);
pChild = pChild->nextSib;
}
}
--
Viktor Dukhovni <viktor@math.princeton.edu> : ARPA
<...!uunet!princeton!math!viktor> : UUCP
Fine Hall, Washington Rd., Princeton, NJ 08544 : US-Post
+1-(609)-258-5792 : VOICEerik@westworld.esd.sgi.com (Erik Fortune) (10/06/90)
> This is my attempt at generating a global repaint within the server > Is there a better way? This seems to only generate mono refreshes. > [ Note that HandleExposures is the one from dix/window.c ] How about creating a window the size of the screen, mapping it raised and destroying it? Let the server do the (window tree) walking. If you're worried about flashing, create the window with background None. Look at the screen saver code in window.c for examples of creating server owned windows from inside the server. Best of luck, Erik