aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core
diff options
context:
space:
mode:
authorGravatar reed <reed@google.com>2016-04-03 09:11:13 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2016-04-03 09:11:13 -0700
commit60c9b58b3214b0154c931656e91e39b230e987d8 (patch)
tree6dd59cf90dd96a443a50ae4b6fa14be6f778c823 /src/core
parentcf9bafceafaf6c0bf8b0eac8de509aa1d8407fca (diff)
change flattenable factory to return sk_sp
Diffstat (limited to 'src/core')
-rw-r--r--src/core/SkBitmapProcShader.cpp4
-rw-r--r--src/core/SkBlitter.cpp7
-rw-r--r--src/core/SkColorFilter.cpp4
-rw-r--r--src/core/SkColorFilterShader.cpp4
-rw-r--r--src/core/SkColorMatrixFilterRowMajor255.cpp4
-rw-r--r--src/core/SkComposeShader.cpp4
-rw-r--r--src/core/SkLightingShader.cpp6
-rw-r--r--src/core/SkLocalMatrixImageFilter.cpp4
-rw-r--r--src/core/SkLocalMatrixShader.cpp4
-rw-r--r--src/core/SkMatrixImageFilter.cpp4
-rw-r--r--src/core/SkModeColorFilter.cpp4
-rw-r--r--src/core/SkPaint.cpp4
-rw-r--r--src/core/SkPathEffect.cpp8
-rw-r--r--src/core/SkPictureShader.cpp4
-rw-r--r--src/core/SkReadBuffer.cpp4
-rw-r--r--src/core/SkReadBuffer.h30
-rw-r--r--src/core/SkShader.cpp8
-rw-r--r--src/core/SkValidatingReadBuffer.cpp6
-rw-r--r--src/core/SkXfermode.cpp4
19 files changed, 52 insertions, 65 deletions
diff --git a/src/core/SkBitmapProcShader.cpp b/src/core/SkBitmapProcShader.cpp
index 14114c0893..c9df4ce248 100644
--- a/src/core/SkBitmapProcShader.cpp
+++ b/src/core/SkBitmapProcShader.cpp
@@ -275,7 +275,7 @@ bool SkBitmapProcShader::onIsABitmap(SkBitmap* texture, SkMatrix* texM, TileMode
return true;
}
-SkFlattenable* SkBitmapProcShader::CreateProc(SkReadBuffer& buffer) {
+sk_sp<SkFlattenable> SkBitmapProcShader::CreateProc(SkReadBuffer& buffer) {
SkMatrix lm;
buffer.readMatrix(&lm);
SkBitmap bm;
@@ -285,7 +285,7 @@ SkFlattenable* SkBitmapProcShader::CreateProc(SkReadBuffer& buffer) {
bm.setImmutable();
TileMode mx = (TileMode)buffer.readUInt();
TileMode my = (TileMode)buffer.readUInt();
- return SkShader::MakeBitmapShader(bm, mx, my, &lm).release();
+ return SkShader::MakeBitmapShader(bm, mx, my, &lm);
}
void SkBitmapProcShader::flatten(SkWriteBuffer& buffer) const {
diff --git a/src/core/SkBlitter.cpp b/src/core/SkBlitter.cpp
index d8e81d59b8..8f0031cd46 100644
--- a/src/core/SkBlitter.cpp
+++ b/src/core/SkBlitter.cpp
@@ -730,8 +730,8 @@ private:
typedef SkShader INHERITED;
};
-SkFlattenable* Sk3DShader::CreateProc(SkReadBuffer& buffer) {
- return new Sk3DShader(buffer.readShader());
+sk_sp<SkFlattenable> Sk3DShader::CreateProc(SkReadBuffer& buffer) {
+ return sk_make_sp<Sk3DShader>(buffer.readShader());
}
class Sk3DBlitter : public SkBlitter {
@@ -745,8 +745,7 @@ public:
fProxy->blitH(x, y, width);
}
- virtual void blitAntiH(int x, int y, const SkAlpha antialias[],
- const int16_t runs[]) override {
+ void blitAntiH(int x, int y, const SkAlpha antialias[], const int16_t runs[]) override {
fProxy->blitAntiH(x, y, antialias, runs);
}
diff --git a/src/core/SkColorFilter.cpp b/src/core/SkColorFilter.cpp
index 3e0a2ec46f..e3d8957947 100644
--- a/src/core/SkColorFilter.cpp
+++ b/src/core/SkColorFilter.cpp
@@ -142,10 +142,10 @@ private:
typedef SkColorFilter INHERITED;
};
-SkFlattenable* SkComposeColorFilter::CreateProc(SkReadBuffer& buffer) {
+sk_sp<SkFlattenable> SkComposeColorFilter::CreateProc(SkReadBuffer& buffer) {
sk_sp<SkColorFilter> outer(buffer.readColorFilter());
sk_sp<SkColorFilter> inner(buffer.readColorFilter());
- return MakeComposeFilter(std::move(outer), std::move(inner)).release();
+ return MakeComposeFilter(std::move(outer), std::move(inner));
}
///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/core/SkColorFilterShader.cpp b/src/core/SkColorFilterShader.cpp
index 8a175024de..500ead4f74 100644
--- a/src/core/SkColorFilterShader.cpp
+++ b/src/core/SkColorFilterShader.cpp
@@ -23,13 +23,13 @@ SkColorFilterShader::SkColorFilterShader(sk_sp<SkShader> shader, sk_sp<SkColorFi
SkASSERT(fFilter);
}
-SkFlattenable* SkColorFilterShader::CreateProc(SkReadBuffer& buffer) {
+sk_sp<SkFlattenable> SkColorFilterShader::CreateProc(SkReadBuffer& buffer) {
auto shader = buffer.readShader();
auto filter = buffer.readColorFilter();
if (!shader || !filter) {
return nullptr;
}
- return new SkColorFilterShader(shader, filter);
+ return sk_make_sp<SkColorFilterShader>(shader, filter);
}
void SkColorFilterShader::flatten(SkWriteBuffer& buffer) const {
diff --git a/src/core/SkColorMatrixFilterRowMajor255.cpp b/src/core/SkColorMatrixFilterRowMajor255.cpp
index bd9a66a561..c158a7948f 100644
--- a/src/core/SkColorMatrixFilterRowMajor255.cpp
+++ b/src/core/SkColorMatrixFilterRowMajor255.cpp
@@ -157,10 +157,10 @@ void SkColorMatrixFilterRowMajor255::flatten(SkWriteBuffer& buffer) const {
buffer.writeScalarArray(fMatrix, 20);
}
-SkFlattenable* SkColorMatrixFilterRowMajor255::CreateProc(SkReadBuffer& buffer) {
+sk_sp<SkFlattenable> SkColorMatrixFilterRowMajor255::CreateProc(SkReadBuffer& buffer) {
SkScalar matrix[20];
if (buffer.readScalarArray(matrix, 20)) {
- return new SkColorMatrixFilterRowMajor255(matrix);
+ return sk_make_sp<SkColorMatrixFilterRowMajor255>(matrix);
}
return nullptr;
}
diff --git a/src/core/SkComposeShader.cpp b/src/core/SkComposeShader.cpp
index f39f20c46c..46b7724944 100644
--- a/src/core/SkComposeShader.cpp
+++ b/src/core/SkComposeShader.cpp
@@ -39,14 +39,14 @@ private:
};
#define SkAutoAlphaRestore(...) SK_REQUIRE_LOCAL_VAR(SkAutoAlphaRestore)
-SkFlattenable* SkComposeShader::CreateProc(SkReadBuffer& buffer) {
+sk_sp<SkFlattenable> SkComposeShader::CreateProc(SkReadBuffer& buffer) {
sk_sp<SkShader> shaderA(buffer.readShader());
sk_sp<SkShader> shaderB(buffer.readShader());
sk_sp<SkXfermode> mode(buffer.readXfermode());
if (!shaderA || !shaderB) {
return nullptr;
}
- return new SkComposeShader(std::move(shaderA), std::move(shaderB), std::move(mode));
+ return sk_make_sp<SkComposeShader>(std::move(shaderA), std::move(shaderB), std::move(mode));
}
void SkComposeShader::flatten(SkWriteBuffer& buffer) const {
diff --git a/src/core/SkLightingShader.cpp b/src/core/SkLightingShader.cpp
index fdd0a04aee..eba7d652eb 100644
--- a/src/core/SkLightingShader.cpp
+++ b/src/core/SkLightingShader.cpp
@@ -552,7 +552,7 @@ void SkLightingShaderImpl::toString(SkString* str) const {
}
#endif
-SkFlattenable* SkLightingShaderImpl::CreateProc(SkReadBuffer& buf) {
+sk_sp<SkFlattenable> SkLightingShaderImpl::CreateProc(SkReadBuffer& buf) {
SkMatrix diffLocalM;
bool hasDiffLocalM = buf.readBool();
if (hasDiffLocalM) {
@@ -606,8 +606,8 @@ SkFlattenable* SkLightingShaderImpl::CreateProc(SkReadBuffer& buf) {
SkAutoTUnref<const SkLightingShader::Lights> lights(builder.finish());
- return new SkLightingShaderImpl(diffuse, normal, lights, SkVector::Make(1.0f, 0.0f),
- &diffLocalM, &normLocalM);
+ return sk_make_sp<SkLightingShaderImpl>(diffuse, normal, lights, SkVector::Make(1.0f, 0.0f),
+ &diffLocalM, &normLocalM);
}
void SkLightingShaderImpl::flatten(SkWriteBuffer& buf) const {
diff --git a/src/core/SkLocalMatrixImageFilter.cpp b/src/core/SkLocalMatrixImageFilter.cpp
index bf29bd235b..42acee0c22 100644
--- a/src/core/SkLocalMatrixImageFilter.cpp
+++ b/src/core/SkLocalMatrixImageFilter.cpp
@@ -16,11 +16,11 @@ SkLocalMatrixImageFilter::SkLocalMatrixImageFilter(const SkMatrix& localM,
, fLocalM(localM) {
}
-SkFlattenable* SkLocalMatrixImageFilter::CreateProc(SkReadBuffer& buffer) {
+sk_sp<SkFlattenable> SkLocalMatrixImageFilter::CreateProc(SkReadBuffer& buffer) {
SK_IMAGEFILTER_UNFLATTEN_COMMON(common, 1);
SkMatrix lm;
buffer.readMatrix(&lm);
- return SkLocalMatrixImageFilter::Make(lm, common.getInput(0)).release();
+ return SkLocalMatrixImageFilter::Make(lm, common.getInput(0));
}
void SkLocalMatrixImageFilter::flatten(SkWriteBuffer& buffer) const {
diff --git a/src/core/SkLocalMatrixShader.cpp b/src/core/SkLocalMatrixShader.cpp
index ddd6114ca8..ea4db5352c 100644
--- a/src/core/SkLocalMatrixShader.cpp
+++ b/src/core/SkLocalMatrixShader.cpp
@@ -7,14 +7,14 @@
#include "SkLocalMatrixShader.h"
-SkFlattenable* SkLocalMatrixShader::CreateProc(SkReadBuffer& buffer) {
+sk_sp<SkFlattenable> SkLocalMatrixShader::CreateProc(SkReadBuffer& buffer) {
SkMatrix lm;
buffer.readMatrix(&lm);
auto baseShader(buffer.readShader());
if (!baseShader) {
return nullptr;
}
- return baseShader->makeWithLocalMatrix(lm).release();
+ return baseShader->makeWithLocalMatrix(lm);
}
void SkLocalMatrixShader::flatten(SkWriteBuffer& buffer) const {
diff --git a/src/core/SkMatrixImageFilter.cpp b/src/core/SkMatrixImageFilter.cpp
index d66772c244..70bc81af43 100644
--- a/src/core/SkMatrixImageFilter.cpp
+++ b/src/core/SkMatrixImageFilter.cpp
@@ -28,12 +28,12 @@ SkMatrixImageFilter* SkMatrixImageFilter::Create(const SkMatrix& transform,
return new SkMatrixImageFilter(transform, filterQuality, input);
}
-SkFlattenable* SkMatrixImageFilter::CreateProc(SkReadBuffer& buffer) {
+sk_sp<SkFlattenable> SkMatrixImageFilter::CreateProc(SkReadBuffer& buffer) {
SK_IMAGEFILTER_UNFLATTEN_COMMON(common, 1);
SkMatrix matrix;
buffer.readMatrix(&matrix);
SkFilterQuality quality = static_cast<SkFilterQuality>(buffer.readInt());
- return Create(matrix, quality, common.getInput(0).get());
+ return sk_sp<SkImageFilter>(Create(matrix, quality, common.getInput(0).get()));
}
void SkMatrixImageFilter::flatten(SkWriteBuffer& buffer) const {
diff --git a/src/core/SkModeColorFilter.cpp b/src/core/SkModeColorFilter.cpp
index 84c6491f3a..eacd261b5c 100644
--- a/src/core/SkModeColorFilter.cpp
+++ b/src/core/SkModeColorFilter.cpp
@@ -77,10 +77,10 @@ void SkModeColorFilter::updateCache() {
fProc = SkXfermode::GetProc(fMode);
}
-SkFlattenable* SkModeColorFilter::CreateProc(SkReadBuffer& buffer) {
+sk_sp<SkFlattenable> SkModeColorFilter::CreateProc(SkReadBuffer& buffer) {
SkColor color = buffer.readColor();
SkXfermode::Mode mode = (SkXfermode::Mode)buffer.readUInt();
- return SkColorFilter::MakeModeFilter(color, mode).release();
+ return SkColorFilter::MakeModeFilter(color, mode);
}
///////////////////////////////////////////////////////////////////////////////
diff --git a/src/core/SkPaint.cpp b/src/core/SkPaint.cpp
index e4eca0cf99..d5e4c08c1f 100644
--- a/src/core/SkPaint.cpp
+++ b/src/core/SkPaint.cpp
@@ -1930,11 +1930,11 @@ void SkPaint::unflatten(SkReadBuffer& buffer) {
this->setPathEffect(buffer.readPathEffect());
this->setShader(buffer.readShader());
this->setXfermode(buffer.readXfermode());
- SkSafeUnref(this->setMaskFilter(buffer.readMaskFilter()));
+ this->setMaskFilter(buffer.readMaskFilter());
this->setColorFilter(buffer.readColorFilter());
this->setRasterizer(buffer.readRasterizer());
this->setLooper(buffer.readDrawLooper());
- SkSafeUnref(this->setImageFilter(buffer.readImageFilter()));
+ this->setImageFilter(buffer.readImageFilter());
if (buffer.isVersionLT(SkReadBuffer::kAnnotationsMovedToCanvas_Version)) {
// We used to store annotations here (string+skdata) if this bool was true
diff --git a/src/core/SkPathEffect.cpp b/src/core/SkPathEffect.cpp
index b2e29bc09d..1178348af5 100644
--- a/src/core/SkPathEffect.cpp
+++ b/src/core/SkPathEffect.cpp
@@ -57,10 +57,10 @@ void SkPairPathEffect::toString(SkString* str) const {
///////////////////////////////////////////////////////////////////////////////
-SkFlattenable* SkComposePathEffect::CreateProc(SkReadBuffer& buffer) {
+sk_sp<SkFlattenable> SkComposePathEffect::CreateProc(SkReadBuffer& buffer) {
sk_sp<SkPathEffect> pe0(buffer.readPathEffect());
sk_sp<SkPathEffect> pe1(buffer.readPathEffect());
- return SkComposePathEffect::Make(std::move(pe0), std::move(pe1)).release();
+ return SkComposePathEffect::Make(std::move(pe0), std::move(pe1));
}
bool SkComposePathEffect::filterPath(SkPath* dst, const SkPath& src,
@@ -85,10 +85,10 @@ void SkComposePathEffect::toString(SkString* str) const {
///////////////////////////////////////////////////////////////////////////////
-SkFlattenable* SkSumPathEffect::CreateProc(SkReadBuffer& buffer) {
+sk_sp<SkFlattenable> SkSumPathEffect::CreateProc(SkReadBuffer& buffer) {
sk_sp<SkPathEffect> pe0(buffer.readPathEffect());
sk_sp<SkPathEffect> pe1(buffer.readPathEffect());
- return SkSumPathEffect::Make(pe0, pe1).release();
+ return SkSumPathEffect::Make(pe0, pe1);
}
bool SkSumPathEffect::filterPath(SkPath* dst, const SkPath& src,
diff --git a/src/core/SkPictureShader.cpp b/src/core/SkPictureShader.cpp
index 76ecfc1570..b6f4d02a55 100644
--- a/src/core/SkPictureShader.cpp
+++ b/src/core/SkPictureShader.cpp
@@ -110,7 +110,7 @@ sk_sp<SkShader> SkPictureShader::Make(sk_sp<SkPicture> picture, TileMode tmx, Ti
return sk_sp<SkShader>(new SkPictureShader(std::move(picture), tmx, tmy, localMatrix, tile));
}
-SkFlattenable* SkPictureShader::CreateProc(SkReadBuffer& buffer) {
+sk_sp<SkFlattenable> SkPictureShader::CreateProc(SkReadBuffer& buffer) {
SkMatrix lm;
buffer.readMatrix(&lm);
TileMode mx = (TileMode)buffer.read32();
@@ -136,7 +136,7 @@ SkFlattenable* SkPictureShader::CreateProc(SkReadBuffer& buffer) {
picture = SkPicture::MakeFromBuffer(buffer);
}
}
- return SkPictureShader::Make(picture, mx, my, &lm, &tile).release();
+ return SkPictureShader::Make(picture, mx, my, &lm, &tile);
}
void SkPictureShader::flatten(SkWriteBuffer& buffer) const {
diff --git a/src/core/SkReadBuffer.cpp b/src/core/SkReadBuffer.cpp
index 2dd9f093ac..f220b5a9e6 100644
--- a/src/core/SkReadBuffer.cpp
+++ b/src/core/SkReadBuffer.cpp
@@ -356,7 +356,7 @@ SkFlattenable* SkReadBuffer::readFlattenable(SkFlattenable::Type ft) {
// if we get here, factory may still be null, but if that is the case, the
// failure was ours, not the writer.
- SkFlattenable* obj = nullptr;
+ sk_sp<SkFlattenable> obj;
uint32_t sizeRecorded = fReader.readU32();
if (factory) {
size_t offset = fReader.offset();
@@ -371,7 +371,7 @@ SkFlattenable* SkReadBuffer::readFlattenable(SkFlattenable::Type ft) {
// we must skip the remaining data
fReader.skip(sizeRecorded);
}
- return obj;
+ return obj.release();
}
/**
diff --git a/src/core/SkReadBuffer.h b/src/core/SkReadBuffer.h
index a9983989cc..7b12194fc0 100644
--- a/src/core/SkReadBuffer.h
+++ b/src/core/SkReadBuffer.h
@@ -127,27 +127,17 @@ public:
void readPaint(SkPaint* paint) { paint->unflatten(*this); }
virtual SkFlattenable* readFlattenable(SkFlattenable::Type);
- template <typename T> T* readFlattenable() {
- return (T*) this->readFlattenable(T::GetFlattenableType());
- }
- sk_sp<SkColorFilter> readColorFilter() {
- return sk_sp<SkColorFilter>(this->readFlattenable<SkColorFilter>());
- }
- sk_sp<SkDrawLooper> readDrawLooper() {
- return sk_sp<SkDrawLooper>(this->readFlattenable<SkDrawLooper>());
- }
- SkImageFilter* readImageFilter() { return this->readFlattenable<SkImageFilter>(); }
- SkMaskFilter* readMaskFilter() { return this->readFlattenable<SkMaskFilter>(); }
- sk_sp<SkPathEffect> readPathEffect() {
- return sk_sp<SkPathEffect>(this->readFlattenable<SkPathEffect>());
- }
- sk_sp<SkRasterizer> readRasterizer() {
- return sk_sp<SkRasterizer>(this->readFlattenable<SkRasterizer>());
- }
- sk_sp<SkShader> readShader() { return sk_sp<SkShader>(this->readFlattenable<SkShader>()); }
- sk_sp<SkXfermode> readXfermode() {
- return sk_sp<SkXfermode>(this->readFlattenable<SkXfermode>());
+ template <typename T> sk_sp<T> readFlattenable() {
+ return sk_sp<T>((T*)this->readFlattenable(T::GetFlattenableType()));
}
+ sk_sp<SkColorFilter> readColorFilter() { return this->readFlattenable<SkColorFilter>(); }
+ sk_sp<SkDrawLooper> readDrawLooper() { return this->readFlattenable<SkDrawLooper>(); }
+ sk_sp<SkImageFilter> readImageFilter() { return this->readFlattenable<SkImageFilter>(); }
+ sk_sp<SkMaskFilter> readMaskFilter() { return this->readFlattenable<SkMaskFilter>(); }
+ sk_sp<SkPathEffect> readPathEffect() { return this->readFlattenable<SkPathEffect>(); }
+ sk_sp<SkRasterizer> readRasterizer() { return this->readFlattenable<SkRasterizer>(); }
+ sk_sp<SkShader> readShader() { return this->readFlattenable<SkShader>(); }
+ sk_sp<SkXfermode> readXfermode() { return this->readFlattenable<SkXfermode>(); }
/**
* Like readFlattenable() but explicitly just skips the data that was written for the
diff --git a/src/core/SkShader.cpp b/src/core/SkShader.cpp
index e4cbc7b217..8032cc6e4c 100644
--- a/src/core/SkShader.cpp
+++ b/src/core/SkShader.cpp
@@ -264,8 +264,8 @@ bool SkColorShader::isOpaque() const {
return SkColorGetA(fColor) == 255;
}
-SkFlattenable* SkColorShader::CreateProc(SkReadBuffer& buffer) {
- return new SkColorShader(buffer.readColor());
+sk_sp<SkFlattenable> SkColorShader::CreateProc(SkReadBuffer& buffer) {
+ return sk_make_sp<SkColorShader>(buffer.readColor());
}
void SkColorShader::flatten(SkWriteBuffer& buffer) const {
@@ -419,8 +419,8 @@ bool SkColorShader::ColorShaderContext::onChooseBlitProcs(const SkImageInfo& inf
///////////////////////////////////////////////////////////////////////////////
-SkFlattenable* SkEmptyShader::CreateProc(SkReadBuffer&) {
- return SkShader::MakeEmptyShader().release();
+sk_sp<SkFlattenable> SkEmptyShader::CreateProc(SkReadBuffer&) {
+ return SkShader::MakeEmptyShader();
}
#ifndef SK_IGNORE_TO_STRING
diff --git a/src/core/SkValidatingReadBuffer.cpp b/src/core/SkValidatingReadBuffer.cpp
index bc5611a3e3..ad4b6c409e 100644
--- a/src/core/SkValidatingReadBuffer.cpp
+++ b/src/core/SkValidatingReadBuffer.cpp
@@ -243,7 +243,7 @@ SkFlattenable* SkValidatingReadBuffer::readFlattenable(SkFlattenable::Type type)
// if we get here, factory may still be null, but if that is the case, the
// failure was ours, not the writer.
- SkFlattenable* obj = nullptr;
+ sk_sp<SkFlattenable> obj;
uint32_t sizeRecorded = this->readUInt();
if (factory) {
size_t offset = fReader.offset();
@@ -252,8 +252,6 @@ SkFlattenable* SkValidatingReadBuffer::readFlattenable(SkFlattenable::Type type)
size_t sizeRead = fReader.offset() - offset;
this->validate(sizeRecorded == sizeRead);
if (fError) {
- // we could try to fix up the offset...
- SkSafeUnref(obj);
obj = nullptr;
}
} else {
@@ -261,7 +259,7 @@ SkFlattenable* SkValidatingReadBuffer::readFlattenable(SkFlattenable::Type type)
this->skip(sizeRecorded);
SkASSERT(false);
}
- return obj;
+ return obj.release();
}
void SkValidatingReadBuffer::skipFlattenable() {
diff --git a/src/core/SkXfermode.cpp b/src/core/SkXfermode.cpp
index 01d6dc53c2..1cfe864751 100644
--- a/src/core/SkXfermode.cpp
+++ b/src/core/SkXfermode.cpp
@@ -1092,12 +1092,12 @@ bool SkXfermode::isOpaque(SkXfermode::SrcColorOpacity opacityType) const {
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
-SkFlattenable* SkProcCoeffXfermode::CreateProc(SkReadBuffer& buffer) {
+sk_sp<SkFlattenable> SkProcCoeffXfermode::CreateProc(SkReadBuffer& buffer) {
uint32_t mode32 = buffer.read32();
if (!buffer.validate(mode32 < SK_ARRAY_COUNT(gProcCoeffs))) {
return nullptr;
}
- return SkXfermode::Make((SkXfermode::Mode)mode32).release();
+ return SkXfermode::Make((SkXfermode::Mode)mode32);
}
void SkProcCoeffXfermode::flatten(SkWriteBuffer& buffer) const {