diff options
author | reed <reed@google.com> | 2014-10-08 05:17:12 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-10-08 05:17:12 -0700 |
commit | 9d93c2ebb31bf996905532446644f242339a774e (patch) | |
tree | 0dc32abf1e1d173f8fee8af5b6ff85ed46255e5d /src/core/SkBitmapProcState.cpp | |
parent | d61ef01f176328619d29045da3ec72e4732276b6 (diff) |
Add SkCachedData and use it for SkMipMap
This reverts commit 37c5a815d8ea33247968212ef4cc83394ceee1bc.
TBR=mtklein
Review URL: https://codereview.chromium.org/635333002
Diffstat (limited to 'src/core/SkBitmapProcState.cpp')
-rw-r--r-- | src/core/SkBitmapProcState.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/core/SkBitmapProcState.cpp b/src/core/SkBitmapProcState.cpp index 6c1dc30449..2a449d6d8f 100644 --- a/src/core/SkBitmapProcState.cpp +++ b/src/core/SkBitmapProcState.cpp @@ -260,11 +260,14 @@ bool SkBitmapProcState::possiblyScaleImage() { if (scaleSqd > SK_Scalar1) { fCurrMip.reset(SkMipMapCache::FindAndRef(fOrigBitmap)); if (NULL == fCurrMip.get()) { - fCurrMip.reset(SkMipMap::Build(fOrigBitmap)); + fCurrMip.reset(SkMipMapCache::AddAndRef(fOrigBitmap)); if (NULL == fCurrMip.get()) { return false; } - SkMipMapCache::Add(fOrigBitmap, fCurrMip); + } + // diagnostic for a crasher... + if (NULL == fCurrMip->data()) { + sk_throw(); } SkScalar levelScale = SkScalarInvert(SkScalarSqrt(scaleSqd)); @@ -280,6 +283,9 @@ bool SkBitmapProcState::possiblyScaleImage() { fBitmap = &fScaledBitmap; fFilterLevel = SkPaint::kLow_FilterLevel; return true; + } else { + // failed to extract, so release the mipmap + fCurrMip.reset(NULL); } } |