Index: src/core/SkXfermode.cpp |
diff --git a/src/core/SkXfermode.cpp b/src/core/SkXfermode.cpp |
index 20d88162a43d2b0d3bafa005c1695113ef947cd4..728023449454e481408e913d5a80dbabdcd5f2d8 100644 |
--- a/src/core/SkXfermode.cpp |
+++ b/src/core/SkXfermode.cpp |
@@ -1671,6 +1671,7 @@ void SkXfermode::Term() { |
extern SkProcCoeffXfermode* SkPlatformXfermodeFactory(const ProcCoeff& rec, |
SkXfermode::Mode mode); |
+extern SkXfermodeProc SkPlatformXfermodeProcFactory(SkXfermode::Mode mode); |
SkXfermode* SkXfermode::Create(Mode mode) { |
SkASSERT(SK_ARRAY_COUNT(gProcCoeffs) == kModeCount); |
@@ -1692,7 +1693,13 @@ SkXfermode* SkXfermode::Create(Mode mode) { |
SkXfermode* xfer = gCachedXfermodes[mode]; |
if (NULL == xfer) { |
- const ProcCoeff& rec = gProcCoeffs[mode]; |
+ ProcCoeff rec = gProcCoeffs[mode]; |
+ |
+ SkXfermodeProc pp = SkPlatformXfermodeProcFactory(mode); |
+ |
+ if (pp != NULL) { |
+ rec.fProc = pp; |
+ } |
// check if we have a platform optim for that |
SkProcCoeffXfermode* xfm = SkPlatformXfermodeFactory(rec, mode); |