From 254e62159b4a8652c1dd9c47d0e5e0d0ff2ced3a Mon Sep 17 00:00:00 2001 From: =?utf8?q?S=C3=B8ren=20Sandmann=20Pedersen?= Date: Sat, 29 Nov 2008 14:53:57 -0500 Subject: [PATCH] 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. --- pixman/pixman-combine.c.template | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) 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; -- 2.7.4