Chromium Code Reviews| Index: include/effects/SkComposeImageFilter.h |
| diff --git a/include/effects/SkComposeImageFilter.h b/include/effects/SkComposeImageFilter.h |
| index cf73a001c87bf15fd22cce05b6a0bce74e968d49..489dd5371cf19fdb871475727776804557595119 100644 |
| --- a/include/effects/SkComposeImageFilter.h |
| +++ b/include/effects/SkComposeImageFilter.h |
| @@ -12,25 +12,32 @@ |
| class SK_API SkComposeImageFilter : public SkImageFilter { |
| public: |
| - static SkImageFilter* Create(SkImageFilter* outer, SkImageFilter* inner) { |
| + static sk_sp<SkImageFilter> Make(sk_sp<SkImageFilter> outer, sk_sp<SkImageFilter> inner) { |
| if (!outer) { |
| - return SkSafeRef(inner); |
| + return inner; |
| } |
| if (!inner) { |
| - return SkRef(outer); |
| + return outer; |
| } |
| - SkImageFilter* inputs[2] = { outer, inner }; |
| - return new SkComposeImageFilter(inputs); |
| + sk_sp<SkImageFilter> inputs[2] = { outer, inner }; |
|
f(malita)
2016/03/30 18:04:38
nit: I think we can std::move outer/inner here.
robertphillips
2016/03/30 18:23:27
Done.
|
| + return sk_sp<SkImageFilter>(new SkComposeImageFilter(inputs)); |
| } |
| SkRect computeFastBounds(const SkRect& src) const override; |
| SK_TO_STRING_OVERRIDE() |
| SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkComposeImageFilter) |
| +#ifdef SK_SUPPORT_LEGACY_IMAGEFILTER_PTR |
| + static SkImageFilter* Create(SkImageFilter* outer, SkImageFilter* inner) { |
| + return Make(sk_ref_sp<SkImageFilter>(outer), |
| + sk_ref_sp<SkImageFilter>(inner)).release(); |
| + } |
| +#endif |
| + |
| protected: |
| - explicit SkComposeImageFilter(SkImageFilter* inputs[2]) : INHERITED(2, inputs) { |
| - SkASSERT(inputs[0]); |
| - SkASSERT(inputs[1]); |
| + explicit SkComposeImageFilter(sk_sp<SkImageFilter> inputs[2]) : INHERITED(inputs, 2, nullptr) { |
| + SkASSERT(inputs[0].get()); |
| + SkASSERT(inputs[1].get()); |
| } |
| sk_sp<SkSpecialImage> onFilterImage(SkSpecialImage* source, const Context&, |
| SkIPoint* offset) const override; |