damagestr.h revision 4642e01f
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" 3305b261ecSmrg#ifdef RENDER 3405b261ecSmrg# include "picturestr.h" 3505b261ecSmrg#endif 3605b261ecSmrg 3705b261ecSmrgtypedef struct _damage { 3805b261ecSmrg DamagePtr pNext; 3905b261ecSmrg DamagePtr pNextWin; 4005b261ecSmrg RegionRec damage; 4105b261ecSmrg 4205b261ecSmrg DamageReportLevel damageLevel; 4305b261ecSmrg Bool isInternal; 4405b261ecSmrg void *closure; 4505b261ecSmrg Bool isWindow; 4605b261ecSmrg DrawablePtr pDrawable; 4705b261ecSmrg 4805b261ecSmrg DamageReportFunc damageReport; 494642e01fSmrg DamageReportFunc damageReportPostRendering; 5005b261ecSmrg DamageDestroyFunc damageDestroy; 514642e01fSmrg DamageMarkerFunc damageMarker; 5205b261ecSmrg 5305b261ecSmrg Bool reportAfter; 544642e01fSmrg RegionRec pendingDamage; /* will be flushed post submission at the latest */ 554642e01fSmrg RegionRec backupDamage; /* for use with damageMarker */ 5605b261ecSmrg} DamageRec; 5705b261ecSmrg 5805b261ecSmrgtypedef struct _damageScrPriv { 5905b261ecSmrg int internalLevel; 6005b261ecSmrg 6105b261ecSmrg /* 6205b261ecSmrg * For DDXen which don't provide GetScreenPixmap, this provides 6305b261ecSmrg * a place to hook damage for windows on the screen 6405b261ecSmrg */ 6505b261ecSmrg DamagePtr pScreenDamage; 6605b261ecSmrg 6705b261ecSmrg CopyWindowProcPtr CopyWindow; 6805b261ecSmrg CloseScreenProcPtr CloseScreen; 6905b261ecSmrg CreateGCProcPtr CreateGC; 7005b261ecSmrg DestroyPixmapProcPtr DestroyPixmap; 7105b261ecSmrg SetWindowPixmapProcPtr SetWindowPixmap; 7205b261ecSmrg DestroyWindowProcPtr DestroyWindow; 7305b261ecSmrg#ifdef RENDER 7405b261ecSmrg CompositeProcPtr Composite; 7505b261ecSmrg GlyphsProcPtr Glyphs; 764642e01fSmrg AddTrapsProcPtr AddTraps; 7705b261ecSmrg#endif 7805b261ecSmrg} DamageScrPrivRec, *DamageScrPrivPtr; 7905b261ecSmrg 8005b261ecSmrgtypedef struct _damageGCPriv { 8105b261ecSmrg GCOps *ops; 8205b261ecSmrg GCFuncs *funcs; 8305b261ecSmrg} DamageGCPrivRec, *DamageGCPrivPtr; 8405b261ecSmrg 8505b261ecSmrg/* XXX should move these into damage.c, damageScrPrivateIndex is static */ 864642e01fSmrg#define damageGetScrPriv(pScr) ((DamageScrPrivPtr) \ 874642e01fSmrg dixLookupPrivate(&(pScr)->devPrivates, damageScrPrivateKey)) 8805b261ecSmrg 8905b261ecSmrg#define damageScrPriv(pScr) \ 9005b261ecSmrg DamageScrPrivPtr pScrPriv = damageGetScrPriv(pScr) 9105b261ecSmrg 9205b261ecSmrg#define damageGetPixPriv(pPix) \ 934642e01fSmrg dixLookupPrivate(&(pPix)->devPrivates, damagePixPrivateKey) 9405b261ecSmrg 9505b261ecSmrg#define damgeSetPixPriv(pPix,v) \ 964642e01fSmrg dixSetPrivate(&(pPix)->devPrivates, damagePixPrivateKey, v) 9705b261ecSmrg 9805b261ecSmrg#define damagePixPriv(pPix) \ 9905b261ecSmrg DamagePtr pDamage = damageGetPixPriv(pPix) 10005b261ecSmrg 10105b261ecSmrg#define damageGetGCPriv(pGC) \ 1024642e01fSmrg dixLookupPrivate(&(pGC)->devPrivates, damageGCPrivateKey) 10305b261ecSmrg 10405b261ecSmrg#define damageGCPriv(pGC) \ 10505b261ecSmrg DamageGCPrivPtr pGCPriv = damageGetGCPriv(pGC) 10605b261ecSmrg 10705b261ecSmrg#define damageGetWinPriv(pWin) \ 1084642e01fSmrg ((DamagePtr)dixLookupPrivate(&(pWin)->devPrivates, damageWinPrivateKey)) 10905b261ecSmrg 11005b261ecSmrg#define damageSetWinPriv(pWin,d) \ 1114642e01fSmrg dixSetPrivate(&(pWin)->devPrivates, damageWinPrivateKey, d) 11205b261ecSmrg 11305b261ecSmrg#endif /* _DAMAGESTR_H_ */ 114