deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/***********************************************************
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncCopyright 1987, 1998 The Open Group
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncPermission to use, copy, modify, distribute, and sell this software and its
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncdocumentation for any purpose is hereby granted without fee, provided that
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncthe above copyright notice appear in all copies and that both that
deb4998ba50060c48cce222fd18a8eed053918d7vboxsynccopyright notice and this permission notice appear in supporting
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncdocumentation.
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncThe above copyright notice and this permission notice shall be included in
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncall copies or substantial portions of the Software.
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncOPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncAN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncExcept as contained in this notice, the name of The Open Group shall not be
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncused in advertising or otherwise to promote the sale, use or other dealings
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncin this Software without prior written authorization from The Open Group.
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncCopyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync All Rights Reserved
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncPermission to use, copy, modify, and distribute this software and its
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncdocumentation for any purpose and without fee is hereby granted,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncprovided that the above copyright notice appear in all copies and that
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncboth that copyright notice and this permission notice appear in
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncsupporting documentation, and that the name of Digital not be
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncused in advertising or publicity pertaining to distribution of the
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncsoftware without specific, written prior permission.
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncDIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncDIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncWHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncSOFTWARE.
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync******************************************************************/
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#ifndef WINDOWSTRUCT_H
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define WINDOWSTRUCT_H
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#include "window.h"
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#include "pixmapstr.h"
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#include "regionstr.h"
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#include "cursor.h"
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#include "property.h"
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#include "resource.h" /* for ROOT_WINDOW_ID_BASE */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#include "dix.h"
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#include "miscstruct.h"
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#include <X11/Xprotostr.h>
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#include "opaque.h"
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define GuaranteeNothing 0
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define GuaranteeVisBack 1
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define SameBackground(as, a, bs, b) \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ((as) == (bs) && ((as) == None || \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync (as) == ParentRelative || \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync SamePixUnion(a,b,as == BackgroundPixel)))
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define SameBorder(as, a, bs, b) \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync EqualPixUnion(as, a, bs, b)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsynctypedef struct _WindowOpt {
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync VisualID visual; /* default: same as parent */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync CursorPtr cursor; /* default: window.cursorNone */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync Colormap colormap; /* default: same as parent */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync Mask dontPropagateMask; /* default: window.dontPropagate */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync Mask otherEventMasks; /* default: 0 */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync struct _OtherClients *otherClients; /* default: NULL */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync struct _GrabRec *passiveGrabs; /* default: NULL */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync PropertyPtr userProps; /* default: NULL */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unsigned long backingBitPlanes; /* default: ~0L */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unsigned long backingPixel; /* default: 0 */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#ifdef SHAPE
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync RegionPtr boundingShape; /* default: NULL */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync RegionPtr clipShape; /* default: NULL */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync RegionPtr inputShape; /* default: NULL */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#endif
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#ifdef XINPUT
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync struct _OtherInputMasks *inputMasks; /* default: NULL */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#endif
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync} WindowOptRec, *WindowOptPtr;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define BackgroundPixel 2L
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define BackgroundPixmap 3L
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsynctypedef struct _Window {
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync DrawableRec drawable;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync WindowPtr parent; /* ancestor chain */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync WindowPtr nextSib; /* next lower sibling */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync WindowPtr prevSib; /* next higher sibling */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync WindowPtr firstChild; /* top-most child */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync WindowPtr lastChild; /* bottom-most child */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync RegionRec clipList; /* clipping rectangle for output */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync RegionRec borderClip; /* NotClippedByChildren + border */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync union _Validate *valdata;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync RegionRec winSize;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync RegionRec borderSize;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync DDXPointRec origin; /* position relative to parent */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unsigned short borderWidth;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unsigned short deliverableEvents;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync Mask eventMask;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync PixUnion background;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync PixUnion border;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync pointer backStorage; /* null when BS disabled */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync WindowOptPtr optional;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unsigned backgroundState:2; /* None, Relative, Pixel, Pixmap */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unsigned borderIsPixel:1;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unsigned cursorIsNone:1; /* else real cursor (might inherit) */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unsigned backingStore:2;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unsigned saveUnder:1;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unsigned DIXsaveUnder:1;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unsigned bitGravity:4;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unsigned winGravity:4;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unsigned overrideRedirect:1;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unsigned visibility:2;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unsigned mapped:1;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unsigned realized:1; /* ancestors are all mapped */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unsigned viewable:1; /* realized && InputOutput */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unsigned dontPropagate:3;/* index into DontPropagateMasks */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unsigned forcedBS:1; /* system-supplied backingStore */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#ifdef NEED_DBE_BUF_BITS
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define DBE_FRONT_BUFFER 1
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define DBE_BACK_BUFFER 0
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unsigned dstBuffer:1; /* destination buffer for rendering */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unsigned srcBuffer:1; /* source buffer for rendering */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#endif
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#ifdef COMPOSITE
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unsigned redirectDraw:1; /* rendering is redirected from here */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#endif
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync DevUnion *devPrivates;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync} WindowRec;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/*
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * Ok, a bunch of macros for accessing the optional record
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * fields (or filling the appropriate default value)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern Mask DontPropagateMasks[];
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define wTrackParent(w,field) ((w)->optional ? \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync (w)->optional->field \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync : FindWindowWithOptional(w)->optional->field)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define wUseDefault(w,field,def) ((w)->optional ? \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync (w)->optional->field \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync : def)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define wVisual(w) wTrackParent(w, visual)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define wCursor(w) ((w)->cursorIsNone ? None : wTrackParent(w, cursor))
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define wColormap(w) ((w)->drawable.class == InputOnly ? None : wTrackParent(w, colormap))
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define wDontPropagateMask(w) wUseDefault(w, dontPropagateMask, DontPropagateMasks[(w)->dontPropagate])
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define wOtherEventMasks(w) wUseDefault(w, otherEventMasks, 0)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define wOtherClients(w) wUseDefault(w, otherClients, NULL)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#ifdef XINPUT
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define wOtherInputMasks(w) wUseDefault(w, inputMasks, NULL)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#else
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define wOtherInputMasks(w) NULL
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#endif
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define wPassiveGrabs(w) wUseDefault(w, passiveGrabs, NULL)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define wUserProps(w) wUseDefault(w, userProps, NULL)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define wBackingBitPlanes(w) wUseDefault(w, backingBitPlanes, ~0L)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define wBackingPixel(w) wUseDefault(w, backingPixel, 0)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#ifdef SHAPE
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define wBoundingShape(w) wUseDefault(w, boundingShape, NULL)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define wClipShape(w) wUseDefault(w, clipShape, NULL)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define wInputShape(w) wUseDefault(w, inputShape, NULL)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#endif
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define wClient(w) (clients[CLIENT_ID((w)->drawable.id)])
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define wBorderWidth(w) ((int) (w)->borderWidth)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/* true when w needs a border drawn. */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#ifdef SHAPE
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define HasBorder(w) ((w)->borderWidth || wClipShape(w))
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#else
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define HasBorder(w) ((w)->borderWidth)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#endif
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsynctypedef struct _ScreenSaverStuff {
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync WindowPtr pWindow;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync XID wid;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync char blanked;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync Bool (*ExternalScreenSaver)(
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ScreenPtr /*pScreen*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int /*xstate*/,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync Bool /*force*/);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync} ScreenSaverStuffRec, *ScreenSaverStuffPtr;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define SCREEN_IS_BLANKED 0
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define SCREEN_ISNT_SAVED 1
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define SCREEN_IS_TILED 2
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define SCREEN_IS_BLACK 3
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define HasSaverWindow(i) (savedScreenInfo[i].pWindow != NullWindow)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern int screenIsSaved;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern ScreenSaverStuffRec savedScreenInfo[MAXSCREENS];
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/*
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * this is the configuration parameter "NO_BACK_SAVE"
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * it means that any existant backing store should not
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * be used to implement save unders.
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#ifndef NO_BACK_SAVE
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define DO_SAVE_UNDERS(pWin) ((pWin)->drawable.pScreen->saveUnderSupport ==\
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync USE_DIX_SAVE_UNDERS)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/*
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * saveUnderSupport is set to this magic value when using DIXsaveUnders
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define USE_DIX_SAVE_UNDERS 0x40
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#endif
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern int numSaveUndersViewable;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern int deltaSaveUndersViewable;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#ifdef XEVIE
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncextern WindowPtr xeviewin;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#endif
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#endif /* WINDOWSTRUCT_H */