From: Søren Sandmann Pedersen Date: Sat, 29 Nov 2008 19:53:57 +0000 (-0500) Subject: Fix various problems in FbCombineMultiplyC X-Git-Tag: 1.0_branch~965 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=254e62159b4a8652c1dd9c47d0e5e0d0ff2ced3a;p=profile%2Fivi%2Fpixman.git Fix various problems in FbCombineMultiplyC Don't read the destination unless we have to. fbByteMulAddC() produces its result in its first argument, not its last. --- diff --git a/pixman/pixman-combine.c.template b/pixman/pixman-combine.c.template index ca3f351..f981392 100644 --- a/pixman/pixman-combine.c.template +++ b/pixman/pixman-combine.c.template @@ -391,20 +391,21 @@ fbCombineMultiplyC (pixman_implementation_t *imp, pixman_op_t op, for (i = 0; i < width; ++i) { comp4_t m = *(mask + i); comp4_t s = combineMask (src, mask, i); - comp4_t d = *(dest + i); - comp4_t r = d; - comp4_t dest_ia = Alpha (~d); + + fbCombineMaskValueC (&s, &m); if (m == 0) continue; - fbCombineMaskValueC (&s, &m); - m = ~m; if (m != 0) { + comp4_t d = *(dest + i); + comp4_t r = d; + comp4_t dest_ia = Alpha (~d); + FbByteAddMulC (r, m, s, dest_ia); - FbByteMulAddC (s, d, r); + FbByteMulAddC (r, s, d); } *(dest + i) = r;