Chromium Code Reviews| Index: src/core/SkComposeShader.cpp |
| diff --git a/src/core/SkComposeShader.cpp b/src/core/SkComposeShader.cpp |
| index b6ba3729d1ba641b936d55d85f57811ace7e6fc5..075761b1111ff8d738fc101c244d880682f86a9e 100644 |
| --- a/src/core/SkComposeShader.cpp |
| +++ b/src/core/SkComposeShader.cpp |
| @@ -16,9 +16,10 @@ |
| /////////////////////////////////////////////////////////////////////////////// |
| -SkComposeShader::SkComposeShader(SkShader* sA, SkShader* sB, SkXfermode* mode) { |
| - fShaderA = sA; sA->ref(); |
| - fShaderB = sB; sB->ref(); |
| +SkComposeShader::SkComposeShader(sk_sp<SkShader> sA, sk_sp<SkShader> sB, SkXfermode* mode) |
| + : fShaderA(std::move(sA)) |
| + , fShaderB(std::move(sB)) |
| +{ |
| // mode may be null |
| fMode = mode; |
| SkSafeRef(mode); |
| @@ -26,8 +27,6 @@ SkComposeShader::SkComposeShader(SkShader* sA, SkShader* sB, SkXfermode* mode) { |
| SkComposeShader::~SkComposeShader() { |
| SkSafeUnref(fMode); |
| - fShaderB->unref(); |
| - fShaderA->unref(); |
| } |
| size_t SkComposeShader::onContextSize(const ContextRec& rec) const { |
| @@ -54,18 +53,18 @@ private: |
| #define SkAutoAlphaRestore(...) SK_REQUIRE_LOCAL_VAR(SkAutoAlphaRestore) |
| SkFlattenable* SkComposeShader::CreateProc(SkReadBuffer& buffer) { |
| - SkAutoTUnref<SkShader> shaderA(buffer.readShader()); |
| - SkAutoTUnref<SkShader> shaderB(buffer.readShader()); |
| + sk_sp<SkShader> shaderA(buffer.readShader()); |
| + sk_sp<SkShader> shaderB(buffer.readShader()); |
| SkAutoTUnref<SkXfermode> mode(buffer.readXfermode()); |
| - if (!shaderA.get() || !shaderB.get()) { |
| + if (!shaderA || !shaderB) { |
| return nullptr; |
| } |
| return new SkComposeShader(shaderA, shaderB, mode); |
|
f(malita)
2016/03/08 15:50:35
SkComposeShader(std::move(shaderA), std::move(shad
|
| } |
| void SkComposeShader::flatten(SkWriteBuffer& buffer) const { |
| - buffer.writeFlattenable(fShaderA); |
| - buffer.writeFlattenable(fShaderB); |
| + buffer.writeFlattenable(fShaderA.get()); |
| + buffer.writeFlattenable(fShaderB.get()); |
| buffer.writeFlattenable(fMode); |
| } |
| @@ -119,8 +118,8 @@ SkComposeShader::ComposeShaderContext::~ComposeShaderContext() { |
| bool SkComposeShader::asACompose(ComposeRec* rec) const { |
| if (rec) { |
| - rec->fShaderA = fShaderA; |
| - rec->fShaderB = fShaderB; |
| + rec->fShaderA = fShaderA.get(); |
| + rec->fShaderB = fShaderB.get(); |
| rec->fMode = fMode; |
| } |
| return true; |
| @@ -255,14 +254,16 @@ void SkComposeShader::toString(SkString* str) const { |
| /////////////////////////////////////////////////////////////////////////////////////////////////// |
| -SkShader* SkShader::CreateComposeShader(SkShader* dst, SkShader* src, SkXfermode* xfer) { |
| +sk_sp<SkShader> SkShader::MakeComposeShader(sk_sp<SkShader> dst, sk_sp<SkShader> src, |
| + SkXfermode* xfer) { |
| if (!dst || !src) { |
| return nullptr; |
| } |
| - return new SkComposeShader(dst, src, xfer); |
| + return sk_make_sp<SkComposeShader>(dst, src, xfer); |
|
f(malita)
2016/03/08 15:50:35
std::move args?
reed1
2016/03/08 20:17:15
Done.
|
| } |
| -SkShader* SkShader::CreateComposeShader(SkShader* dst, SkShader* src, SkXfermode::Mode mode) { |
| +sk_sp<SkShader> SkShader::MakeComposeShader(sk_sp<SkShader> dst, sk_sp<SkShader> src, |
| + SkXfermode::Mode mode) { |
| SkAutoTUnref<SkXfermode> xfer(SkXfermode::Create(mode)); |
| - return CreateComposeShader(dst, src, xfer); |
| + return MakeComposeShader(dst, src, xfer); |
|
f(malita)
2016/03/08 15:50:35
ditto
reed1
2016/03/08 20:17:15
Done.
|
| } |