jdk/src/share/native/sun/java2d/loops/LoopMacros.h
changeset 549 4273b1234967
parent 2 90ce3da70b43
child 715 f16baef3a20e
--- a/jdk/src/share/native/sun/java2d/loops/LoopMacros.h	Mon Apr 28 11:06:18 2008 -0700
+++ b/jdk/src/share/native/sun/java2d/loops/LoopMacros.h	Mon Apr 28 15:57:46 2008 -0700
@@ -1610,8 +1610,12 @@
                        MUL8(SRC_PREFIX ## A, mixValSrc); \
                 MultMultAddAndStore4ByteArgbComps(dst, mixValDst, dst, \
                                                   mixValSrc, SRC_PREFIX); \
-                Store ## DST ## From4ByteArgb(DST_PTR, pix, PIXEL_INDEX, \
-                                              dstA, dstR, dstG, dstB); \
+                if (!(DST ## IsOpaque) && \
+                    !(DST ## IsPremultiplied) && dstA && dstA < 255) { \
+                    DivideAndStore4ByteArgbComps(dst, dst, dstA); \
+                } \
+                Store ## DST ## From4ByteArgbComps(DST_PTR, pix, \
+                                                   PIXEL_INDEX, dst); \
             } else { \
                 Store ## DST ## PixelData(DST_PTR, PIXEL_INDEX, \
                                           FG_PIXEL, PREFIX); \
@@ -1793,8 +1797,12 @@
                 dstR = gammaLut[dstR]; \
                 dstG = gammaLut[dstG]; \
                 dstB = gammaLut[dstB]; \
-                Store ## DST ## From4ByteArgb(DST_PTR, pix, PIXEL_INDEX, \
-                                              dstA, dstR, dstG, dstB); \
+                if (!(DST ## IsOpaque) && \
+                    !(DST ## IsPremultiplied) && dstA && dstA < 255) { \
+                    DivideAndStore4ByteArgbComps(dst, dst, dstA); \
+                } \
+                Store ## DST ## From4ByteArgbComps(DST_PTR, pix, \
+                                                   PIXEL_INDEX, dst); \
             } else { \
                 Store ## DST ## PixelData(DST_PTR, PIXEL_INDEX, \
                                           FG_PIXEL, PREFIX); \