diff options
author | Mike Reed <reed@google.com> | 2014-11-11 15:31:22 -0500 |
---|---|---|
committer | Mike Reed <reed@google.com> | 2014-11-11 15:31:22 -0500 |
commit | e957df076cb9c82161ad88e20b1be80780d3025e (patch) | |
tree | fda0d92d68bd82a3c76bdc3ddaf39efd75d12aa5 | |
parent | e12770148a7d170e4845ebfae75ac38ae9cf4f32 (diff) | |
download | skia-e957df076cb9c82161ad88e20b1be80780d3025e.tar.gz |
Avoid the use of mipmaps to prevent memory leak
This is a temporary change only for M39, not intended
for the master tree.
BUG=420816
patch from issue 712163003
Review URL: https://codereview.chromium.org/691143008
-rw-r--r-- | src/core/SkBitmapProcState.cpp | 33 |
1 files changed, 3 insertions, 30 deletions
diff --git a/src/core/SkBitmapProcState.cpp b/src/core/SkBitmapProcState.cpp index 6c1dc3044..c3801e440 100644 --- a/src/core/SkBitmapProcState.cpp +++ b/src/core/SkBitmapProcState.cpp @@ -252,36 +252,9 @@ bool SkBitmapProcState::possiblyScaleImage() { SkASSERT(SkPaint::kMedium_FilterLevel == fFilterLevel); - /** - * Medium quality means use a mipmap for down-scaling, and just bilper - * for upscaling. Since we're examining the inverse matrix, we look for - * a scale > 1 to indicate down scaling by the CTM. - */ - if (scaleSqd > SK_Scalar1) { - fCurrMip.reset(SkMipMapCache::FindAndRef(fOrigBitmap)); - if (NULL == fCurrMip.get()) { - fCurrMip.reset(SkMipMap::Build(fOrigBitmap)); - if (NULL == fCurrMip.get()) { - return false; - } - SkMipMapCache::Add(fOrigBitmap, fCurrMip); - } - - SkScalar levelScale = SkScalarInvert(SkScalarSqrt(scaleSqd)); - SkMipMap::Level level; - if (fCurrMip->extractLevel(levelScale, &level)) { - SkScalar invScaleFixup = level.fScale; - fInvMatrix.postScale(invScaleFixup, invScaleFixup); - - const SkImageInfo info = fOrigBitmap.info().makeWH(level.fWidth, level.fHeight); - // todo: if we could wrap the fCurrMip in a pixelref, then we could just install - // that here, and not need to explicitly track it ourselves. - fScaledBitmap.installPixels(info, level.fPixels, level.fRowBytes); - fBitmap = &fScaledBitmap; - fFilterLevel = SkPaint::kLow_FilterLevel; - return true; - } - } + // HACK: Disable use of mipmaps in M39 since they do not use discardable + // memory in the cache. + fFilterLevel = SkPaint::kLow_FilterLevel; return false; } |