Chromium Code Reviews| Index: src/effects/gradients/SkGradientShader.cpp |
| diff --git a/src/effects/gradients/SkGradientShader.cpp b/src/effects/gradients/SkGradientShader.cpp |
| index 27761993461ba7761a8afc57c36eac9ec2754cc4..e8fbb98ca1d0255d393f46c04e848f2f587c7c95 100644 |
| --- a/src/effects/gradients/SkGradientShader.cpp |
| +++ b/src/effects/gradients/SkGradientShader.cpp |
| @@ -513,13 +513,17 @@ const uint16_t* SkGradientShaderBase::getCache16() const { |
| const SkPMColor* SkGradientShaderBase::getCache32() const { |
| if (fCache32 == NULL) { |
| - // double the count for dither entries |
| - const int entryCount = kCache32Count * 4; |
| - const size_t allocSize = sizeof(SkPMColor) * entryCount; |
| + const size_t rowBytes = kCache32Count * sizeof(SkPMColor); |
| + |
| + SkImageInfo info; |
| + info.fWidth = kCache32Count; |
| + info.fHeight = 4; // for our 4 dither rows |
| + info.fAlphaType = kPremul_SkAlphaType; |
| + info.fColorType = kPMColor_SkColorType; |
| if (NULL == fCache32PixelRef) { |
|
scroggo
2013/11/19 18:17:09
If fCache32PixelRef exists, should we get info fro
reed1
2013/11/20 20:56:56
not sure it matters, since it is always the same.
|
| fCache32PixelRef = SkNEW_ARGS(SkMallocPixelRef, |
| - (NULL, allocSize, NULL)); |
| + (info, NULL, rowBytes, NULL, true)); |
| } |
| fCache32 = (SkPMColor*)fCache32PixelRef->getAddr(); |
| if (fColorCount == 2) { |
| @@ -542,7 +546,7 @@ const SkPMColor* SkGradientShaderBase::getCache32() const { |
| if (fMapper) { |
| SkMallocPixelRef* newPR = SkNEW_ARGS(SkMallocPixelRef, |
| - (NULL, allocSize, NULL)); |
| + (info, NULL, rowBytes, NULL, true)); |
| SkPMColor* linear = fCache32; // just computed linear data |
| SkPMColor* mapped = (SkPMColor*)newPR->getAddr(); // storage for mapped data |
| SkUnitMapper* map = fMapper; |