| Index: src/core/SkRecordDraw.cpp
|
| diff --git a/src/core/SkRecordDraw.cpp b/src/core/SkRecordDraw.cpp
|
| index ca9c1b6f785a0349059133743e6c3e618613e2a9..dca19df1005cab64277135314255f92d8b5f968c 100644
|
| --- a/src/core/SkRecordDraw.cpp
|
| +++ b/src/core/SkRecordDraw.cpp
|
| @@ -341,34 +341,27 @@ private:
|
| return true;
|
| }
|
|
|
| - // Unusual Xfermodes require us to process a saved layer
|
| + // Unusual blendmodes require us to process a saved layer
|
| // even with operations outisde the clip.
|
| // For example, DstIn is used by masking layers.
|
| // https://code.google.com/p/skia/issues/detail?id=1291
|
| // https://crbug.com/401593
|
| - SkXfermode* xfermode = paint->getXfermode();
|
| - SkXfermode::Mode mode;
|
| - // SrcOver is ok, and is also the common case with a nullptr xfermode.
|
| - // So we should make that the fast path and bypass the mode extraction
|
| - // and test.
|
| - if (xfermode && xfermode->asMode(&mode)) {
|
| - switch (mode) {
|
| - // For each of the following transfer modes, if the source
|
| - // alpha is zero (our transparent black), the resulting
|
| - // blended alpha is not necessarily equal to the original
|
| - // destination alpha.
|
| - case SkXfermode::kClear_Mode:
|
| - case SkXfermode::kSrc_Mode:
|
| - case SkXfermode::kSrcIn_Mode:
|
| - case SkXfermode::kDstIn_Mode:
|
| - case SkXfermode::kSrcOut_Mode:
|
| - case SkXfermode::kDstATop_Mode:
|
| - case SkXfermode::kModulate_Mode:
|
| - return true;
|
| - break;
|
| - default:
|
| - break;
|
| - }
|
| + switch (paint->getBlendMode()) {
|
| + // For each of the following transfer modes, if the source
|
| + // alpha is zero (our transparent black), the resulting
|
| + // blended alpha is not necessarily equal to the original
|
| + // destination alpha.
|
| + case SkBlendMode::kClear:
|
| + case SkBlendMode::kSrc:
|
| + case SkBlendMode::kSrcIn:
|
| + case SkBlendMode::kDstIn:
|
| + case SkBlendMode::kSrcOut:
|
| + case SkBlendMode::kDstATop:
|
| + case SkBlendMode::kModulate:
|
| + return true;
|
| + break;
|
| + default:
|
| + break;
|
| }
|
| }
|
| return false;
|
|
|