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; |