Index: src/core/SkImageFilter.cpp |
diff --git a/src/core/SkImageFilter.cpp b/src/core/SkImageFilter.cpp |
index edaaa16c2613926742e008ea84388fcd5eeb9d96..62509c52be1448718daf08fc01b24da7af9c8e23 100644 |
--- a/src/core/SkImageFilter.cpp |
+++ b/src/core/SkImageFilter.cpp |
@@ -214,8 +214,8 @@ void SkImageFilter::flatten(SkWriteBuffer& buffer) const { |
buffer.writeUInt(fCropRect.flags()); |
} |
-SkSpecialImage* SkImageFilter::filterImage(SkSpecialImage* src, const Context& context, |
- SkIPoint* offset) const { |
+sk_sp<SkSpecialImage> SkImageFilter::filterImage(SkSpecialImage* src, const Context& context, |
+ SkIPoint* offset) const { |
SkASSERT(src && offset); |
uint32_t srcGenID = fUsesSrcInput ? src->uniqueID() : 0; |
@@ -224,13 +224,13 @@ SkSpecialImage* SkImageFilter::filterImage(SkSpecialImage* src, const Context& c |
if (context.cache()) { |
SkSpecialImage* result = context.cache()->get(key, offset); |
if (result) { |
- return SkRef(result); |
+ return sk_sp<SkSpecialImage>(SkRef(result)); |
} |
} |
- SkSpecialImage* result = this->onFilterImage(src, context, offset); |
+ sk_sp<SkSpecialImage> result(this->onFilterImage(src, context, offset)); |
if (result && context.cache()) { |
- context.cache()->set(key, result, *offset); |
+ context.cache()->set(key, result.get(), *offset); |
SkAutoMutexAcquire mutex(fMutex); |
fCacheKeys.push_back(key); |
} |
@@ -280,9 +280,9 @@ bool SkImageFilter::filterInputDeprecated(int index, Proxy* proxy, const SkBitma |
return false; |
} |
- SkAutoTUnref<SkSpecialImage> tmp(input->onFilterImage(specialSrc.get(), |
- this->mapContext(ctx), |
- offset)); |
+ sk_sp<SkSpecialImage> tmp(input->onFilterImage(specialSrc.get(), |
+ this->mapContext(ctx), |
+ offset)); |
if (!tmp) { |
return false; |
} |
@@ -341,8 +341,8 @@ bool SkImageFilter::onFilterImageDeprecated(Proxy*, const SkBitmap&, const Conte |
// SkImageFilter-derived classes that do not yet have their own onFilterImage |
// implementation convert back to calling the deprecated filterImage method |
-SkSpecialImage* SkImageFilter::onFilterImage(SkSpecialImage* src, const Context& ctx, |
- SkIPoint* offset) const { |
+sk_sp<SkSpecialImage> SkImageFilter::onFilterImage(SkSpecialImage* src, const Context& ctx, |
+ SkIPoint* offset) const { |
SkBitmap srcBM, resultBM; |
if (!src->internal_getBM(&srcBM)) { |
@@ -354,7 +354,7 @@ SkSpecialImage* SkImageFilter::onFilterImage(SkSpecialImage* src, const Context& |
return nullptr; |
} |
- return SkSpecialImage::internal_fromBM(src->internal_getProxy(), resultBM).release(); |
+ return SkSpecialImage::internal_fromBM(src->internal_getProxy(), resultBM); |
} |
bool SkImageFilter::canFilterImageGPU() const { |
@@ -489,10 +489,10 @@ static sk_sp<SkSpecialImage> pad_image(SkSpecialImage* src, |
return surf->makeImageSnapshot(); |
} |
-SkSpecialImage* SkImageFilter::applyCropRect(const Context& ctx, |
- SkSpecialImage* src, |
- SkIPoint* srcOffset, |
- SkIRect* bounds) const { |
+sk_sp<SkSpecialImage> SkImageFilter::applyCropRect(const Context& ctx, |
+ SkSpecialImage* src, |
+ SkIPoint* srcOffset, |
+ SkIRect* bounds) const { |
SkIRect srcBounds; |
srcBounds = SkIRect::MakeXYWH(srcOffset->fX, srcOffset->fY, src->width(), src->height()); |
@@ -503,14 +503,14 @@ SkSpecialImage* SkImageFilter::applyCropRect(const Context& ctx, |
} |
if (srcBounds.contains(*bounds)) { |
- return SkRef(src); |
+ return sk_sp<SkSpecialImage>(SkRef(src)); |
} else { |
sk_sp<SkSpecialImage> img(pad_image(src, |
bounds->width(), bounds->height(), |
srcOffset->x() - bounds->x(), |
srcOffset->y() - bounds->y())); |
*srcOffset = SkIPoint::Make(bounds->x(), bounds->y()); |
- return img.release(); |
+ return img; |
} |
} |
@@ -563,27 +563,27 @@ SkImageFilter* SkImageFilter::newWithLocalMatrix(const SkMatrix& matrix) const { |
return SkLocalMatrixImageFilter::Create(matrix, const_cast<SkImageFilter*>(this)); |
} |
-SkSpecialImage* SkImageFilter::filterInput(int index, |
- SkSpecialImage* src, |
- const Context& ctx, |
- SkIPoint* offset) const { |
+sk_sp<SkSpecialImage> SkImageFilter::filterInput(int index, |
+ SkSpecialImage* src, |
+ const Context& ctx, |
+ SkIPoint* offset) const { |
SkImageFilter* input = this->getInput(index); |
if (!input) { |
- return SkRef(src); |
+ return sk_sp<SkSpecialImage>(SkRef(src)); |
} |
- SkAutoTUnref<SkSpecialImage> result(input->filterImage(src, this->mapContext(ctx), offset)); |
+ sk_sp<SkSpecialImage> result(input->filterImage(src, this->mapContext(ctx), offset)); |
#if SK_SUPPORT_GPU |
if (src->peekTexture() && result && !result->peekTexture()) { |
// Keep the result on the GPU - this is still required for some |
// image filters that don't support GPU in all cases |
GrContext* context = src->peekTexture()->getContext(); |
- return result->makeTextureImage(src->internal_getProxy(), context).release(); |
+ return result->makeTextureImage(src->internal_getProxy(), context); |
} |
#endif |
- return result.release(); |
+ return result; |
} |
#if SK_SUPPORT_GPU |
@@ -601,9 +601,9 @@ bool SkImageFilter::filterInputGPUDeprecated(int index, SkImageFilter::Proxy* pr |
return false; |
} |
- SkAutoTUnref<SkSpecialImage> tmp(input->onFilterImage(specialSrc.get(), |
- this->mapContext(ctx), |
- offset)); |
+ sk_sp<SkSpecialImage> tmp(input->onFilterImage(specialSrc.get(), |
+ this->mapContext(ctx), |
+ offset)); |
if (!tmp) { |
return false; |
} |