damage: Remove "post-rendering" hooks
This is a revert of 974db58f5b
. There are
no consumers of this API, we must not need it.
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Adam Jackson <ajax@redhat.com>
This commit is contained in:
parent
0f3f8e4295
commit
c90add0f1c
|
@ -119,51 +119,6 @@ getDrawableDamageRef(DrawablePtr pDrawable)
|
||||||
DamagePtr *pPrev = (DamagePtr *) \
|
DamagePtr *pPrev = (DamagePtr *) \
|
||||||
dixLookupPrivateAddr(&(pWindow)->devPrivates, damageWinPrivateKey)
|
dixLookupPrivateAddr(&(pWindow)->devPrivates, damageWinPrivateKey)
|
||||||
|
|
||||||
static void
|
|
||||||
damageReportDamagePostRendering(DamagePtr pDamage, RegionPtr pOldDamage,
|
|
||||||
RegionPtr pDamageRegion)
|
|
||||||
{
|
|
||||||
BoxRec tmpBox;
|
|
||||||
RegionRec tmpRegion, newDamage;
|
|
||||||
Bool was_empty;
|
|
||||||
|
|
||||||
RegionUnion(&newDamage, pOldDamage, pDamageRegion);
|
|
||||||
|
|
||||||
switch (pDamage->damageLevel) {
|
|
||||||
case DamageReportRawRegion:
|
|
||||||
(*pDamage->damageReportPostRendering) (pDamage, pDamageRegion,
|
|
||||||
pDamage->closure);
|
|
||||||
break;
|
|
||||||
case DamageReportDeltaRegion:
|
|
||||||
RegionNull(&tmpRegion);
|
|
||||||
RegionSubtract(&tmpRegion, pDamageRegion, pOldDamage);
|
|
||||||
if (RegionNotEmpty(&tmpRegion)) {
|
|
||||||
(*pDamage->damageReportPostRendering) (pDamage, &tmpRegion,
|
|
||||||
pDamage->closure);
|
|
||||||
}
|
|
||||||
RegionUninit(&tmpRegion);
|
|
||||||
break;
|
|
||||||
case DamageReportBoundingBox:
|
|
||||||
tmpBox = *RegionExtents(pOldDamage);
|
|
||||||
if (!BOX_SAME(&tmpBox, RegionExtents(&newDamage))) {
|
|
||||||
(*pDamage->damageReportPostRendering) (pDamage, &newDamage,
|
|
||||||
pDamage->closure);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case DamageReportNonEmpty:
|
|
||||||
was_empty = !RegionNotEmpty(pOldDamage);
|
|
||||||
if (was_empty && RegionNotEmpty(&newDamage)) {
|
|
||||||
(*pDamage->damageReportPostRendering) (pDamage, &newDamage,
|
|
||||||
pDamage->closure);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case DamageReportNone:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
RegionUninit(&newDamage);
|
|
||||||
}
|
|
||||||
|
|
||||||
#if DAMAGE_DEBUG_ENABLE
|
#if DAMAGE_DEBUG_ENABLE
|
||||||
static void
|
static void
|
||||||
_damageRegionAppend(DrawablePtr pDrawable, RegionPtr pRegion, Bool clip,
|
_damageRegionAppend(DrawablePtr pDrawable, RegionPtr pRegion, Bool clip,
|
||||||
|
@ -299,14 +254,10 @@ damageRegionAppend(DrawablePtr pDrawable, RegionPtr pRegion, Bool clip,
|
||||||
RegionTranslate(pDamageRegion, -draw_x, -draw_y);
|
RegionTranslate(pDamageRegion, -draw_x, -draw_y);
|
||||||
|
|
||||||
/* Store damage region if needed after submission. */
|
/* Store damage region if needed after submission. */
|
||||||
if (pDamage->reportAfter || pDamage->damageMarker)
|
if (pDamage->reportAfter)
|
||||||
RegionUnion(&pDamage->pendingDamage,
|
RegionUnion(&pDamage->pendingDamage,
|
||||||
&pDamage->pendingDamage, pDamageRegion);
|
&pDamage->pendingDamage, pDamageRegion);
|
||||||
|
|
||||||
/* Duplicate current damage if needed. */
|
|
||||||
if (pDamage->damageMarker)
|
|
||||||
RegionCopy(&pDamage->backupDamage, &pDamage->damage);
|
|
||||||
|
|
||||||
/* Report damage now, if desired. */
|
/* Report damage now, if desired. */
|
||||||
if (!pDamage->reportAfter) {
|
if (!pDamage->reportAfter) {
|
||||||
if (pDamage->damageReport)
|
if (pDamage->damageReport)
|
||||||
|
@ -335,12 +286,6 @@ damageRegionProcessPending(DrawablePtr pDrawable)
|
||||||
drawableDamage(pDrawable);
|
drawableDamage(pDrawable);
|
||||||
|
|
||||||
for (; pDamage != NULL; pDamage = pDamage->pNext) {
|
for (; pDamage != NULL; pDamage = pDamage->pNext) {
|
||||||
/* submit damage marker whenever possible. */
|
|
||||||
if (pDamage->damageMarker)
|
|
||||||
(*pDamage->damageMarker) (pDrawable, pDamage,
|
|
||||||
&pDamage->backupDamage,
|
|
||||||
&pDamage->pendingDamage,
|
|
||||||
pDamage->closure);
|
|
||||||
if (pDamage->reportAfter) {
|
if (pDamage->reportAfter) {
|
||||||
/* It's possible that there is only interest in postRendering reporting. */
|
/* It's possible that there is only interest in postRendering reporting. */
|
||||||
if (pDamage->damageReport)
|
if (pDamage->damageReport)
|
||||||
|
@ -350,10 +295,8 @@ damageRegionProcessPending(DrawablePtr pDrawable)
|
||||||
&pDamage->pendingDamage);
|
&pDamage->pendingDamage);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pDamage->reportAfter || pDamage->damageMarker)
|
if (pDamage->reportAfter)
|
||||||
RegionEmpty(&pDamage->pendingDamage);
|
RegionEmpty(&pDamage->pendingDamage);
|
||||||
if (pDamage->damageMarker)
|
|
||||||
RegionEmpty(&pDamage->backupDamage);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1762,9 +1705,7 @@ DamageCreate(DamageReportFunc damageReport,
|
||||||
pDamage->reportAfter = FALSE;
|
pDamage->reportAfter = FALSE;
|
||||||
|
|
||||||
pDamage->damageReport = damageReport;
|
pDamage->damageReport = damageReport;
|
||||||
pDamage->damageReportPostRendering = NULL;
|
|
||||||
pDamage->damageDestroy = damageDestroy;
|
pDamage->damageDestroy = damageDestroy;
|
||||||
pDamage->damageMarker = NULL;
|
|
||||||
pDamage->pScreen = pScreen;
|
pDamage->pScreen = pScreen;
|
||||||
|
|
||||||
(*pScrPriv->funcs.Create) (pDamage);
|
(*pScrPriv->funcs.Create) (pDamage);
|
||||||
|
@ -1936,17 +1877,6 @@ DamageRegionProcessPending(DrawablePtr pDrawable)
|
||||||
damageRegionProcessPending(pDrawable);
|
damageRegionProcessPending(pDrawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If a damage marker is provided, then this function must be called after rendering is done. */
|
|
||||||
/* Please do call back so any future enhancements can assume this function is called. */
|
|
||||||
/* There are no strict timing requirements for calling this function, just as soon as (is cheaply) possible. */
|
|
||||||
void
|
|
||||||
DamageRegionRendered(DrawablePtr pDrawable, DamagePtr pDamage,
|
|
||||||
RegionPtr pOldDamage, RegionPtr pRegion)
|
|
||||||
{
|
|
||||||
if (pDamage->damageReportPostRendering)
|
|
||||||
damageReportDamagePostRendering(pDamage, pOldDamage, pRegion);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* This call is very odd, i'm leaving it intact for API sake, but please don't use it. */
|
/* This call is very odd, i'm leaving it intact for API sake, but please don't use it. */
|
||||||
void
|
void
|
||||||
DamageDamageRegion(DrawablePtr pDrawable, RegionPtr pRegion)
|
DamageDamageRegion(DrawablePtr pDrawable, RegionPtr pRegion)
|
||||||
|
@ -1966,15 +1896,6 @@ DamageSetReportAfterOp(DamagePtr pDamage, Bool reportAfter)
|
||||||
pDamage->reportAfter = reportAfter;
|
pDamage->reportAfter = reportAfter;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
DamageSetPostRenderingFunctions(DamagePtr pDamage,
|
|
||||||
DamageReportFunc damageReportPostRendering,
|
|
||||||
DamageMarkerFunc damageMarker)
|
|
||||||
{
|
|
||||||
pDamage->damageReportPostRendering = damageReportPostRendering;
|
|
||||||
pDamage->damageMarker = damageMarker;
|
|
||||||
}
|
|
||||||
|
|
||||||
DamageScreenFuncsPtr
|
DamageScreenFuncsPtr
|
||||||
DamageGetScreenFuncs(ScreenPtr pScreen)
|
DamageGetScreenFuncs(ScreenPtr pScreen)
|
||||||
{
|
{
|
||||||
|
|
|
@ -41,12 +41,6 @@ typedef void (*DamageReportFunc) (DamagePtr pDamage, RegionPtr pRegion,
|
||||||
void *closure);
|
void *closure);
|
||||||
typedef void (*DamageDestroyFunc) (DamagePtr pDamage, void *closure);
|
typedef void (*DamageDestroyFunc) (DamagePtr pDamage, void *closure);
|
||||||
|
|
||||||
/* It's the responsibility of the driver to duplicate both regions. */
|
|
||||||
/* At some point DamageRegionRendered() must be called. */
|
|
||||||
typedef void (*DamageMarkerFunc) (DrawablePtr pDrawable, DamagePtr pDamage,
|
|
||||||
RegionPtr pOldDamage, RegionPtr pRegion,
|
|
||||||
void *closure);
|
|
||||||
|
|
||||||
typedef void (*DamageScreenCreateFunc) (DamagePtr);
|
typedef void (*DamageScreenCreateFunc) (DamagePtr);
|
||||||
typedef void (*DamageScreenRegisterFunc) (DrawablePtr, DamagePtr);
|
typedef void (*DamageScreenRegisterFunc) (DrawablePtr, DamagePtr);
|
||||||
typedef void (*DamageScreenUnregisterFunc) (DrawablePtr, DamagePtr);
|
typedef void (*DamageScreenUnregisterFunc) (DrawablePtr, DamagePtr);
|
||||||
|
@ -105,12 +99,6 @@ extern _X_EXPORT void
|
||||||
extern _X_EXPORT void
|
extern _X_EXPORT void
|
||||||
DamageRegionProcessPending(DrawablePtr pDrawable);
|
DamageRegionProcessPending(DrawablePtr pDrawable);
|
||||||
|
|
||||||
/* Call this some time after rendering is done, only relevant when a damageMarker is provided. */
|
|
||||||
extern _X_EXPORT void
|
|
||||||
|
|
||||||
DamageRegionRendered(DrawablePtr pDrawable, DamagePtr pDamage,
|
|
||||||
RegionPtr pOldDamage, RegionPtr pRegion);
|
|
||||||
|
|
||||||
/* Call this when you create a new Damage and you wish to send an initial damage message (to it). */
|
/* Call this when you create a new Damage and you wish to send an initial damage message (to it). */
|
||||||
extern _X_EXPORT void
|
extern _X_EXPORT void
|
||||||
DamageReportDamage(DamagePtr pDamage, RegionPtr pDamageRegion);
|
DamageReportDamage(DamagePtr pDamage, RegionPtr pDamageRegion);
|
||||||
|
@ -122,12 +110,6 @@ extern _X_EXPORT void
|
||||||
extern _X_EXPORT void
|
extern _X_EXPORT void
|
||||||
DamageSetReportAfterOp(DamagePtr pDamage, Bool reportAfter);
|
DamageSetReportAfterOp(DamagePtr pDamage, Bool reportAfter);
|
||||||
|
|
||||||
extern _X_EXPORT void
|
|
||||||
|
|
||||||
DamageSetPostRenderingFunctions(DamagePtr pDamage,
|
|
||||||
DamageReportFunc damageReportPostRendering,
|
|
||||||
DamageMarkerFunc damageMarker);
|
|
||||||
|
|
||||||
extern _X_EXPORT DamageScreenFuncsPtr DamageGetScreenFuncs(ScreenPtr);
|
extern _X_EXPORT DamageScreenFuncsPtr DamageGetScreenFuncs(ScreenPtr);
|
||||||
|
|
||||||
#endif /* _DAMAGE_H_ */
|
#endif /* _DAMAGE_H_ */
|
||||||
|
|
|
@ -44,13 +44,10 @@ typedef struct _damage {
|
||||||
DrawablePtr pDrawable;
|
DrawablePtr pDrawable;
|
||||||
|
|
||||||
DamageReportFunc damageReport;
|
DamageReportFunc damageReport;
|
||||||
DamageReportFunc damageReportPostRendering;
|
|
||||||
DamageDestroyFunc damageDestroy;
|
DamageDestroyFunc damageDestroy;
|
||||||
DamageMarkerFunc damageMarker;
|
|
||||||
|
|
||||||
Bool reportAfter;
|
Bool reportAfter;
|
||||||
RegionRec pendingDamage; /* will be flushed post submission at the latest */
|
RegionRec pendingDamage; /* will be flushed post submission at the latest */
|
||||||
RegionRec backupDamage; /* for use with damageMarker */
|
|
||||||
ScreenPtr pScreen;
|
ScreenPtr pScreen;
|
||||||
PrivateRec *devPrivates;
|
PrivateRec *devPrivates;
|
||||||
} DamageRec;
|
} DamageRec;
|
||||||
|
|
Loading…
Reference in New Issue