diff --git a/src/sna/sna_damage.h b/src/sna/sna_damage.h index fb661b26..11969129 100644 --- a/src/sna/sna_damage.h +++ b/src/sna/sna_damage.h @@ -36,7 +36,8 @@ static inline void sna_damage_combine(struct sna_damage **l, struct sna_damage *r, int dx, int dy) { - *l = _sna_damage_combine(*l, r, dx, dy); + assert(!DAMAGE_IS_ALL(*l)); + *l = _sna_damage_combine(*l, DAMAGE_PTR(r), dx, dy); } fastcall struct sna_damage *_sna_damage_add(struct sna_damage *damage, diff --git a/src/sna/sna_render.c b/src/sna/sna_render.c index ec2aaadf..f2395551 100644 --- a/src/sna/sna_render.c +++ b/src/sna/sna_render.c @@ -1869,6 +1869,7 @@ sna_render_composite_redirect(struct sna *sna, t->real_bo = op->dst.bo; t->real_damage = op->damage; if (op->damage) { + assert(!DAMAGE_IS_ALL(op->damage)); t->damage = sna_damage_create(); op->damage = &t->damage; } @@ -1899,8 +1900,10 @@ sna_render_composite_redirect_done(struct sna *sna, &t->box, 1); } if (t->damage) { + DBG(("%s: combining damage, offset=(%d, %d)\n", + __FUNCTION__, t->box.x1, t->box.y1)); sna_damage_combine(t->real_damage, t->damage, - -t->box.x1, -t->box.y1); + t->box.x1, t->box.y1); __sna_damage_destroy(t->damage); }