From 7ea44997553ffdf57b346dc9d83742c511c9e5a4 Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Mon, 20 Feb 2012 23:50:42 +0000 Subject: [PATCH] sna: Restore the shadow pixels when reducing CPU damage to all Reported-by: Joe Nahmias References: https://bugs.freedesktop.org/show_bug.cgi?id=46346 Signed-off-by: Chris Wilson --- src/sna/sna_accel.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c index aab85d85..c8fcc75b 100644 --- a/src/sna/sna_accel.c +++ b/src/sna/sna_accel.c @@ -1215,8 +1215,17 @@ sna_drawable_move_region_to_cpu(DrawablePtr drawable, if (sna_damage_is_all(&priv->cpu_damage, pixmap->drawable.width, - pixmap->drawable.height)) + pixmap->drawable.height)) { + sna_damage_destroy(&priv->gpu_damage); + sna_pixmap_free_gpu(sna, priv); + priv->undamaged = false; + + if (pixmap->devPrivate.ptr == NULL && + !sna_pixmap_alloc_cpu(sna, pixmap, priv, false)) + return false; + goto out; + } if (priv->clear) return _sna_pixmap_move_to_cpu(pixmap, flags);