Revert of Remove SkDEPRECATED_InstallDiscardablePixelRef from SkPictureShader (patchs...
authorcaryclark <caryclark@google.com>
Wed, 21 Oct 2015 18:39:06 +0000 (11:39 -0700)
committerCommit bot <commit-bot@chromium.org>
Wed, 21 Oct 2015 18:39:06 +0000 (11:39 -0700)
Reason for revert:
Test to see if patch fixes Nexus 6.

Original issue's description:
> Remove SkDEPRECATED_InstallDiscardablePixelRef from SkPictureShader
>
> Use an SkImage generator/shader instead.
>
> R=reed@google.com
>
> Committed: https://skia.googlesource.com/skia/+/fa694ad067976a5b713eec0b6f92ba5efeb0aa9d

TBR=reed@google.com,fmalita@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

Review URL: https://codereview.chromium.org/1407043008

src/core/SkPictureShader.cpp

index ab59932..92e6157 100644 (file)
@@ -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 @@ SkShader* SkPictureShader::refBitmapShader(const SkMatrix& viewMatrix, const SkM
     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));
+        tileShader.reset(CreateBitmapShader(bm, fTmx, fTmy, &shaderMatrix));
 
-        SkResourceCache::Add(new BitmapShaderRec(key, tileShader.get(),
-                                                 tileInfo.getSafeSize(tileInfo.minRowBytes())));
+        SkResourceCache::Add(new BitmapShaderRec(key, tileShader.get(), bm.getSize()));
     }
 
     return tileShader.detach();