Chris Wilson <ch...@chris-wilson.co.uk> writes:

> diff --git a/pixman/pixman-bits-image.c b/pixman/pixman-bits-image.c
> index 4e9ed14..a762c27 100644
> --- a/pixman/pixman-bits-image.c
> +++ b/pixman/pixman-bits-image.c
> @@ -1149,7 +1149,34 @@ bits_image_fetch_untransformed_repeat_normal 
> (bits_image_t *image,
>      while (y >= image->height)
>       y -= image->height;
>  
> -    while (width)
> +    if (image->width == 1)
> +    {
> +         /* XXX duplication from fetch solid */
> +         if (wide)
> +         {
> +                 uint64_t color;
> +                 uint64_t *b = (uint64_t *)buffer;
> +                 uint64_t *end;
> +
> +                 color = image->fetch_pixel_64 (image, 0, y);
> +
> +                 end = b + width;
> +                 while (b < end)
> +                         *(b++) = color;
> +         }
> +         else
> +         {
> +                 uint32_t color;
> +                 uint32_t *end;
> +
> +                 color = image->fetch_pixel_32 (image, 0, y);
> +
> +                 end = buffer + width;
> +                 while (buffer < end)
> +                         *(buffer++) = color;
> +         }
> +    }
> +    else while (width)
>      {
>       while (x < 0)
>           x += image->width;

Makes sense to me, but I think the duplicated code should be in a new
force_inline function "replicate_pixel()" or something. Also, maybe the
patch got mangled in the mail, but it looks to me like it uses
eight-space indents.


Soren
_______________________________________________
Pixman mailing list
Pixman@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/pixman

Reply via email to