diff --git a/src/sna/sna_damage.h b/src/sna/sna_damage.h index d74d5de4..67c44c34 100644 --- a/src/sna/sna_damage.h +++ b/src/sna/sna_damage.h @@ -147,14 +147,15 @@ static inline void sna_damage_reduce_all(struct sna_damage **damage, if (*damage == NULL) return; - if ((*damage)->dirty && (*damage = _sna_damage_reduce(*damage)) == NULL) - return; - if ((*damage)->mode == DAMAGE_ADD && (*damage)->extents.x1 <= 0 && (*damage)->extents.y1 <= 0 && (*damage)->extents.x2 >= width && (*damage)->extents.y2 >= height) { + if ((*damage)->dirty && + (*damage = _sna_damage_reduce(*damage)) == NULL) + return; + if ((*damage)->region.data == NULL) *damage = _sna_damage_all(*damage, width, height); }