2006-11-26 11:13:41 -07:00
|
|
|
/*
|
|
|
|
* Copyright © 2003 Keith Packard
|
|
|
|
*
|
|
|
|
* Permission to use, copy, modify, distribute, and sell this software and its
|
|
|
|
* documentation for any purpose is hereby granted without fee, provided that
|
|
|
|
* the above copyright notice appear in all copies and that both that
|
|
|
|
* copyright notice and this permission notice appear in supporting
|
|
|
|
* documentation, and that the name of Keith Packard not be used in
|
|
|
|
* advertising or publicity pertaining to distribution of the software without
|
|
|
|
* specific, written prior permission. Keith Packard makes no
|
|
|
|
* representations about the suitability of this software for any purpose. It
|
|
|
|
* is provided "as is" without express or implied warranty.
|
|
|
|
*
|
|
|
|
* KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
|
|
|
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
|
|
|
|
* EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
|
|
|
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
|
|
|
|
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
|
|
|
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
|
|
* PERFORMANCE OF THIS SOFTWARE.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifdef HAVE_DIX_CONFIG_H
|
|
|
|
#include <dix-config.h>
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef _DAMAGESTR_H_
|
|
|
|
#define _DAMAGESTR_H_
|
|
|
|
|
|
|
|
#include "damage.h"
|
|
|
|
#include "gcstruct.h"
|
2008-11-02 08:26:08 -07:00
|
|
|
#include "privates.h"
|
2012-06-10 07:21:05 -06:00
|
|
|
#include "picturestr.h"
|
2006-11-26 11:13:41 -07:00
|
|
|
|
|
|
|
typedef struct _damage {
|
2012-06-10 07:21:05 -06:00
|
|
|
DamagePtr pNext;
|
|
|
|
DamagePtr pNextWin;
|
|
|
|
RegionRec damage;
|
|
|
|
|
|
|
|
DamageReportLevel damageLevel;
|
|
|
|
Bool isInternal;
|
|
|
|
void *closure;
|
|
|
|
Bool isWindow;
|
|
|
|
DrawablePtr pDrawable;
|
|
|
|
|
|
|
|
DamageReportFunc damageReport;
|
|
|
|
DamageDestroyFunc damageDestroy;
|
|
|
|
|
|
|
|
Bool reportAfter;
|
|
|
|
RegionRec pendingDamage; /* will be flushed post submission at the latest */
|
|
|
|
ScreenPtr pScreen;
|
2006-11-26 11:13:41 -07:00
|
|
|
} DamageRec;
|
|
|
|
|
|
|
|
typedef struct _damageScrPriv {
|
2012-06-10 07:21:05 -06:00
|
|
|
int internalLevel;
|
2006-11-26 11:13:41 -07:00
|
|
|
|
|
|
|
/*
|
|
|
|
* For DDXen which don't provide GetScreenPixmap, this provides
|
|
|
|
* a place to hook damage for windows on the screen
|
|
|
|
*/
|
2012-06-10 07:21:05 -06:00
|
|
|
DamagePtr pScreenDamage;
|
|
|
|
|
|
|
|
CopyWindowProcPtr CopyWindow;
|
|
|
|
CloseScreenProcPtr CloseScreen;
|
|
|
|
CreateGCProcPtr CreateGC;
|
|
|
|
DestroyPixmapProcPtr DestroyPixmap;
|
|
|
|
SetWindowPixmapProcPtr SetWindowPixmap;
|
|
|
|
DestroyWindowProcPtr DestroyWindow;
|
|
|
|
CompositeProcPtr Composite;
|
|
|
|
GlyphsProcPtr Glyphs;
|
|
|
|
AddTrapsProcPtr AddTraps;
|
2010-07-27 13:02:24 -06:00
|
|
|
|
|
|
|
/* Table of wrappable function pointers */
|
2012-06-10 07:21:05 -06:00
|
|
|
DamageScreenFuncsRec funcs;
|
2006-11-26 11:13:41 -07:00
|
|
|
} DamageScrPrivRec, *DamageScrPrivPtr;
|
|
|
|
|
|
|
|
typedef struct _damageGCPriv {
|
2014-09-27 11:52:59 -06:00
|
|
|
const GCOps *ops;
|
|
|
|
const GCFuncs *funcs;
|
2006-11-26 11:13:41 -07:00
|
|
|
} DamageGCPrivRec, *DamageGCPrivPtr;
|
|
|
|
|
2007-11-24 10:55:21 -07:00
|
|
|
/* XXX should move these into damage.c, damageScrPrivateIndex is static */
|
2008-11-02 08:26:08 -07:00
|
|
|
#define damageGetScrPriv(pScr) ((DamageScrPrivPtr) \
|
|
|
|
dixLookupPrivate(&(pScr)->devPrivates, damageScrPrivateKey))
|
2006-11-26 11:13:41 -07:00
|
|
|
|
|
|
|
#define damageScrPriv(pScr) \
|
|
|
|
DamageScrPrivPtr pScrPriv = damageGetScrPriv(pScr)
|
|
|
|
|
|
|
|
#define damageGetPixPriv(pPix) \
|
2008-11-02 08:26:08 -07:00
|
|
|
dixLookupPrivate(&(pPix)->devPrivates, damagePixPrivateKey)
|
2006-11-26 11:13:41 -07:00
|
|
|
|
|
|
|
#define damgeSetPixPriv(pPix,v) \
|
2008-11-02 08:26:08 -07:00
|
|
|
dixSetPrivate(&(pPix)->devPrivates, damagePixPrivateKey, v)
|
2006-11-26 11:13:41 -07:00
|
|
|
|
|
|
|
#define damagePixPriv(pPix) \
|
|
|
|
DamagePtr pDamage = damageGetPixPriv(pPix)
|
|
|
|
|
|
|
|
#define damageGetGCPriv(pGC) \
|
2008-11-02 08:26:08 -07:00
|
|
|
dixLookupPrivate(&(pGC)->devPrivates, damageGCPrivateKey)
|
2006-11-26 11:13:41 -07:00
|
|
|
|
|
|
|
#define damageGCPriv(pGC) \
|
|
|
|
DamageGCPrivPtr pGCPriv = damageGetGCPriv(pGC)
|
|
|
|
|
|
|
|
#define damageGetWinPriv(pWin) \
|
2008-11-02 08:26:08 -07:00
|
|
|
((DamagePtr)dixLookupPrivate(&(pWin)->devPrivates, damageWinPrivateKey))
|
2006-11-26 11:13:41 -07:00
|
|
|
|
|
|
|
#define damageSetWinPriv(pWin,d) \
|
2008-11-02 08:26:08 -07:00
|
|
|
dixSetPrivate(&(pWin)->devPrivates, damageWinPrivateKey, d)
|
2006-11-26 11:13:41 -07:00
|
|
|
|
2012-06-10 07:21:05 -06:00
|
|
|
#endif /* _DAMAGESTR_H_ */
|