cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/*
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * mibstorest.h
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync *
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * internal structure definitions for mi backing store
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/*
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncCopyright 1989, 1998 The Open Group
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncPermission to use, copy, modify, distribute, and sell this software and its
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncdocumentation for any purpose is hereby granted without fee, provided that
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncthe above copyright notice appear in all copies and that both that
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynccopyright notice and this permission notice appear in supporting
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncdocumentation.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncThe above copyright notice and this permission notice shall be included in
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncall copies or substantial portions of the Software.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncOPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncAN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncExcept as contained in this notice, the name of The Open Group shall not be
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncused in advertising or otherwise to promote the sale, use or other dealings
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncin this Software without prior written authorization from The Open Group.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync*/
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#ifdef HAVE_DIX_CONFIG_H
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#include <dix-config.h>
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#endif
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#include "mibstore.h"
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#include "regionstr.h"
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/*
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * One of these structures is allocated per GC used with a backing-store
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * drawable.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef struct {
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync GCPtr pBackingGC; /* Copy of the GC but with graphicsExposures
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * set FALSE and the clientClip set to
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * clip output to the valid regions of the
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * backing pixmap. */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int guarantee; /* GuaranteeNothing, etc. */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned long serialNumber; /* clientClip computed time */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned long stateChanges; /* changes in parent gc since last copy */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync GCOps *wrapOps; /* wrapped ops */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync GCFuncs *wrapFuncs; /* wrapped funcs */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync} miBSGCRec, *miBSGCPtr;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/*
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * one of these structures is allocated per Window with backing store
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef struct {
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync PixmapPtr pBackingPixmap; /* Pixmap for saved areas */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync short x; /* origin of pixmap relative to window */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync short y;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync RegionRec SavedRegion; /* Valid area in pBackingPixmap */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync char viewable; /* Tracks pWin->viewable so SavedRegion may
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * be initialized correctly when the window
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * is first mapped */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync char status; /* StatusNoPixmap, etc. */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync char backgroundState; /* background type */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync PixUnion background; /* background pattern */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync} miBSWindowRec, *miBSWindowPtr;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define StatusNoPixmap 1 /* pixmap has not been created */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define StatusVirtual 2 /* pixmap is virtual, tiled with background */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define StatusVDirty 3 /* pixmap is virtual, visiblt has contents */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define StatusBadAlloc 4 /* pixmap create failed, do not try again */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define StatusContents 5 /* pixmap is created, has valid contents */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef struct {
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync /*
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * screen func wrappers
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync CloseScreenProcPtr CloseScreen;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync GetImageProcPtr GetImage;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync GetSpansProcPtr GetSpans;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync ChangeWindowAttributesProcPtr ChangeWindowAttributes;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync CreateGCProcPtr CreateGC;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DestroyWindowProcPtr DestroyWindow;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync} miBSScreenRec, *miBSScreenPtr;