| Index: src/core/SkPictureShader.cpp
|
| diff --git a/src/core/SkPictureShader.cpp b/src/core/SkPictureShader.cpp
|
| index ab599322a57eff618650233aa34da8c8f863760b..92e615734380dd02cc1367bfcc3108e54cef1022 100644
|
| --- a/src/core/SkPictureShader.cpp
|
| +++ b/src/core/SkPictureShader.cpp
|
| @@ -10,7 +10,6 @@
|
| #include "SkBitmap.h"
|
| #include "SkBitmapProcShader.h"
|
| #include "SkCanvas.h"
|
| -#include "SkImage.h"
|
| #include "SkImageGenerator.h"
|
| #include "SkMatrixUtils.h"
|
| #include "SkPicture.h"
|
| @@ -218,28 +217,18 @@
|
| if (!SkResourceCache::Find(key, BitmapShaderRec::Visitor, &tileShader)) {
|
| SkMatrix tileMatrix;
|
| tileMatrix.setRectToRect(fTile, SkRect::MakeIWH(tileSize.width(), tileSize.height()),
|
| - SkMatrix::kFill_ScaleToFit);
|
| -
|
| - SkAutoTDelete<SkImageGenerator> tileGenerator(
|
| - SkImageGenerator::NewFromPicture(tileSize, fPicture, &tileMatrix, nullptr));
|
| - if (!tileGenerator) {
|
| - return nullptr;
|
| - }
|
| -
|
| - // Grab this before the generator goes poof!
|
| - const SkImageInfo tileInfo = tileGenerator->getInfo();
|
| -
|
| - SkAutoTUnref<SkImage> tileImage(SkImage::NewFromGenerator(tileGenerator.detach()));
|
| - if (!tileImage) {
|
| + SkMatrix::kFill_ScaleToFit);
|
| + SkBitmap bm;
|
| + if (!SkDEPRECATED_InstallDiscardablePixelRef(
|
| + SkImageGenerator::NewFromPicture(tileSize, fPicture, &tileMatrix, nullptr), &bm)) {
|
| return nullptr;
|
| }
|
|
|
| SkMatrix shaderMatrix = this->getLocalMatrix();
|
| shaderMatrix.preScale(1 / tileScale.width(), 1 / tileScale.height());
|
| - tileShader.reset(tileImage->newShader(fTmx, fTmy, &shaderMatrix));
|
| -
|
| - SkResourceCache::Add(new BitmapShaderRec(key, tileShader.get(),
|
| - tileInfo.getSafeSize(tileInfo.minRowBytes())));
|
| + tileShader.reset(CreateBitmapShader(bm, fTmx, fTmy, &shaderMatrix));
|
| +
|
| + SkResourceCache::Add(new BitmapShaderRec(key, tileShader.get(), bm.getSize()));
|
| }
|
|
|
| return tileShader.detach();
|
|
|