--- src/sna/sna_accel.c.orig 2013-02-19 13:49:42.000000000 +0400 +++ src/sna/sna_accel.c 2013-03-04 02:07:57.771626602 +0400 @@ -1614,8 +1614,7 @@ if (priv->mapped) { assert(!priv->shm && priv->stride); - pixmap->devPrivate.ptr = PTR(priv->ptr); - pixmap->devKind = priv->stride; + pixmap->devPrivate.ptr = NULL; priv->mapped = false; } @@ -1743,11 +1742,11 @@ done: if (flags & MOVE_WRITE) { - assert(DAMAGE_IS_ALL(priv->cpu_damage)); priv->source_count = SOURCE_BIAS; assert(priv->gpu_bo == NULL || priv->gpu_bo->proxy == NULL); if (priv->gpu_bo && priv->gpu_bo->domain != DOMAIN_GPU) { DBG(("%s: discarding inactive GPU bo\n", __FUNCTION__)); + assert(DAMAGE_IS_ALL(priv->cpu_damage)); sna_pixmap_free_gpu(sna, priv); } } @@ -1755,8 +1754,7 @@ if (priv->cpu_bo) { if ((flags & MOVE_ASYNC_HINT) == 0) { DBG(("%s: syncing CPU bo\n", __FUNCTION__)); - kgem_bo_sync__cpu_full(&sna->kgem, - priv->cpu_bo, flags & MOVE_WRITE); + kgem_bo_sync__cpu(&sna->kgem, priv->cpu_bo); assert(!priv->shm || !kgem_bo_is_busy(priv->cpu_bo)); } if (flags & MOVE_WRITE) {