| Index: src/core/SkDraw.cpp
|
| diff --git a/src/core/SkDraw.cpp b/src/core/SkDraw.cpp
|
| index c47922136975afa634274bc5b7008d2aeec06d63..409b652e93254a9aebfb0f14e596222a2521e11c 100644
|
| --- a/src/core/SkDraw.cpp
|
| +++ b/src/core/SkDraw.cpp
|
| @@ -81,10 +81,10 @@ public:
|
| SkAutoBitmapShaderInstall(const SkBitmap& src, const SkPaint& paint,
|
| const SkMatrix* localMatrix = nullptr)
|
| : fPaint(paint) /* makes a copy of the paint */ {
|
| - fPaint.setShader(SkCreateBitmapShader(src, SkShader::kClamp_TileMode,
|
| - SkShader::kClamp_TileMode,
|
| - localMatrix, &fAllocator));
|
| + fPaint.setShader(SkMakeBitmapShader(src, SkShader::kClamp_TileMode,
|
| + SkShader::kClamp_TileMode, localMatrix, &fAllocator));
|
| // we deliberately left the shader with an owner-count of 2
|
| + fPaint.getShader()->ref();
|
| SkASSERT(2 == fPaint.getShader()->getRefCnt());
|
| }
|
|
|
| @@ -1880,7 +1880,7 @@ void SkDraw::drawVertices(SkCanvas::VertexMode vmode, int count,
|
| Thus for texture drawing, we need both texture[] and a shader.
|
| */
|
|
|
| - SkTriColorShader triShader; // must be above declaration of p
|
| + auto triShader = sk_make_sp<SkTriColorShader>();
|
| SkPaint p(paint);
|
|
|
| SkShader* shader = p.getShader();
|
| @@ -1894,11 +1894,12 @@ void SkDraw::drawVertices(SkCanvas::VertexMode vmode, int count,
|
| }
|
|
|
| // setup the custom shader (if needed)
|
| - SkAutoTUnref<SkComposeShader> composeShader;
|
| + sk_sp<SkShader> composeShader;
|
| if (colors) {
|
| if (nullptr == textures) {
|
| // just colors (no texture)
|
| - shader = p.setShader(&triShader);
|
| + p.setShader(triShader);
|
| + shader = p.getShader();
|
| } else {
|
| // colors * texture
|
| SkASSERT(shader);
|
| @@ -1907,7 +1908,7 @@ void SkDraw::drawVertices(SkCanvas::VertexMode vmode, int count,
|
| xmode = SkXfermode::Create(SkXfermode::kModulate_Mode);
|
| releaseMode = true;
|
| }
|
| - composeShader.reset(new SkComposeShader(&triShader, shader, xmode));
|
| + composeShader = sk_make_sp<SkComposeShader>(triShader, sk_ref_sp(shader), xmode);
|
| p.setShader(composeShader);
|
| if (releaseMode) {
|
| xmode->unref();
|
| @@ -1940,14 +1941,14 @@ void SkDraw::drawVertices(SkCanvas::VertexMode vmode, int count,
|
| }
|
| }
|
| if (colors) {
|
| - triShader.bindSetupData(&verticesSetup);
|
| + triShader->bindSetupData(&verticesSetup);
|
| }
|
|
|
| SkPoint tmp[] = {
|
| devVerts[state.f0], devVerts[state.f1], devVerts[state.f2]
|
| };
|
| SkScan::FillTriangle(tmp, *fRC, blitter.get());
|
| - triShader.bindSetupData(NULL);
|
| + triShader->bindSetupData(NULL);
|
| }
|
| } else {
|
| // no colors[] and no texture, stroke hairlines with paint's color.
|
|
|