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 : VOICE
erik@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