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 directfb-users@directfb.org http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-users