summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/sna/sna_dri2.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/sna/sna_dri2.c b/src/sna/sna_dri2.c
index f2f2c1d3..4ee76627 100644
--- a/src/sna/sna_dri2.c
+++ b/src/sna/sna_dri2.c
@@ -1421,25 +1421,30 @@ sna_dri2_copy_region(DrawablePtr draw,
PixmapPtr pixmap = get_drawable_pixmap(draw);
struct sna *sna = to_sna_from_pixmap(pixmap);
- DBG(("%s: pixmap=%ld, src=%u (refs=%d/%d, flush=%d, attach=%d) , dst=%u (refs=%d/%d, flush=%d, attach=%d)\n",
+ DBG(("%s: pixmap=%ld, src=%u (attach=%d, refs=%d/%d, flush=%d, stale=%d) , dst=%u (attach=%d, refs=%d/%d, flush=%d, stale=%d)\n",
__FUNCTION__,
pixmap->drawable.serialNumber,
get_private(src)->bo->handle,
+ src->attachment,
get_private(src)->refcnt,
get_private(src)->bo->refcnt,
get_private(src)->bo->flush,
- src->attachment,
+ get_private(src)->stale,
get_private(dst)->bo->handle,
+ dst->attachment,
get_private(dst)->refcnt,
get_private(dst)->bo->refcnt,
get_private(dst)->bo->flush,
- dst->attachment));
+ get_private(dst)->stale));
assert(src != dst);
assert(get_private(src)->refcnt);
assert(get_private(dst)->refcnt);
+ if (get_private(src)->stale)
+ return;
+
assert(get_private(src)->bo != get_private(dst)->bo);
assert(get_private(src)->bo->refcnt);