| Index: src/codec/SkBmpCodec.cpp
|
| diff --git a/src/codec/SkBmpCodec.cpp b/src/codec/SkBmpCodec.cpp
|
| index 3302e4f752eb74826b6142d1d3e04535e393f816..f5a87709f779b25d4f4bba4abd160af46e62fe3f 100644
|
| --- a/src/codec/SkBmpCodec.cpp
|
| +++ b/src/codec/SkBmpCodec.cpp
|
| @@ -472,6 +472,14 @@ bool SkBmpCodec::ReadHeader(SkStream* stream, bool inIco, SkCodec** codecOut) {
|
| }
|
|
|
| if (codecOut) {
|
| + // BMPs-in-ICOs contain an alpha mask after the image which means we
|
| + // cannot guarantee that an image is opaque, even if the bmp thinks
|
| + // it is.
|
| + bool isOpaque = kOpaque_SkAlphaType == alphaType;
|
| + if (inIco) {
|
| + alphaType = kUnpremul_SkAlphaType;
|
| + }
|
| +
|
| // Set the image info
|
| const SkImageInfo& imageInfo = SkImageInfo::Make(width, height,
|
| colorType, alphaType);
|
| @@ -482,7 +490,7 @@ bool SkBmpCodec::ReadHeader(SkStream* stream, bool inIco, SkCodec** codecOut) {
|
| // We require streams to have a memory base for Bmp-in-Ico decodes.
|
| SkASSERT(!inIco || nullptr != stream->getMemoryBase());
|
| *codecOut = new SkBmpStandardCodec(imageInfo, stream, bitsPerPixel, numColors,
|
| - bytesPerColor, offset - bytesRead, rowOrder, inIco);
|
| + bytesPerColor, offset - bytesRead, rowOrder, isOpaque, inIco);
|
| return true;
|
| case kBitMask_BmpInputFormat:
|
| // Bmp-in-Ico must be standard mode
|
|
|