From 9a2e59bfba6748325918f895b3e58351c7eb4baa Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Mon, 31 Oct 2011 11:56:53 +0000 Subject: [PATCH] sna: Fix reversal of zero/wide for PolyRectangle Reported-by: Clemens Eisserer Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=42414 Signed-off-by: Chris Wilson --- src/sna/sna_accel.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c index 4cbd1942..9ce142d8 100644 --- a/src/sna/sna_accel.c +++ b/src/sna/sna_accel.c @@ -4247,7 +4247,7 @@ sna_poly_rectangle_blt(DrawablePtr drawable, struct kgem_bo *bo, struct sna_damage **damage, GCPtr gc, int n, xRectangle *r, - const BoxRec *extents, bool clipped) + const BoxRec *extents, unsigned clipped) { struct sna *sna = to_sna_from_drawable(drawable); PixmapPtr pixmap = get_drawable_pixmap(drawable); @@ -4255,24 +4255,20 @@ sna_poly_rectangle_blt(DrawablePtr drawable, BoxRec boxes[512], *b = boxes, *const last_box = boxes+ARRAY_SIZE(boxes); int16_t dx, dy; static void * const jump[] = { - &&zero, - &&zero_clipped, &&wide, + &&zero, &&wide_clipped, + &&zero_clipped, }; - unsigned v; DBG(("%s: alu=%d, width=%d, fg=%08lx, damge=%p, clipped?=%d\n", __FUNCTION__, gc->alu, gc->lineWidth, gc->fgPixel, damage, clipped)); - if (!sna_fill_init_blt(&fill, sna, pixmap, bo, gc->alu, gc->fgPixel)) return FALSE; get_drawable_deltas(drawable, pixmap, &dx, &dy); - v = !!clipped; - v |= (gc->lineWidth <= 1) << 1; - goto *jump[v]; + goto *jump[(gc->lineWidth <= 1) | clipped]; zero: dx += drawable->x;