From 7570f61934cc42f200fac6b4dca18d990d8001ca Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Sat, 17 Mar 2012 23:57:46 +0000 Subject: [PATCH] sna/traps: Upon reducing an ADD to a SRC, we need to apply the pending clear Signed-off-by: Chris Wilson --- src/sna/sna_trapezoids.c | 9 +++++++-- 1 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/sna/sna_trapezoids.c b/src/sna/sna_trapezoids.c index 3a93450..fe63797 100644 --- a/src/sna/sna_trapezoids.c +++ b/src/sna/sna_trapezoids.c @@ -4077,6 +4077,7 @@ trapezoid_span_inplace(CARD8 op, PicturePtr src, PicturePtr dst, struct sna_pixmap *priv; RegionRec region; uint32_t color; + bool unbounded; int16_t dst_x, dst_y; int dx, dy; int n; @@ -4125,10 +4126,13 @@ trapezoid_span_inplace(CARD8 op, PicturePtr src, PicturePtr dst, return false; } + unbounded = false; switch (op) { case PictOpAdd: - if (priv->clear && priv->clear_color == 0) + if (priv->clear && priv->clear_color == 0) { + unbounded = true; op = PictOpSrc; + } if ((color >> 24) == 0) return true; break; @@ -4137,6 +4141,7 @@ trapezoid_span_inplace(CARD8 op, PicturePtr src, PicturePtr dst, return true; if ((color >> 24) == 0) return true; + unbounded = true; case PictOpSrc: break; default: @@ -4237,7 +4242,7 @@ trapezoid_span_inplace(CARD8 op, PicturePtr src, PicturePtr dst, inplace.opacity = color >> 24; tor_render(NULL, &tor, (void*)&inplace, - dst->pCompositeClip, span, op == PictOpIn); + dst->pCompositeClip, span, unbounded); tor_fini(&tor); -- 1.7.9.1