diff --git a/miext/damage/damage.c b/miext/damage/damage.c index 0ba4f251f..b15b5b31c 100755 --- a/miext/damage/damage.c +++ b/miext/damage/damage.c @@ -742,9 +742,13 @@ damageCopyArea(DrawablePtr pSrc, /* The driver will only call SourceValidate() when pSrc != pDst, * but the software sprite (misprite.c) always need to know when a * drawable is copied so it can remove the sprite. See #1030. */ - if ((pSrc == pDst) && pSrc->pScreen->SourceValidate) - (*pSrc->pScreen->SourceValidate) (pSrc, srcx, srcy, width, height); - + if ((pSrc == pDst) && pSrc->pScreen->SourceValidate && + pSrc->type == DRAWABLE_WINDOW && + ((WindowPtr)pSrc)->viewable) + { + (*pSrc->pScreen->SourceValidate) (pSrc, srcx, srcy, width, height); + } + if (checkGCDamage (pDst, pGC)) { BoxRec box;