Il giorno ven, 29/02/2008 alle 23.58 +0100, Denis Oliver Kropp ha
scritto:
> Rachel Bassett wrote:
> > By the way the change I made to cairo 1.4.12, was in
> > cairo-directfb-surface.c in function
> > _cairo_directfb_surface_clone_similar() where code
> > says .....
> > if (image_src->format == CAIRO_FORMAT_A1) {
> > /* A1 -> A8 */
> > for (i = 0; i < height; i++) {
> > for (j = src_x; j < src_x + width;
> > j++)
> > dst[j] = (src[j>>3] & (1 <<
> > (j&7))) ? 0xff : 0x00;
> > dst += pitch;
> > src += image_src->stride;
> > }
> > }
> > else {
> > /* A8 -> A8 */
> > for (i = 0; i < height; i++) {
> > direct_memcpy( dst+src_x, src+src_x,
> > sizeof(*dst)*width );
> > dst += pitch;
> > src += image_src->stride;
> > }
> > }
> >
> > where I changed the line direct_memcpy( dst+src_x,
> > src+src_x, sizeof(*dst)*width ); to direct_memcpy(
> > dst+src_x, src+src_x, (sizeof(*dst)*width)*4 ); as
> > *dst is an unsigned char and therefore a size of 1 x
> > by width (in pixels).
>
> Seems to be fixed, even in official git tree :)
>
>
> 655 if (image_src->format == CAIRO_FORMAT_A1) {
> 656 /* A1 -> A8 */
> 657 for (i = 0; i < height; i++) {
> 658 for (j = src_x; j < src_x + width; j++)
> 659 dst[j] = (src[j>>3] & (1 << (j&7))) ? 0xff : 0x00;
> 660 dst += pitch;
> 661 src += image_src->stride;
> 662 }
> 663 }
> 664 else {
> 665 int len;
> 666
> 667 if (image_src->format == CAIRO_FORMAT_A8) {
> 668 dst += src_x;
> 669 src += src_x;
> 670 len = width;
> 671 } else {
> 672 dst += src_x * 4;
> 673 src += src_x * 4;
> 674 len = width * 4;
> 675 }
> 676
> 677 for (i = 0; i < height; i++) {
> 678 direct_memcpy (dst+src_x, src+src_x, len);
> 679 dst += pitch;
> 680 src += image_src->stride;
> 681 }
> 682 }
>
Arrghh... either in the new backend there is a bug in clone_similar()!!
Look at the "src_x" being added twice to both "dst" and "src"!
Just committed a fix to the cairo repo. Please, update your copy.
--
Claudio Ciccani
[EMAIL PROTECTED]
[EMAIL PROTECTED]
http://directfb.org
_______________________________________________
directfb-users mailing list
[email protected]
http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-users