Mesa (master): dri: correct the damage.
Haihao Xiang
haihao at kemper.freedesktop.org
Tue Jan 6 03:27:18 UTC 2009
Module: Mesa
Branch: master
Commit: 7627c7f5dfa3b1bc7be9d1670668a81a70d9f64a
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=7627c7f5dfa3b1bc7be9d1670668a81a70d9f64a
Author: Xiang, Haihao <haihao.xiang at intel.com>
Date: Tue Jan 6 11:22:19 2009 +0800
dri: correct the damage.
Fixes bug #17234
---
src/mesa/drivers/dri/common/dri_util.c | 19 +++++++++++++++++--
1 files changed, 17 insertions(+), 2 deletions(-)
diff --git a/src/mesa/drivers/dri/common/dri_util.c b/src/mesa/drivers/dri/common/dri_util.c
index e9b1a80..ae79055 100644
--- a/src/mesa/drivers/dri/common/dri_util.c
+++ b/src/mesa/drivers/dri/common/dri_util.c
@@ -314,13 +314,28 @@ static void driReportDamage(__DRIdrawable *pdp,
static void driSwapBuffers(__DRIdrawable *dPriv)
{
__DRIscreen *psp = dPriv->driScreenPriv;
-
+ drm_clip_rect_t *rects;
+ int i;
+
if (!dPriv->numClipRects)
return;
psp->DriverAPI.SwapBuffers(dPriv);
- driReportDamage(dPriv, dPriv->pClipRects, dPriv->numClipRects);
+ rects = _mesa_malloc(sizeof(*rects) * dPriv->numClipRects);
+
+ if (!rects)
+ return;
+
+ for (i = 0; i < dPriv->numClipRects; i++) {
+ rects[i].x1 = dPriv->pClipRects[i].x1 - dPriv->x;
+ rects[i].y1 = dPriv->pClipRects[i].y1 - dPriv->y;
+ rects[i].x2 = dPriv->pClipRects[i].x2 - dPriv->x;
+ rects[i].y2 = dPriv->pClipRects[i].y2 - dPriv->y;
+ }
+
+ driReportDamage(dPriv, rects, dPriv->numClipRects);
+ _mesa_free(rects);
}
static int driDrawableGetMSC( __DRIscreen *sPriv, __DRIdrawable *dPriv,
More information about the mesa-commit
mailing list