Index: src/core/SkComposeShader.cpp |
diff --git a/src/core/SkComposeShader.cpp b/src/core/SkComposeShader.cpp |
index 4d3e4e57ba8f9b60dbda7bd5a212eeb43816c617..f39f20c46cefa7b8fb25107a4d23babe54031696 100644 |
--- a/src/core/SkComposeShader.cpp |
+++ b/src/core/SkComposeShader.cpp |
@@ -16,19 +16,6 @@ |
/////////////////////////////////////////////////////////////////////////////// |
-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); |
-} |
- |
-SkComposeShader::~SkComposeShader() { |
- SkSafeUnref(fMode); |
-} |
- |
size_t SkComposeShader::onContextSize(const ContextRec& rec) const { |
return sizeof(ComposeShaderContext) |
+ fShaderA->contextSize(rec) |
@@ -55,17 +42,17 @@ private: |
SkFlattenable* SkComposeShader::CreateProc(SkReadBuffer& buffer) { |
sk_sp<SkShader> shaderA(buffer.readShader()); |
sk_sp<SkShader> shaderB(buffer.readShader()); |
- SkAutoTUnref<SkXfermode> mode(buffer.readXfermode()); |
+ sk_sp<SkXfermode> mode(buffer.readXfermode()); |
if (!shaderA || !shaderB) { |
return nullptr; |
} |
- return new SkComposeShader(std::move(shaderA), std::move(shaderB), mode); |
+ return new SkComposeShader(std::move(shaderA), std::move(shaderB), std::move(mode)); |
} |
void SkComposeShader::flatten(SkWriteBuffer& buffer) const { |
buffer.writeFlattenable(fShaderA.get()); |
buffer.writeFlattenable(fShaderB.get()); |
- buffer.writeFlattenable(fMode); |
+ buffer.writeFlattenable(fMode.get()); |
} |
template <typename T> void safe_call_destructor(T* obj) { |
@@ -120,7 +107,7 @@ bool SkComposeShader::asACompose(ComposeRec* rec) const { |
if (rec) { |
rec->fShaderA = fShaderA.get(); |
rec->fShaderB = fShaderB.get(); |
- rec->fMode = fMode; |
+ rec->fMode = fMode.get(); |
} |
return true; |
} |
@@ -133,7 +120,7 @@ bool SkComposeShader::asACompose(ComposeRec* rec) const { |
void SkComposeShader::ComposeShaderContext::shadeSpan(int x, int y, SkPMColor result[], int count) { |
SkShader::Context* shaderContextA = fShaderContextA; |
SkShader::Context* shaderContextB = fShaderContextB; |
- SkXfermode* mode = static_cast<const SkComposeShader&>(fShader).fMode; |
+ SkXfermode* mode = static_cast<const SkComposeShader&>(fShader).fMode.get(); |
unsigned scale = SkAlpha255To256(this->getPaintAlpha()); |
SkPMColor tmp[TMP_COLOR_COUNT]; |
@@ -255,15 +242,14 @@ void SkComposeShader::toString(SkString* str) const { |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
sk_sp<SkShader> SkShader::MakeComposeShader(sk_sp<SkShader> dst, sk_sp<SkShader> src, |
- SkXfermode* xfer) { |
+ sk_sp<SkXfermode> xfer) { |
if (!dst || !src) { |
return nullptr; |
} |
- return sk_make_sp<SkComposeShader>(std::move(dst), std::move(src), xfer); |
+ return sk_make_sp<SkComposeShader>(std::move(dst), std::move(src), std::move(xfer)); |
} |
sk_sp<SkShader> SkShader::MakeComposeShader(sk_sp<SkShader> dst, sk_sp<SkShader> src, |
SkXfermode::Mode mode) { |
- SkAutoTUnref<SkXfermode> xfer(SkXfermode::Create(mode)); |
- return MakeComposeShader(std::move(dst), std::move(src), xfer); |
+ return MakeComposeShader(std::move(dst), std::move(src), SkXfermode::Make(mode)); |
} |