| 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;
|
| }
|
|
|