| Index: gm/imagefiltersclipped.cpp | 
| diff --git a/gm/imagefiltersclipped.cpp b/gm/imagefiltersclipped.cpp | 
| index b24ca5af727a6493b8c4472685712a64fa226424..f2434112fa0a752785ed3ffe1665f95e0ec113d0 100644 | 
| --- a/gm/imagefiltersclipped.cpp | 
| +++ b/gm/imagefiltersclipped.cpp | 
| @@ -43,11 +43,11 @@ static sk_sp<SkImage> make_gradient_circle(int width, int height) { | 
| return surface->makeImageSnapshot(); | 
| } | 
|  | 
| -static void draw_clipped_filter(SkCanvas* canvas, SkImageFilter* filter, size_t i, | 
| +static void draw_clipped_filter(SkCanvas* canvas, sk_sp<SkImageFilter> filter, size_t i, | 
| const SkRect& primBounds, const SkRect& clipBounds) { | 
| SkPaint paint; | 
| paint.setColor(SK_ColorWHITE); | 
| -    paint.setImageFilter(filter); | 
| +    paint.setImageFilter(std::move(filter)); | 
| paint.setAntiAlias(true); | 
| canvas->save(); | 
| canvas->clipRect(clipBounds); | 
| @@ -93,23 +93,25 @@ protected: | 
| resizeMatrix.setScale(RESIZE_FACTOR_X, RESIZE_FACTOR_Y); | 
| SkPoint3 pointLocation = SkPoint3::Make(32, 32, SkIntToScalar(10)); | 
|  | 
| -        SkImageFilter* filters[] = { | 
| -            SkBlurImageFilter::Make(SkIntToScalar(12), SkIntToScalar(12), nullptr).release(), | 
| -            SkDropShadowImageFilter::Make(SkIntToScalar(10), SkIntToScalar(10), | 
| -                SkIntToScalar(3), SkIntToScalar(3), SK_ColorGREEN, | 
| -                SkDropShadowImageFilter::kDrawShadowAndForeground_ShadowMode, | 
| -                nullptr).release(), | 
| -            SkDisplacementMapEffect::Create(SkDisplacementMapEffect::kR_ChannelSelectorType, | 
| +        sk_sp<SkImageFilter> filters[] = { | 
| +            SkBlurImageFilter::Make(SkIntToScalar(12), SkIntToScalar(12), nullptr), | 
| +            SkDropShadowImageFilter::Make( | 
| +                                    SkIntToScalar(10), SkIntToScalar(10), | 
| +                                    SkIntToScalar(3), SkIntToScalar(3), SK_ColorGREEN, | 
| +                                    SkDropShadowImageFilter::kDrawShadowAndForeground_ShadowMode, | 
| +                                    nullptr), | 
| +            sk_sp<SkImageFilter>(SkDisplacementMapEffect::Create( | 
| +                                            SkDisplacementMapEffect::kR_ChannelSelectorType, | 
| SkDisplacementMapEffect::kR_ChannelSelectorType, | 
| SkIntToScalar(12), | 
| gradient.get(), | 
| -                                            checkerboard.get()), | 
| -            SkDilateImageFilter::Make(2, 2, checkerboard).release(), | 
| -            SkErodeImageFilter::Make(2, 2, checkerboard).release(), | 
| -            SkOffsetImageFilter::Make(SkIntToScalar(-16), SkIntToScalar(32), nullptr).release(), | 
| -            SkImageFilter::MakeMatrixFilter(resizeMatrix, kNone_SkFilterQuality, nullptr).release(), | 
| -            SkLightingImageFilter::CreatePointLitDiffuse(pointLocation, SK_ColorWHITE, SK_Scalar1, | 
| -                                                         SkIntToScalar(2), checkerboard.get()), | 
| +                                            checkerboard.get())), | 
| +            SkDilateImageFilter::Make(2, 2, checkerboard), | 
| +            SkErodeImageFilter::Make(2, 2, checkerboard), | 
| +            SkOffsetImageFilter::Make(SkIntToScalar(-16), SkIntToScalar(32), nullptr), | 
| +            SkImageFilter::MakeMatrixFilter(resizeMatrix, kNone_SkFilterQuality, nullptr), | 
| +            SkLightingImageFilter::MakePointLitDiffuse(pointLocation, SK_ColorWHITE, SK_Scalar1, | 
| +                                                       SkIntToScalar(2), checkerboard), | 
|  | 
| }; | 
|  | 
| @@ -131,10 +133,6 @@ protected: | 
| } | 
| canvas->restore(); | 
|  | 
| -        for (size_t i = 0; i < SK_ARRAY_COUNT(filters); ++i) { | 
| -            SkSafeUnref(filters[i]); | 
| -        } | 
| - | 
| SkPaint noisePaint; | 
| noisePaint.setShader(SkPerlinNoiseShader::MakeFractalNoise(0.1f, 0.05f, 1, 0)); | 
|  | 
| @@ -142,7 +140,7 @@ protected: | 
| canvas->translate(SK_ARRAY_COUNT(filters)*(r.width() + margin), 0); | 
| for (int xOffset = 0; xOffset < 80; xOffset += 16) { | 
| bounds.fLeft = SkIntToScalar(xOffset); | 
| -            draw_clipped_filter(canvas, rectFilter.get(), 0, r, bounds); | 
| +            draw_clipped_filter(canvas, rectFilter, 0, r, bounds); | 
| canvas->translate(0, r.height() + margin); | 
| } | 
| } | 
|  |