| Index: gm/shaderbounds.cpp | 
| diff --git a/gm/shaderbounds.cpp b/gm/shaderbounds.cpp | 
| index fd42973dba6295a049b7e9f07b92ea7b185ac588..503f8f5b1eaafa191fc83cab876a7543b0f610d3 100644 | 
| --- a/gm/shaderbounds.cpp | 
| +++ b/gm/shaderbounds.cpp | 
| @@ -4,30 +4,31 @@ | 
| * Use of this source code is governed by a BSD-style license that can be | 
| * found in the LICENSE file. | 
| */ | 
| + | 
| #include "gm.h" | 
| #include "SkGradientShader.h" | 
|  | 
| namespace skiagm { | 
|  | 
| -static SkShader* MakeLinear(SkScalar width, SkScalar height, bool alternate, | 
| +static sk_sp<SkShader> MakeLinear(SkScalar width, SkScalar height, bool alternate, | 
| const SkMatrix& localMatrix) { | 
| -  SkPoint pts[2] = { {0, 0}, {width, height}}; | 
| -  SkColor colors[2] = {SK_ColorRED, SK_ColorGREEN}; | 
| -  if (alternate) { | 
| -    pts[1].fY = 0; | 
| -    colors[0] = SK_ColorBLUE; | 
| -    colors[1] = SK_ColorYELLOW; | 
| -  } | 
| -  return SkGradientShader::CreateLinear(pts, colors, nullptr, 2, | 
| -                                        SkShader::kClamp_TileMode, 0, &localMatrix); | 
| +    SkPoint pts[2] = { {0, 0}, {width, height}}; | 
| +    SkColor colors[2] = {SK_ColorRED, SK_ColorGREEN}; | 
| +    if (alternate) { | 
| +        pts[1].fY = 0; | 
| +        colors[0] = SK_ColorBLUE; | 
| +        colors[1] = SK_ColorYELLOW; | 
| +    } | 
| +    return SkGradientShader::MakeLinear(pts, colors, nullptr, 2, SkShader::kClamp_TileMode, | 
| +                                        0, &localMatrix); | 
| } | 
|  | 
| /////////////////////////////////////////////////////////////////////////////// | 
|  | 
| class ShaderBoundsGM : public GM { | 
| public: | 
| -    typedef SkShader* (*ShaderGenFunc)(SkScalar width, SkScalar height, | 
| -                                       bool alternate, const SkMatrix& localMatrix); | 
| +    typedef sk_sp<SkShader> (*ShaderGenFunc)(SkScalar width, SkScalar height, | 
| +                                             bool alternate, const SkMatrix& localMatrix); | 
| ShaderBoundsGM(ShaderGenFunc maker, const SkString& name) | 
| : fShaderMaker(maker), | 
| fName(name) { | 
| @@ -62,20 +63,20 @@ protected: | 
|  | 
| // Background shader. | 
| SkPaint paint; | 
| -        paint.setShader(MakeShader(559, 387, false))->unref(); | 
| +        paint.setShader(MakeShader(559, 387, false)); | 
| SkRect r = SkRect::MakeXYWH(SkIntToScalar(-12), SkIntToScalar(-41), | 
| SkIntToScalar(571), SkIntToScalar(428)); | 
| canvas->drawRect(r, paint); | 
|  | 
| // Constrained shader. | 
| -        paint.setShader(MakeShader(101, 151, true))->unref(); | 
| +        paint.setShader(MakeShader(101, 151, true)); | 
| r = SkRect::MakeXYWH(SkIntToScalar(43), SkIntToScalar(71), | 
| SkIntToScalar(101), SkIntToScalar(151)); | 
| canvas->clipRect(r); | 
| canvas->drawRect(r, paint); | 
| } | 
|  | 
| -    SkShader* MakeShader(int width, int height, bool background) { | 
| +    sk_sp<SkShader> MakeShader(int width, int height, bool background) { | 
| SkScalar scale = 0.5f; | 
| if (background) { | 
| scale = 0.6f; | 
| @@ -83,8 +84,7 @@ protected: | 
| SkScalar shaderWidth = width / scale; | 
| SkScalar shaderHeight = height / scale; | 
| SkMatrix shaderScale = SkMatrix::MakeScale(scale); | 
| -        SkShader* shader = fShaderMaker(shaderWidth, shaderHeight, background, shaderScale); | 
| -        return shader; | 
| +        return fShaderMaker(shaderWidth, shaderHeight, background, shaderScale); | 
| } | 
|  | 
| private: | 
| @@ -93,7 +93,7 @@ private: | 
| ShaderGenFunc fShaderMaker; | 
| SkString fName; | 
|  | 
| -    SkShader* MakeShader(bool background); | 
| +    sk_sp<SkShader> MakeShader(bool background); | 
| }; | 
|  | 
| /////////////////////////////////////////////////////////////////////////////// | 
|  |