diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c index bc51112c..b3bea6af 100644 --- a/src/sna/sna_accel.c +++ b/src/sna/sna_accel.c @@ -2525,9 +2525,15 @@ sna_put_image(DrawablePtr drawable, GCPtr gc, int depth, region.extents.y2 = region.extents.y1 + h; region.data = NULL; - RegionIntersect(®ion, ®ion, gc->pCompositeClip); - if (!RegionNotEmpty(®ion)) - return; + if (!region_is_singular(gc->pCompositeClip) || + gc->pCompositeClip->extents.x1 > region.extents.x1 || + gc->pCompositeClip->extents.y1 > region.extents.y1 || + gc->pCompositeClip->extents.x2 < region.extents.x2 || + gc->pCompositeClip->extents.y2 < region.extents.y2) { + RegionIntersect(®ion, ®ion, gc->pCompositeClip); + if (!RegionNotEmpty(®ion)) + return; + } RegionTranslate(®ion, dx, dy);