diff options
Diffstat (limited to 'src/effects/gradients/SkGradientShader.cpp')
-rw-r--r-- | src/effects/gradients/SkGradientShader.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/effects/gradients/SkGradientShader.cpp b/src/effects/gradients/SkGradientShader.cpp index be60dee15e..0840d7c55e 100644 --- a/src/effects/gradients/SkGradientShader.cpp +++ b/src/effects/gradients/SkGradientShader.cpp @@ -10,7 +10,6 @@ #include "SkGradientShaderPriv.h" #include "SkHalf.h" #include "SkLinearGradient.h" -#include "SkMallocPixelRef.h" #include "SkRadialGradient.h" #include "SkTwoPointConicalGradient.h" #include "SkSweepGradient.h" @@ -411,9 +410,12 @@ SkGradientShaderBase::GradientShaderCache::GradientShaderCache( { // Only initialize the cache in getCache32. fCache32 = nullptr; + fCache32PixelRef = nullptr; } -SkGradientShaderBase::GradientShaderCache::~GradientShaderCache() {} +SkGradientShaderBase::GradientShaderCache::~GradientShaderCache() { + SkSafeUnref(fCache32PixelRef); +} /* * r,g,b used to be SkFixed, but on gcc (4.2.1 mac and 4.6.3 goobuntu) in @@ -582,8 +584,8 @@ void SkGradientShaderBase::GradientShaderCache::initCache32(GradientShaderCache* const SkImageInfo info = SkImageInfo::MakeN32Premul(kCache32Count, kNumberOfDitherRows); SkASSERT(nullptr == cache->fCache32PixelRef); - cache->fCache32PixelRef = SkMallocPixelRef::MakeAllocate(info, 0, nullptr); - cache->fCache32 = (SkPMColor*)cache->fCache32PixelRef->pixels(); + cache->fCache32PixelRef = SkMallocPixelRef::NewAllocate(info, 0, nullptr); + cache->fCache32 = (SkPMColor*)cache->fCache32PixelRef->getAddr(); if (cache->fShader.fColorCount == 2) { Build32bitCache(cache->fCache32, cache->fShader.fOrigColors[0], cache->fShader.fOrigColors[1], kCache32Count, cache->fCacheAlpha, |