/* Requests */
#define X_DamageQueryVersion 0
#define X_DamageCreate 1
#define X_DamageDestroy 2
#define X_DamageSubtract 3
#define X_DamageAdd 4
/* Events */
#define XDamageNotify 0
#define XDamageNumberEvents (XDamageNotify + 1)
/* Constants */
#define XDamageReportRawRectangles 0 // 有新的区域
#define XDamageReportDeltaRectangles 1 // 区域有变化
#define XDamageReportBoundingBox 2 // 边界有变化
#define XDamageReportNonEmpty 3 // 空至非空转换
static int (*ProcDamageVector[XDamageNumberRequests]) (ClientPtr) = {
ProcDamageQueryVersion, ProcDamageCreate, ProcDamageDestroy,
ProcDamageSubtract, ProcDamageAdd,
};
// 提交渲染命令前调用该函数,二选一:记录或者报告;可由调用者选择。
1. 报告:指定报告触发条件,以及报告回调函数,当该drawable满足条件时回调通知
2. 记录:记录drawable所有的变化区域。如:modesetting记录screen pixmap的变化,然后更新显示。
void DamageRegionAppend(DrawablePtr pDrawable, RegionPtr pRegion);
// 提交渲染命令后调用该函数,处理reportAfter的damageReport,或者记录变化区域
void DamageRegionProcessPending(DrawablePtr pDrawable); |