105b261ecSmrg/* 205b261ecSmrg * Copyright © 2003 Keith Packard 305b261ecSmrg * 405b261ecSmrg * Permission to use, copy, modify, distribute, and sell this software and its 505b261ecSmrg * documentation for any purpose is hereby granted without fee, provided that 605b261ecSmrg * the above copyright notice appear in all copies and that both that 705b261ecSmrg * copyright notice and this permission notice appear in supporting 805b261ecSmrg * documentation, and that the name of Keith Packard not be used in 905b261ecSmrg * advertising or publicity pertaining to distribution of the software without 1005b261ecSmrg * specific, written prior permission. Keith Packard makes no 1105b261ecSmrg * representations about the suitability of this software for any purpose. It 1205b261ecSmrg * is provided "as is" without express or implied warranty. 1305b261ecSmrg * 1405b261ecSmrg * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, 1505b261ecSmrg * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO 1605b261ecSmrg * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR 1705b261ecSmrg * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, 1805b261ecSmrg * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 1905b261ecSmrg * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 2005b261ecSmrg * PERFORMANCE OF THIS SOFTWARE. 2105b261ecSmrg */ 2205b261ecSmrg 2305b261ecSmrg#ifdef HAVE_DIX_CONFIG_H 2405b261ecSmrg#include <dix-config.h> 2505b261ecSmrg#endif 2605b261ecSmrg 2705b261ecSmrg#ifndef _DAMAGESTR_H_ 2805b261ecSmrg#define _DAMAGESTR_H_ 2905b261ecSmrg 3005b261ecSmrg#include "damage.h" 3105b261ecSmrg#include "gcstruct.h" 324642e01fSmrg#include "privates.h" 3335c4bbdfSmrg#include "picturestr.h" 3405b261ecSmrg 3505b261ecSmrgtypedef struct _damage { 3635c4bbdfSmrg DamagePtr pNext; 3735c4bbdfSmrg DamagePtr pNextWin; 3835c4bbdfSmrg RegionRec damage; 3935c4bbdfSmrg 4035c4bbdfSmrg DamageReportLevel damageLevel; 4135c4bbdfSmrg Bool isInternal; 4235c4bbdfSmrg void *closure; 4335c4bbdfSmrg Bool isWindow; 4435c4bbdfSmrg DrawablePtr pDrawable; 4535c4bbdfSmrg 4635c4bbdfSmrg DamageReportFunc damageReport; 4735c4bbdfSmrg DamageDestroyFunc damageDestroy; 4835c4bbdfSmrg 4935c4bbdfSmrg Bool reportAfter; 5035c4bbdfSmrg RegionRec pendingDamage; /* will be flushed post submission at the latest */ 5135c4bbdfSmrg ScreenPtr pScreen; 5205b261ecSmrg} DamageRec; 5305b261ecSmrg 5405b261ecSmrgtypedef struct _damageScrPriv { 5535c4bbdfSmrg int internalLevel; 5605b261ecSmrg 5705b261ecSmrg /* 5805b261ecSmrg * For DDXen which don't provide GetScreenPixmap, this provides 5905b261ecSmrg * a place to hook damage for windows on the screen 6005b261ecSmrg */ 6135c4bbdfSmrg DamagePtr pScreenDamage; 6235c4bbdfSmrg 6335c4bbdfSmrg CopyWindowProcPtr CopyWindow; 6435c4bbdfSmrg CloseScreenProcPtr CloseScreen; 6535c4bbdfSmrg CreateGCProcPtr CreateGC; 6635c4bbdfSmrg DestroyPixmapProcPtr DestroyPixmap; 6735c4bbdfSmrg SetWindowPixmapProcPtr SetWindowPixmap; 6835c4bbdfSmrg DestroyWindowProcPtr DestroyWindow; 6935c4bbdfSmrg CompositeProcPtr Composite; 7035c4bbdfSmrg GlyphsProcPtr Glyphs; 7135c4bbdfSmrg AddTrapsProcPtr AddTraps; 726747b715Smrg 736747b715Smrg /* Table of wrappable function pointers */ 7435c4bbdfSmrg DamageScreenFuncsRec funcs; 7505b261ecSmrg} DamageScrPrivRec, *DamageScrPrivPtr; 7605b261ecSmrg 7705b261ecSmrgtypedef struct _damageGCPriv { 7835c4bbdfSmrg const GCOps *ops; 7935c4bbdfSmrg const GCFuncs *funcs; 8005b261ecSmrg} DamageGCPrivRec, *DamageGCPrivPtr; 8105b261ecSmrg 8205b261ecSmrg/* XXX should move these into damage.c, damageScrPrivateIndex is static */ 834642e01fSmrg#define damageGetScrPriv(pScr) ((DamageScrPrivPtr) \ 844642e01fSmrg dixLookupPrivate(&(pScr)->devPrivates, damageScrPrivateKey)) 8505b261ecSmrg 8605b261ecSmrg#define damageScrPriv(pScr) \ 8705b261ecSmrg DamageScrPrivPtr pScrPriv = damageGetScrPriv(pScr) 8805b261ecSmrg 8905b261ecSmrg#define damageGetPixPriv(pPix) \ 904642e01fSmrg dixLookupPrivate(&(pPix)->devPrivates, damagePixPrivateKey) 9105b261ecSmrg 9205b261ecSmrg#define damgeSetPixPriv(pPix,v) \ 934642e01fSmrg dixSetPrivate(&(pPix)->devPrivates, damagePixPrivateKey, v) 9405b261ecSmrg 9505b261ecSmrg#define damagePixPriv(pPix) \ 9605b261ecSmrg DamagePtr pDamage = damageGetPixPriv(pPix) 9705b261ecSmrg 9805b261ecSmrg#define damageGetGCPriv(pGC) \ 994642e01fSmrg dixLookupPrivate(&(pGC)->devPrivates, damageGCPrivateKey) 10005b261ecSmrg 10105b261ecSmrg#define damageGCPriv(pGC) \ 10205b261ecSmrg DamageGCPrivPtr pGCPriv = damageGetGCPriv(pGC) 10305b261ecSmrg 10405b261ecSmrg#define damageGetWinPriv(pWin) \ 1054642e01fSmrg ((DamagePtr)dixLookupPrivate(&(pWin)->devPrivates, damageWinPrivateKey)) 10605b261ecSmrg 10705b261ecSmrg#define damageSetWinPriv(pWin,d) \ 1084642e01fSmrg dixSetPrivate(&(pWin)->devPrivates, damageWinPrivateKey, d) 10905b261ecSmrg 11035c4bbdfSmrg#endif /* _DAMAGESTR_H_ */ 111