diff options
author | 2016-08-05 14:50:19 -0700 | |
---|---|---|
committer | 2016-08-05 14:50:19 -0700 | |
commit | 4c1abdcd21d65bb34a6b4aea969ef4485e117e67 (patch) | |
tree | 5c40789cd3815eea5a29769750ec03c6d17d75cf /src/image/SkImage_Raster.cpp | |
parent | 462d0148a5c9433a1f9c26d947a07ca7f70cf09d (diff) |
use tmp allocator for images in temp shaders
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2222593003
Review-Url: https://codereview.chromium.org/2222593003
Diffstat (limited to 'src/image/SkImage_Raster.cpp')
-rw-r--r-- | src/image/SkImage_Raster.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/image/SkImage_Raster.cpp b/src/image/SkImage_Raster.cpp index 645a3db64b..67d521e345 100644 --- a/src/image/SkImage_Raster.cpp +++ b/src/image/SkImage_Raster.cpp @@ -7,6 +7,7 @@ #include "SkImage_Base.h" #include "SkBitmap.h" +#include "SkBitmapProcShader.h" #include "SkCanvas.h" #include "SkColorTable.h" #include "SkData.h" @@ -254,7 +255,8 @@ sk_sp<SkImage> SkMakeImageFromPixelRef(const SkImageInfo& info, SkPixelRef* pr, return sk_make_sp<SkImage_Raster>(info, pr, pixelRefOrigin, rowBytes); } -sk_sp<SkImage> SkMakeImageFromRasterBitmap(const SkBitmap& bm, SkCopyPixelsMode cpm) { +sk_sp<SkImage> SkMakeImageFromRasterBitmap(const SkBitmap& bm, SkCopyPixelsMode cpm, + SkTBlitterAllocator* allocator) { bool hasColorTable = false; if (kIndex_8_SkColorType == bm.colorType()) { SkAutoLockPixels autoLockPixels(bm); @@ -274,7 +276,12 @@ sk_sp<SkImage> SkMakeImageFromRasterBitmap(const SkBitmap& bm, SkCopyPixelsMode image = SkImage::MakeRasterCopy(pmap); } } else { - image = sk_make_sp<SkImage_Raster>(bm, kNever_SkCopyPixelsMode == cpm); + if (allocator) { + image.reset(allocator->createT<SkImage_Raster>(bm, kNever_SkCopyPixelsMode == cpm)); + image.get()->ref(); // account for the allocator being an owner + } else { + image = sk_make_sp<SkImage_Raster>(bm, kNever_SkCopyPixelsMode == cpm); + } } return image; } |