diff options
author | 2014-04-17 16:46:07 +0000 | |
---|---|---|
committer | 2014-04-17 16:46:07 +0000 | |
commit | 84f7a06ff926eeddd2fb753795359f3b39a0c0eb (patch) | |
tree | c42472d9ef4967b2f3c789f34ef2bd12c57ac1ab /src | |
parent | 273a00d14f78c34c4654bf6aef3e5bdb7cf105d2 (diff) |
add some asserts for mipmaps, and cleanup fFilterLevel if mipping failed
BUG=skia:
R=scroggo@google.com, humper@google.com
Author: reed@google.com
Review URL: https://codereview.chromium.org/240633003
git-svn-id: http://skia.googlecode.com/svn/trunk@14241 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src')
-rw-r--r-- | src/core/SkBitmapProcState.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/core/SkBitmapProcState.cpp b/src/core/SkBitmapProcState.cpp index 8874e7b445..1936f6a23b 100644 --- a/src/core/SkBitmapProcState.cpp +++ b/src/core/SkBitmapProcState.cpp @@ -263,6 +263,7 @@ bool SkBitmapProcState::possiblyScaleImage() { if (mip) { fScaledCacheID = SkScaledImageCache::AddAndLockMip(fOrigBitmap, mip); + SkASSERT(mip->getRefCnt() > 1); mip->unref(); // the cache took a ref SkASSERT(fScaledCacheID); } @@ -403,6 +404,12 @@ bool SkBitmapProcState::chooseProcs(const SkMatrix& inv, const SkPaint& paint) { return false; } + // If we are "still" kMedium_FilterLevel, then the request was not fulfilled by possiblyScale, + // so we downgrade to kLow (so the rest of the sniffing code can assume that) + if (SkPaint::kMedium_FilterLevel == fFilterLevel) { + fFilterLevel = SkPaint::kLow_FilterLevel; + } + bool trivialMatrix = (fInvMatrix.getType() & ~SkMatrix::kTranslate_Mask) == 0; bool clampClamp = SkShader::kClamp_TileMode == fTileModeX && SkShader::kClamp_TileMode == fTileModeY; |