Chromium Code Reviews| Index: src/core/SkPictureShader.cpp |
| diff --git a/src/core/SkPictureShader.cpp b/src/core/SkPictureShader.cpp |
| index 3919471b1bd43178f571fb5adb4a5391abb0d9d0..cc1a7b3af74ba1c43a77277b2765716e21d42a41 100644 |
| --- a/src/core/SkPictureShader.cpp |
| +++ b/src/core/SkPictureShader.cpp |
| @@ -102,12 +102,12 @@ SkPictureShader::SkPictureShader(const SkPicture* picture, TileMode tmx, TileMod |
| , fTmy(tmy) { |
| } |
| -SkShader* SkPictureShader::Create(const SkPicture* picture, TileMode tmx, TileMode tmy, |
| - const SkMatrix* localMatrix, const SkRect* tile) { |
| +sk_sp<SkShader> SkPictureShader::Make(const SkPicture* picture, TileMode tmx, TileMode tmy, |
| + const SkMatrix* localMatrix, const SkRect* tile) { |
| if (!picture || picture->cullRect().isEmpty() || (tile && tile->isEmpty())) { |
| - return SkShader::CreateEmptyShader(); |
| + return SkShader::MakeEmptyShader(); |
| } |
| - return new SkPictureShader(picture, tmx, tmy, localMatrix, tile); |
| + return sk_sp<SkShader>(new SkPictureShader(picture, tmx, tmy, localMatrix, tile)); |
| } |
| SkFlattenable* SkPictureShader::CreateProc(SkReadBuffer& buffer) { |
| @@ -136,7 +136,7 @@ SkFlattenable* SkPictureShader::CreateProc(SkReadBuffer& buffer) { |
| picture.reset(SkPicture::CreateFromBuffer(buffer)); |
| } |
| } |
| - return SkPictureShader::Create(picture, mx, my, &lm, &tile); |
| + return SkPictureShader::Make(picture, mx, my, &lm, &tile).release(); |
| } |
| void SkPictureShader::flatten(SkWriteBuffer& buffer) const { |
| @@ -155,8 +155,8 @@ void SkPictureShader::flatten(SkWriteBuffer& buffer) const { |
| } |
| } |
| -SkShader* SkPictureShader::refBitmapShader(const SkMatrix& viewMatrix, const SkMatrix* localM, |
| - const int maxTextureSize) const { |
| +sk_sp<SkShader> SkPictureShader::refBitmapShader(const SkMatrix& viewMatrix, const SkMatrix* localM, |
| + const int maxTextureSize) const { |
| SkASSERT(fPicture && !fPicture->cullRect().isEmpty()); |
| SkMatrix m; |
| @@ -203,7 +203,7 @@ SkShader* SkPictureShader::refBitmapShader(const SkMatrix& viewMatrix, const SkM |
| const SkISize tileSize = scaledSize.toCeil(); |
| #endif |
| if (tileSize.isEmpty()) { |
| - return SkShader::CreateEmptyShader(); |
| + return SkShader::MakeEmptyShader(); |
| } |
| // The actual scale, compensating for rounding & clamping. |
| @@ -238,7 +238,7 @@ SkShader* SkPictureShader::refBitmapShader(const SkMatrix& viewMatrix, const SkM |
| tileInfo.getSafeSize(tileInfo.minRowBytes()))); |
| } |
| - return tileShader.detach(); |
| + return sk_sp<SkShader>(tileShader.detach()); |
| } |
| size_t SkPictureShader::onContextSize(const ContextRec&) const { |
| @@ -246,8 +246,8 @@ size_t SkPictureShader::onContextSize(const ContextRec&) const { |
| } |
| SkShader::Context* SkPictureShader::onCreateContext(const ContextRec& rec, void* storage) const { |
| - SkAutoTUnref<SkShader> bitmapShader(this->refBitmapShader(*rec.fMatrix, rec.fLocalMatrix)); |
| - if (nullptr == bitmapShader.get()) { |
| + sk_sp<SkShader> bitmapShader(this->refBitmapShader(*rec.fMatrix, rec.fLocalMatrix)); |
| + if (!bitmapShader) { |
| return nullptr; |
| } |
| return PictureShaderContext::Create(storage, *this, rec, bitmapShader); |
| @@ -256,7 +256,8 @@ SkShader::Context* SkPictureShader::onCreateContext(const ContextRec& rec, void* |
| ///////////////////////////////////////////////////////////////////////////////////////// |
| SkShader::Context* SkPictureShader::PictureShaderContext::Create(void* storage, |
| - const SkPictureShader& shader, const ContextRec& rec, SkShader* bitmapShader) { |
| + const SkPictureShader& shader, const ContextRec& rec, |
| + sk_sp<SkShader> bitmapShader) { |
| PictureShaderContext* ctx = new (storage) PictureShaderContext(shader, rec, bitmapShader); |
|
f(malita)
2016/03/08 15:50:35
std::move(bitmapShader)
|
| if (nullptr == ctx->fBitmapShaderContext) { |
| ctx->~PictureShaderContext(); |
| @@ -266,9 +267,9 @@ SkShader::Context* SkPictureShader::PictureShaderContext::Create(void* storage, |
| } |
| SkPictureShader::PictureShaderContext::PictureShaderContext( |
| - const SkPictureShader& shader, const ContextRec& rec, SkShader* bitmapShader) |
| + const SkPictureShader& shader, const ContextRec& rec, sk_sp<SkShader> bitmapShader) |
| : INHERITED(shader, rec) |
| - , fBitmapShader(SkRef(bitmapShader)) |
| + , fBitmapShader(bitmapShader) |
|
f(malita)
2016/03/08 15:50:35
ditto
reed1
2016/03/08 20:17:15
Done, but I think I had to change the subsequent r
|
| { |
| fBitmapShaderContextStorage = sk_malloc_throw(bitmapShader->contextSize(rec)); |
| fBitmapShaderContext = bitmapShader->createContext(rec, fBitmapShaderContextStorage); |
| @@ -325,7 +326,7 @@ const GrFragmentProcessor* SkPictureShader::asFragmentProcessor( |
| if (context) { |
| maxTextureSize = context->caps()->maxTextureSize(); |
| } |
| - SkAutoTUnref<SkShader> bitmapShader(this->refBitmapShader(viewM, localMatrix, maxTextureSize)); |
| + sk_sp<SkShader> bitmapShader(this->refBitmapShader(viewM, localMatrix, maxTextureSize)); |
| if (!bitmapShader) { |
| return nullptr; |
| } |