From b02f866d67d60538368619849f2acda4c1706476 Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Wed, 22 Feb 2012 09:15:25 +0000 Subject: [PATCH] sna: Ensure we restore the shadow pixels before uploading CPU data Reported-by: Joe Nahmias Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=46425 Signed-off-by: Chris Wilson --- src/sna/sna_accel.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c index 9447cf7a..8fa59a66 100644 --- a/src/sna/sna_accel.c +++ b/src/sna/sna_accel.c @@ -1618,8 +1618,12 @@ sna_pixmap_move_area_to_gpu(PixmapPtr pixmap, BoxPtr box, unsigned int flags) if (sna_damage_is_all(&priv->gpu_damage, pixmap->drawable.width, - pixmap->drawable.height)) + pixmap->drawable.height)) { + sna_damage_destroy(&priv->cpu_damage); + priv->undamaged = false; + list_del(&priv->list); goto done; + } if (priv->gpu_bo == NULL) { unsigned flags; @@ -1659,10 +1663,13 @@ sna_pixmap_move_area_to_gpu(PixmapPtr pixmap, BoxPtr box, unsigned int flags) } if (priv->mapped) { + pixmap->devPrivate.ptr = NULL; + priv->mapped = false; + } + if (pixmap->devPrivate.ptr == NULL) { assert(priv->stride); pixmap->devPrivate.ptr = priv->ptr; pixmap->devKind = priv->stride; - priv->mapped = false; } assert(pixmap->devPrivate.ptr != NULL);