2 * Copyright © 2003 Keith Packard
4 * Permission to use, copy, modify, distribute, and sell this software and its
5 * documentation for any purpose is hereby granted without fee, provided that
6 * the above copyright notice appear in all copies and that both that
7 * copyright notice and this permission notice appear in supporting
8 * documentation, and that the name of Keith Packard not be used in
9 * advertising or publicity pertaining to distribution of the software without
10 * specific, written prior permission. Keith Packard makes no
11 * representations about the suitability of this software for any purpose. It
12 * is provided "as is" without express or implied warranty.
14 * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
15 * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
16 * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
17 * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
18 * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
19 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
20 * PERFORMANCE OF THIS SOFTWARE.
23 #ifdef HAVE_DIX_CONFIG_H
24 #include <dix-config.h>
30 typedef struct _damage
*DamagePtr
;
32 typedef enum _damageReportLevel
{
33 DamageReportRawRegion
,
34 DamageReportDeltaRegion
,
35 DamageReportBoundingBox
,
40 typedef void (*DamageReportFunc
) (DamagePtr pDamage
, RegionPtr pRegion
,
42 typedef void (*DamageDestroyFunc
) (DamagePtr pDamage
, void *closure
);
44 typedef void (*DamageScreenCreateFunc
) (DamagePtr
);
45 typedef void (*DamageScreenRegisterFunc
) (DrawablePtr
, DamagePtr
);
46 typedef void (*DamageScreenUnregisterFunc
) (DrawablePtr
, DamagePtr
);
47 typedef void (*DamageScreenDestroyFunc
) (DamagePtr
);
49 typedef struct _damageScreenFuncs
{
50 DamageScreenCreateFunc Create
;
51 DamageScreenRegisterFunc Register
;
52 DamageScreenUnregisterFunc Unregister
;
53 DamageScreenDestroyFunc Destroy
;
54 } DamageScreenFuncsRec
, *DamageScreenFuncsPtr
;
56 extern _X_EXPORT
void miDamageCreate(DamagePtr
);
57 extern _X_EXPORT
void miDamageRegister(DrawablePtr
, DamagePtr
);
58 extern _X_EXPORT
void miDamageUnregister(DrawablePtr
, DamagePtr
);
59 extern _X_EXPORT
void miDamageDestroy(DamagePtr
);
62 DamageSetup(ScreenPtr pScreen
);
64 extern _X_EXPORT DamagePtr
65 DamageCreate(DamageReportFunc damageReport
,
66 DamageDestroyFunc damageDestroy
,
67 DamageReportLevel damageLevel
,
68 Bool isInternal
, ScreenPtr pScreen
, void *closure
);
71 DamageDrawInternal(ScreenPtr pScreen
, Bool enable
);
74 DamageRegister(DrawablePtr pDrawable
, DamagePtr pDamage
);
77 DamageUnregister(DamagePtr pDamage
);
80 DamageDestroy(DamagePtr pDamage
);
83 DamageSubtract(DamagePtr pDamage
, const RegionPtr pRegion
);
86 DamageEmpty(DamagePtr pDamage
);
88 extern _X_EXPORT RegionPtr
89 DamageRegion(DamagePtr pDamage
);
91 extern _X_EXPORT RegionPtr
92 DamagePendingRegion(DamagePtr pDamage
);
94 /* In case of rendering, call this before the submitting the commands. */
96 DamageRegionAppend(DrawablePtr pDrawable
, RegionPtr pRegion
);
98 /* Call this directly after the rendering operation has been submitted. */
100 DamageRegionProcessPending(DrawablePtr pDrawable
);
102 /* Call this when you create a new Damage and you wish to send an initial damage message (to it). */
103 extern _X_EXPORT
void
104 DamageReportDamage(DamagePtr pDamage
, RegionPtr pDamageRegion
);
106 /* Avoid using this call, it only exists for API compatibility. */
107 extern _X_EXPORT
void
108 DamageDamageRegion(DrawablePtr pDrawable
, const RegionPtr pRegion
);
110 extern _X_EXPORT
void
111 DamageSetReportAfterOp(DamagePtr pDamage
, Bool reportAfter
);
113 extern _X_EXPORT DamageScreenFuncsPtr
DamageGetScreenFuncs(ScreenPtr
);
115 #endif /* _DAMAGE_H_ */