aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar reed <reed@google.com>2016-03-21 13:25:16 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2016-03-21 13:25:16 -0700
commit7b380d0d0e91ae6967c52bfa14853a77b9551de4 (patch)
treee76ea25f431624e01b51ca605761438fd4560120
parentdc6c9bf91c158e89cd9d5ef19dfbf1da98c598a6 (diff)
guard rasterizer and drawlooper setters
-rw-r--r--bench/BlurRoundRectBench.cpp2
-rw-r--r--bench/RectoriBench.cpp6
-rw-r--r--gm/blurroundrect.cpp2
-rw-r--r--gm/circles.cpp7
-rw-r--r--gm/drawlooper.cpp8
-rw-r--r--gm/megalooper.cpp12
-rw-r--r--gm/rects.cpp7
-rw-r--r--gm/shadows.cpp33
-rw-r--r--gm/textbloblooper.cpp62
-rw-r--r--gm/texteffects.cpp7
-rw-r--r--gyp/skia_for_android_framework_defines.gypi1
-rw-r--r--include/core/SkPaint.h4
-rw-r--r--include/effects/SkBlurDrawLooper.h8
-rw-r--r--include/effects/SkLayerDrawLooper.h7
-rw-r--r--include/effects/SkLayerRasterizer.h15
-rw-r--r--public.bzl1
-rw-r--r--samplecode/ClockFaceView.cpp2
-rw-r--r--samplecode/SampleAll.cpp4
-rw-r--r--samplecode/SampleFilterFuzz.cpp3
-rw-r--r--samplecode/SamplePathEffects.cpp2
-rw-r--r--samplecode/SampleSlides.cpp4
-rw-r--r--samplecode/SampleTextOnPath.cpp6
-rw-r--r--samplecode/SampleTiling.cpp8
-rw-r--r--samplecode/SampleUnpremul.cpp7
-rw-r--r--src/core/SkPaint.cpp8
-rw-r--r--src/core/SkReadBuffer.h8
-rw-r--r--src/effects/SkBlurDrawLooper.cpp2
-rw-r--r--src/effects/SkLayerDrawLooper.cpp6
-rw-r--r--src/effects/SkLayerRasterizer.cpp9
-rw-r--r--tests/BlurTest.cpp17
-rw-r--r--tests/LayerDrawLooperTest.cpp6
-rw-r--r--tests/LayerRasterizerTest.cpp12
-rw-r--r--tests/PaintTest.cpp3
-rw-r--r--tests/QuickRejectTest.cpp2
-rw-r--r--tools/android/SkAndroidSDKCanvas.cpp1
-rw-r--r--tools/debugger/SkDrawCommand.cpp5
36 files changed, 151 insertions, 146 deletions
diff --git a/bench/BlurRoundRectBench.cpp b/bench/BlurRoundRectBench.cpp
index 5213276a0c..85852d581e 100644
--- a/bench/BlurRoundRectBench.cpp
+++ b/bench/BlurRoundRectBench.cpp
@@ -67,7 +67,7 @@ public:
dullPaint.setAntiAlias(true);
SkPaint loopedPaint;
- loopedPaint.setLooper(looperBuilder.detachLooper())->unref();
+ loopedPaint.setLooper(looperBuilder.detach());
loopedPaint.setAntiAlias(true);
loopedPaint.setColor(SK_ColorCYAN);
diff --git a/bench/RectoriBench.cpp b/bench/RectoriBench.cpp
index 1f4da868b0..e2a44e383f 100644
--- a/bench/RectoriBench.cpp
+++ b/bench/RectoriBench.cpp
@@ -52,7 +52,7 @@ protected:
SkScalar translate = 2.0f * size;
SkPaint paint;
- paint.setLooper(this->createLooper(-translate, blurSigma))->unref();
+ paint.setLooper(this->createLooper(-translate, blurSigma));
paint.setColor(0xff000000 | Random.nextU());
paint.setAntiAlias(true);
@@ -71,7 +71,7 @@ private:
H = 480,
};
- SkLayerDrawLooper* createLooper(SkScalar xOff, SkScalar sigma) {
+ sk_sp<SkDrawLooper> createLooper(SkScalar xOff, SkScalar sigma) {
SkLayerDrawLooper::Builder looperBuilder;
//-----------------------------------------------
@@ -96,7 +96,7 @@ private:
info.fOffset.set(0, 0);
paint = looperBuilder.addLayer(info);
- return looperBuilder.detachLooper();
+ return looperBuilder.detach();
}
typedef Benchmark INHERITED;
diff --git a/gm/blurroundrect.cpp b/gm/blurroundrect.cpp
index ef20e25860..fe4a939946 100644
--- a/gm/blurroundrect.cpp
+++ b/gm/blurroundrect.cpp
@@ -73,7 +73,7 @@ public:
SkPaint paint;
canvas->drawRect(fRRect.rect(), paint);
- paint.setLooper(looperBuilder.detachLooper())->unref();
+ paint.setLooper(looperBuilder.detach());
paint.setColor(SK_ColorCYAN);
paint.setAntiAlias(true);
diff --git a/gm/circles.cpp b/gm/circles.cpp
index 4d3e33daee..d9b25c0df3 100644
--- a/gm/circles.cpp
+++ b/gm/circles.cpp
@@ -76,15 +76,12 @@ protected:
// AA with blur
SkPaint p;
p.setAntiAlias(true);
- SkDrawLooper* shadowLooper =
- SkBlurDrawLooper::Create(SK_ColorBLUE,
+ p.setLooper(SkBlurDrawLooper::Make(SK_ColorBLUE,
SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(10)),
SkIntToScalar(5), SkIntToScalar(10),
SkBlurDrawLooper::kIgnoreTransform_BlurFlag |
SkBlurDrawLooper::kOverrideColor_BlurFlag |
- SkBlurDrawLooper::kHighQuality_BlurFlag);
- SkAutoUnref aurL0(shadowLooper);
- p.setLooper(shadowLooper);
+ SkBlurDrawLooper::kHighQuality_BlurFlag));
fPaints.push_back(p);
}
diff --git a/gm/drawlooper.cpp b/gm/drawlooper.cpp
index 9f922a5ae4..7ee7747208 100644
--- a/gm/drawlooper.cpp
+++ b/gm/drawlooper.cpp
@@ -22,10 +22,6 @@ public:
this->setBGColor(sk_tool_utils::color_to_565(0xFFDDDDDD));
}
- virtual ~DrawLooperGM() {
- SkSafeUnref(fLooper);
- }
-
protected:
virtual SkISize onISize() override {
return SkISize::Make(520, 160);
@@ -55,7 +51,7 @@ protected:
}
private:
- SkLayerDrawLooper* fLooper;
+ sk_sp<SkDrawLooper> fLooper;
void init() {
if (fLooper) return;
@@ -91,7 +87,7 @@ private:
paint->setMaskFilter(mf)->unref();
}
}
- fLooper = looperBuilder.detachLooper();
+ fLooper = looperBuilder.detach();
}
typedef GM INHERITED;
diff --git a/gm/megalooper.cpp b/gm/megalooper.cpp
index ae92971982..5fe9af298b 100644
--- a/gm/megalooper.cpp
+++ b/gm/megalooper.cpp
@@ -131,7 +131,7 @@ private:
for (int i = 0; i < 4; ++i) {
SkPaint loopPaint;
- loopPaint.setLooper(create1Looper(-kOffsetToOutsideClip, 0, gColors[i]))->unref();
+ loopPaint.setLooper(create1Looper(-kOffsetToOutsideClip, 0, gColors[i]));
loopPaint.setAntiAlias(true);
SkRect outerClip = {
@@ -161,7 +161,7 @@ private:
}
// Create a 1-tier drawlooper
- SkLayerDrawLooper* create1Looper(SkScalar xOff, SkScalar yOff, SkColor color) {
+ sk_sp<SkDrawLooper> create1Looper(SkScalar xOff, SkScalar yOff, SkColor color) {
SkLayerDrawLooper::Builder looperBuilder;
SkLayerDrawLooper::LayerInfo info;
@@ -178,7 +178,7 @@ private:
SkColorFilter* cf = SkColorFilter::CreateModeFilter(color, SkXfermode::kSrcIn_Mode);
paint->setColorFilter(cf)->unref();
- return looperBuilder.detachLooper();
+ return looperBuilder.detach();
}
void draw1x4(SkCanvas* canvas, SkScalar x, SkScalar y) {
@@ -193,7 +193,7 @@ private:
SkPaint paint;
paint.setAntiAlias(true);
- paint.setLooper(create4Looper(-kOffsetToOutsideClip-kHalfSquareSize, 0))->unref();
+ paint.setLooper(create4Looper(-kOffsetToOutsideClip-kHalfSquareSize, 0));
canvas->save();
canvas->clipRect(outerClip, SkRegion::kIntersect_Op);
@@ -205,7 +205,7 @@ private:
}
// Create a 4-tier draw looper
- SkLayerDrawLooper* create4Looper(SkScalar xOff, SkScalar yOff) {
+ sk_sp<SkDrawLooper> create4Looper(SkScalar xOff, SkScalar yOff) {
SkLayerDrawLooper::Builder looperBuilder;
SkLayerDrawLooper::LayerInfo info;
@@ -226,7 +226,7 @@ private:
paint->setColorFilter(cf)->unref();
}
- return looperBuilder.detachLooper();
+ return looperBuilder.detach();
}
typedef GM INHERITED;
diff --git a/gm/rects.cpp b/gm/rects.cpp
index 6f4c75e22f..51eeff0bfb 100644
--- a/gm/rects.cpp
+++ b/gm/rects.cpp
@@ -91,15 +91,12 @@ protected:
SkPaint p;
p.setColor(SK_ColorWHITE);
p.setAntiAlias(true);
- SkDrawLooper* shadowLooper =
- SkBlurDrawLooper::Create(SK_ColorWHITE,
+ p.setLooper(SkBlurDrawLooper::Make(SK_ColorWHITE,
SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(10)),
SkIntToScalar(5), SkIntToScalar(10),
SkBlurDrawLooper::kIgnoreTransform_BlurFlag |
SkBlurDrawLooper::kOverrideColor_BlurFlag |
- SkBlurDrawLooper::kHighQuality_BlurFlag);
- SkAutoUnref aurL0(shadowLooper);
- p.setLooper(shadowLooper);
+ SkBlurDrawLooper::kHighQuality_BlurFlag));
fPaints.push_back(p);
}
diff --git a/gm/shadows.cpp b/gm/shadows.cpp
index 5696240d21..6263af29bf 100644
--- a/gm/shadows.cpp
+++ b/gm/shadows.cpp
@@ -54,45 +54,36 @@ protected:
}
void onDraw(SkCanvas* canvas) override {
- SkDrawLooper* shadowLoopers[5];
- shadowLoopers[0] =
- SkBlurDrawLooper::Create(SK_ColorBLUE,
+ sk_sp<SkDrawLooper> shadowLoopers[] = {
+ SkBlurDrawLooper::Make(SK_ColorBLUE,
SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(10)),
SkIntToScalar(5), SkIntToScalar(10),
SkBlurDrawLooper::kIgnoreTransform_BlurFlag |
SkBlurDrawLooper::kOverrideColor_BlurFlag |
- SkBlurDrawLooper::kHighQuality_BlurFlag);
- SkAutoUnref aurL0(shadowLoopers[0]);
- shadowLoopers[1] =
- SkBlurDrawLooper::Create(SK_ColorBLUE,
+ SkBlurDrawLooper::kHighQuality_BlurFlag),
+ SkBlurDrawLooper::Make(SK_ColorBLUE,
SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(10)),
SkIntToScalar(5), SkIntToScalar(10),
SkBlurDrawLooper::kIgnoreTransform_BlurFlag |
- SkBlurDrawLooper::kOverrideColor_BlurFlag);
- SkAutoUnref aurL1(shadowLoopers[1]);
- shadowLoopers[2] =
- SkBlurDrawLooper::Create(SK_ColorBLACK,
+ SkBlurDrawLooper::kOverrideColor_BlurFlag),
+ SkBlurDrawLooper::Make(SK_ColorBLACK,
SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(5)),
SkIntToScalar(5),
SkIntToScalar(10),
SkBlurDrawLooper::kIgnoreTransform_BlurFlag |
- SkBlurDrawLooper::kHighQuality_BlurFlag);
- SkAutoUnref aurL2(shadowLoopers[2]);
- shadowLoopers[3] =
- SkBlurDrawLooper::Create(0x7FFF0000,
+ SkBlurDrawLooper::kHighQuality_BlurFlag),
+ SkBlurDrawLooper::Make(0x7FFF0000,
SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(5)),
SkIntToScalar(-5), SkIntToScalar(-10),
SkBlurDrawLooper::kIgnoreTransform_BlurFlag |
SkBlurDrawLooper::kOverrideColor_BlurFlag |
- SkBlurDrawLooper::kHighQuality_BlurFlag);
- SkAutoUnref aurL3(shadowLoopers[3]);
- shadowLoopers[4] =
- SkBlurDrawLooper::Create(SK_ColorBLACK, SkIntToScalar(0),
+ SkBlurDrawLooper::kHighQuality_BlurFlag),
+ SkBlurDrawLooper::Make(SK_ColorBLACK, SkIntToScalar(0),
SkIntToScalar(5), SkIntToScalar(5),
SkBlurDrawLooper::kIgnoreTransform_BlurFlag |
SkBlurDrawLooper::kOverrideColor_BlurFlag |
- SkBlurDrawLooper::kHighQuality_BlurFlag);
- SkAutoUnref aurL4(shadowLoopers[4]);
+ SkBlurDrawLooper::kHighQuality_BlurFlag),
+ };
static const struct {
SkColor fColor;
diff --git a/gm/textbloblooper.cpp b/gm/textbloblooper.cpp
index d54490272c..d9701131a4 100644
--- a/gm/textbloblooper.cpp
+++ b/gm/textbloblooper.cpp
@@ -107,10 +107,10 @@ static void kitchen_sink(SkPaint* paint) {
}
-static SkLayerDrawLooper* setupLooper(SkLayerDrawLooper::BitFlags bits,
- LooperProc proc,
- const LooperSettings settings[],
- size_t size) {
+static sk_sp<SkDrawLooper> setupLooper(SkLayerDrawLooper::BitFlags bits,
+ LooperProc proc,
+ const LooperSettings settings[],
+ size_t size) {
SkLayerDrawLooper::Builder looperBuilder;
SkLayerDrawLooper::LayerInfo info;
@@ -129,7 +129,7 @@ static SkLayerDrawLooper* setupLooper(SkLayerDrawLooper::BitFlags bits,
(*proc)(paint);
}
}
- return looperBuilder.detachLooper();
+ return looperBuilder.detach();
}
class TextBlobLooperGM : public GM {
@@ -186,33 +186,33 @@ protected:
{ SkXfermode::kSrcOver_Mode, 0x50FF00FF, SkPaint::kFill_Style, 0, 20.f, 0, false },
};
- fLoopers.push_back().reset(setupLooper(SkLayerDrawLooper::kMaskFilter_Bit |
- SkLayerDrawLooper::kXfermode_Bit |
- SkLayerDrawLooper::kStyle_Bit, &mask_filter,
- compound, SK_ARRAY_COUNT(compound)));
- fLoopers.push_back().reset(setupLooper(SkLayerDrawLooper::kPathEffect_Bit |
- SkLayerDrawLooper::kXfermode_Bit, &path_effect,
- looperSandwhich, SK_ARRAY_COUNT(looperSandwhich)));
- fLoopers.push_back().reset(setupLooper(SkLayerDrawLooper::kShader_Bit |
- SkLayerDrawLooper::kColorFilter_Bit |
- SkLayerDrawLooper::kXfermode_Bit, &color_filter,
- looperSandwhich, SK_ARRAY_COUNT(looperSandwhich)));
- fLoopers.push_back().reset(setupLooper(SkLayerDrawLooper::kShader_Bit |
- SkLayerDrawLooper::kColorFilter_Bit |
- SkLayerDrawLooper::kXfermode_Bit, &color_filter,
- xfermode, SK_ARRAY_COUNT(xfermode)));
- fLoopers.push_back().reset(setupLooper(0, nullptr, skew, SK_ARRAY_COUNT(skew)));
- fLoopers.push_back().reset(setupLooper(SkLayerDrawLooper::kMaskFilter_Bit |
- SkLayerDrawLooper::kShader_Bit |
- SkLayerDrawLooper::kColorFilter_Bit |
- SkLayerDrawLooper::kPathEffect_Bit |
- SkLayerDrawLooper::kStyle_Bit |
- SkLayerDrawLooper::kXfermode_Bit, &kitchen_sink,
- kitchenSink, SK_ARRAY_COUNT(kitchenSink)));
+ fLoopers.push_back(setupLooper(SkLayerDrawLooper::kMaskFilter_Bit |
+ SkLayerDrawLooper::kXfermode_Bit |
+ SkLayerDrawLooper::kStyle_Bit, &mask_filter,
+ compound, SK_ARRAY_COUNT(compound)));
+ fLoopers.push_back(setupLooper(SkLayerDrawLooper::kPathEffect_Bit |
+ SkLayerDrawLooper::kXfermode_Bit, &path_effect,
+ looperSandwhich, SK_ARRAY_COUNT(looperSandwhich)));
+ fLoopers.push_back(setupLooper(SkLayerDrawLooper::kShader_Bit |
+ SkLayerDrawLooper::kColorFilter_Bit |
+ SkLayerDrawLooper::kXfermode_Bit, &color_filter,
+ looperSandwhich, SK_ARRAY_COUNT(looperSandwhich)));
+ fLoopers.push_back(setupLooper(SkLayerDrawLooper::kShader_Bit |
+ SkLayerDrawLooper::kColorFilter_Bit |
+ SkLayerDrawLooper::kXfermode_Bit, &color_filter,
+ xfermode, SK_ARRAY_COUNT(xfermode)));
+ fLoopers.push_back(setupLooper(0, nullptr, skew, SK_ARRAY_COUNT(skew)));
+ fLoopers.push_back(setupLooper(SkLayerDrawLooper::kMaskFilter_Bit |
+ SkLayerDrawLooper::kShader_Bit |
+ SkLayerDrawLooper::kColorFilter_Bit |
+ SkLayerDrawLooper::kPathEffect_Bit |
+ SkLayerDrawLooper::kStyle_Bit |
+ SkLayerDrawLooper::kXfermode_Bit, &kitchen_sink,
+ kitchenSink, SK_ARRAY_COUNT(kitchenSink)));
// Test we respect overrides
- fLoopers.push_back().reset(setupLooper(0, &kitchen_sink,
- kitchenSink, SK_ARRAY_COUNT(kitchenSink)));
+ fLoopers.push_back(setupLooper(0, &kitchen_sink,
+ kitchenSink, SK_ARRAY_COUNT(kitchenSink)));
}
SkString onShortName() override {
@@ -247,7 +247,7 @@ protected:
private:
SkAutoTUnref<const SkTextBlob> fBlob;
- SkTArray<SkAutoTUnref<SkLayerDrawLooper>, true> fLoopers;
+ SkTArray<sk_sp<SkDrawLooper>, true> fLoopers;
typedef GM INHERITED;
};
diff --git a/gm/texteffects.cpp b/gm/texteffects.cpp
index aa3d3758ab..5962cd7f16 100644
--- a/gm/texteffects.cpp
+++ b/gm/texteffects.cpp
@@ -88,7 +88,7 @@ static void r6(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) {
p.setAntiAlias(false);
SkLayerRasterizer::Builder rastBuilder2;
r5(&rastBuilder2, p);
- p.setRasterizer(rastBuilder2.detachRasterizer())->unref();
+ p.setRasterizer(rastBuilder2.detach());
p.setXfermodeMode(SkXfermode::kClear_Mode);
rastBuilder->addLayer(p);
}
@@ -153,14 +153,13 @@ static const raster_proc gRastProcs[] = {
static void apply_shader(SkPaint* paint, int index) {
raster_proc proc = gRastProcs[index];
- if (proc)
- {
+ if (proc) {
SkPaint p;
SkLayerRasterizer::Builder rastBuilder;
p.setAntiAlias(true);
proc(&rastBuilder, p);
- paint->setRasterizer(rastBuilder.detachRasterizer())->unref();
+ paint->setRasterizer(rastBuilder.detach());
}
#if 0
diff --git a/gyp/skia_for_android_framework_defines.gypi b/gyp/skia_for_android_framework_defines.gypi
index d6324bd40a..8660475463 100644
--- a/gyp/skia_for_android_framework_defines.gypi
+++ b/gyp/skia_for_android_framework_defines.gypi
@@ -17,6 +17,7 @@
# Needed until we fix https://bug.skia.org/2440 .
'SK_SUPPORT_LEGACY_CLIPTOLAYERFLAG',
'SK_IGNORE_LINEONLY_AA_CONVEX_PATH_OPTS',
+ 'SK_SUPPORT_LEGACY_MINOR_EFFECT_PTR',
'SK_SUPPORT_LEGACY_GRADIENT_DITHERING',
'SK_SUPPORT_LEGACY_DRAWFILTER',
'SK_SUPPORT_LEGACY_CREATESHADER_PTR',
diff --git a/include/core/SkPaint.h b/include/core/SkPaint.h
index 8266eaaddc..f5c3bc3d4b 100644
--- a/include/core/SkPaint.h
+++ b/include/core/SkPaint.h
@@ -627,7 +627,9 @@ public:
the paint.
@return rasterizer
*/
+#ifdef SK_SUPPORT_LEGACY_MINOR_EFFECT_PTR
SkRasterizer* setRasterizer(SkRasterizer* rasterizer);
+#endif
void setRasterizer(sk_sp<SkRasterizer>);
SkImageFilter* getImageFilter() const { return fImageFilter.get(); }
@@ -651,7 +653,9 @@ public:
* @param looper May be NULL. The new looper to be installed in the paint.
* @return looper
*/
+#ifdef SK_SUPPORT_LEGACY_MINOR_EFFECT_PTR
SkDrawLooper* setLooper(SkDrawLooper* looper);
+#endif
void setLooper(sk_sp<SkDrawLooper>);
enum Align {
diff --git a/include/effects/SkBlurDrawLooper.h b/include/effects/SkBlurDrawLooper.h
index 930af15ff8..0371700ba4 100644
--- a/include/effects/SkBlurDrawLooper.h
+++ b/include/effects/SkBlurDrawLooper.h
@@ -35,10 +35,16 @@ public:
kAll_BlurFlag = 0x07
};
+ static sk_sp<SkDrawLooper> Make(SkColor color, SkScalar sigma, SkScalar dx, SkScalar dy,
+ uint32_t flags = kNone_BlurFlag) {
+ return sk_sp<SkDrawLooper>(new SkBlurDrawLooper(color, sigma, dx, dy, flags));
+ }
+#ifdef SK_SUPPORT_LEGACY_MINOR_EFFECT_PTR
static SkDrawLooper* Create(SkColor color, SkScalar sigma, SkScalar dx, SkScalar dy,
uint32_t flags = kNone_BlurFlag) {
- return new SkBlurDrawLooper(color, sigma, dx, dy, flags);
+ return Make(color, sigma, dx, dy, flags).release();
}
+#endif
virtual ~SkBlurDrawLooper();
diff --git a/include/effects/SkLayerDrawLooper.h b/include/effects/SkLayerDrawLooper.h
index 76172dfd4b..6ddde888eb 100644
--- a/include/effects/SkLayerDrawLooper.h
+++ b/include/effects/SkLayerDrawLooper.h
@@ -142,7 +142,12 @@ public:
* Pass list of layers on to newly built looper and return it. This will
* also reset the builder, so it can be used to build another looper.
*/
- SkLayerDrawLooper* detachLooper();
+ sk_sp<SkDrawLooper> detach();
+#ifdef SK_SUPPORT_LEGACY_MINOR_EFFECT_PTR
+ SkLayerDrawLooper* detachLooper() {
+ return (SkLayerDrawLooper*)this->detach().release();
+ }
+#endif
private:
Rec* fRecs;
diff --git a/include/effects/SkLayerRasterizer.h b/include/effects/SkLayerRasterizer.h
index c6ac1de363..9ddcd4e6c3 100644
--- a/include/effects/SkLayerRasterizer.h
+++ b/include/effects/SkLayerRasterizer.h
@@ -1,4 +1,3 @@
-
/*
* Copyright 2006 The Android Open Source Project
*
@@ -6,7 +5,6 @@
* found in the LICENSE file.
*/
-
#ifndef SkLayerRasterizer_DEFINED
#define SkLayerRasterizer_DEFINED
@@ -44,7 +42,7 @@ public:
*
* The caller is responsible for calling unref() on the returned object, if non NULL.
*/
- SkLayerRasterizer* detachRasterizer();
+ sk_sp<SkLayerRasterizer> detach();
/**
* Create and return a new immutable SkLayerRasterizer that contains a shapshot of the
@@ -58,7 +56,16 @@ public:
*
* The caller is responsible for calling unref() on the returned object, if non NULL.
*/
- SkLayerRasterizer* snapshotRasterizer() const;
+ sk_sp<SkLayerRasterizer> snapshot() const;
+
+#ifdef SK_SUPPORT_LEGACY_MINOR_EFFECT_PTR
+ SkLayerRasterizer* detachRasterizer() {
+ return this->detach().release();
+ }
+ SkLayerRasterizer* snapshotRasterizer() const {
+ return this->snapshot().release();
+ }
+#endif
private:
SkDeque* fLayers;
diff --git a/public.bzl b/public.bzl
index 5729be868f..11a7ca3ab3 100644
--- a/public.bzl
+++ b/public.bzl
@@ -523,6 +523,7 @@ DEFINES_ALL = [
# Chrome DEFINES.
"SK_USE_FLOATBITS",
"SK_USE_FREETYPE_EMBOLDEN",
+ "SK_SUPPORT_LEGACY_MINOR_EFFECT_PTR",
"SK_SUPPORT_LEGACY_PATHEFFECT_PTR",
# Turn on a few Google3-specific build fixes.
"GOOGLE3",
diff --git a/samplecode/ClockFaceView.cpp b/samplecode/ClockFaceView.cpp
index f5b43fb82f..80debebcf9 100644
--- a/samplecode/ClockFaceView.cpp
+++ b/samplecode/ClockFaceView.cpp
@@ -163,7 +163,7 @@ static void apply_shader(SkPaint* paint, float scale)
p.setAntiAlias(true);
r7(&rastBuilder, p, scale);
- paint->setRasterizer(rastBuilder.detachRasterizer())->unref();
+ paint->setRasterizer(rastBuilder.detach());
paint->setColor(SK_ColorBLUE);
}
diff --git a/samplecode/SampleAll.cpp b/samplecode/SampleAll.cpp
index 2bbe29f383..b8b0ee677d 100644
--- a/samplecode/SampleAll.cpp
+++ b/samplecode/SampleAll.cpp
@@ -152,7 +152,7 @@ static void r6(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) {
p.setAntiAlias(false);
SkLayerRasterizer::Builder rastBuilder2;
r5(&rastBuilder2, p);
- p.setRasterizer(rastBuilder2.detachRasterizer())->unref();
+ p.setRasterizer(rastBuilder2.detach());
p.setXfermodeMode(SkXfermode::kClear_Mode);
rastBuilder->addLayer(p);
}
@@ -246,7 +246,7 @@ static void apply_shader(SkPaint* paint, int index) {
p.setAntiAlias(true);
proc(&rastBuilder, p);
- paint->setRasterizer(rastBuilder.detachRasterizer())->unref();
+ paint->setRasterizer(rastBuilder.detach());
}
#if 1
diff --git a/samplecode/SampleFilterFuzz.cpp b/samplecode/SampleFilterFuzz.cpp
index fe2fb0b2ff..dd0fa4044e 100644
--- a/samplecode/SampleFilterFuzz.cpp
+++ b/samplecode/SampleFilterFuzz.cpp
@@ -536,8 +536,7 @@ static SkPaint make_paint() {
paintForRasterizer = make_paint();
}
rasterizerBuilder.addLayer(paintForRasterizer);
- SkAutoTUnref<SkRasterizer> rasterizer(rasterizerBuilder.detachRasterizer());
- paint.setRasterizer(rasterizer);
+ paint.setRasterizer(rasterizerBuilder.detach());
paint.setImageFilter(make_image_filter());
SkAutoDataUnref data(make_3Dlut(nullptr, make_bool(), make_bool(), make_bool()));
paint.setTextAlign(make_paint_align());
diff --git a/samplecode/SamplePathEffects.cpp b/samplecode/SamplePathEffects.cpp
index 10715f382a..1f9915d378 100644
--- a/samplecode/SamplePathEffects.cpp
+++ b/samplecode/SamplePathEffects.cpp
@@ -152,7 +152,7 @@ protected:
paint.setARGB(0xFF, 0, 0, 0);
paint.setPathEffect(make_warp_pe(fPhase));
TestRastBuilder testRastBuilder;
- paint.setRasterizer(testRastBuilder.detachRasterizer())->unref();
+ paint.setRasterizer(testRastBuilder.detach());
canvas->drawPath(fPath, paint);
}
diff --git a/samplecode/SampleSlides.cpp b/samplecode/SampleSlides.cpp
index ca0d9df13f..9b054adc2c 100644
--- a/samplecode/SampleSlides.cpp
+++ b/samplecode/SampleSlides.cpp
@@ -544,7 +544,7 @@ static void r6(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p)
p.setAntiAlias(false);
SkLayerRasterizer::Builder rastBuilder2;
r5(&rastBuilder2, p);
- p.setRasterizer(rastBuilder2.detachRasterizer())->unref();
+ p.setRasterizer(rastBuilder2.detach());
p.setXfermodeMode(SkXfermode::kClear_Mode);
rastBuilder->addLayer(p);
}
@@ -615,7 +615,7 @@ static void apply_shader(SkPaint* paint, int index) {
p.setAntiAlias(true);
proc(&rastBuilder, p);
- paint->setRasterizer(rastBuilder.detachRasterizer())->unref();
+ paint->setRasterizer(rastBuilder.detach());
paint->setColor(SK_ColorBLUE);
}
diff --git a/samplecode/SampleTextOnPath.cpp b/samplecode/SampleTextOnPath.cpp
index ea2ae81dc0..7c71084dbb 100644
--- a/samplecode/SampleTextOnPath.cpp
+++ b/samplecode/SampleTextOnPath.cpp
@@ -35,10 +35,8 @@ static void textStrokePath(SkCanvas* canvas) {
canvas->drawPath(path, paint);
- paint.setLooper(SkBlurDrawLooper::Create(SK_ColorBLACK,
- SkBlurMask::ConvertRadiusToSigma(0.002f),
- 0.0f,
- 0.0f))->unref();
+ paint.setLooper(SkBlurDrawLooper::Make(SK_ColorBLACK, SkBlurMask::ConvertRadiusToSigma(0.002f),
+ 0.0f, 0.0f));
const char* text = "DRAWING STROKED TEXT WITH A BLUR ON A PATH";
size_t len = strlen(text);
diff --git a/samplecode/SampleTiling.cpp b/samplecode/SampleTiling.cpp
index 62f055f61e..dbc7d09145 100644
--- a/samplecode/SampleTiling.cpp
+++ b/samplecode/SampleTiling.cpp
@@ -55,12 +55,12 @@ static const int gHeight = 32;
class TilingView : public SampleView {
sk_sp<SkPicture> fTextPicture;
- SkAutoTUnref<SkDrawLooper> fLooper;
+ sk_sp<SkDrawLooper> fLooper;
public:
TilingView()
- : fLooper(SkBlurDrawLooper::Create(0x88000000,
- SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(1)),
- SkIntToScalar(2), SkIntToScalar(2))) {
+ : fLooper(SkBlurDrawLooper::Make(0x88000000,
+ SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(1)),
+ SkIntToScalar(2), SkIntToScalar(2))) {
for (size_t i = 0; i < SK_ARRAY_COUNT(gColorTypes); i++) {
makebm(&fTexture[i], gColorTypes[i], gWidth, gHeight);
}
diff --git a/samplecode/SampleUnpremul.cpp b/samplecode/SampleUnpremul.cpp
index fb9735c017..919fb64e75 100644
--- a/samplecode/SampleUnpremul.cpp
+++ b/samplecode/SampleUnpremul.cpp
@@ -80,10 +80,9 @@ protected:
SkPaint paint;
paint.setAntiAlias(true);
paint.setTextSize(SkIntToScalar(24));
- SkAutoTUnref<SkDrawLooper> looper(
- SkBlurDrawLooper::Create(SK_ColorBLUE,
- SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(2)),
- 0, 0));
+ auto looper(
+ SkBlurDrawLooper::Make(SK_ColorBLUE, SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(2)),
+ 0, 0));
paint.setLooper(looper);
SkScalar height = paint.getFontMetrics(nullptr);
if (!fDecodeSucceeded) {
diff --git a/src/core/SkPaint.cpp b/src/core/SkPaint.cpp
index 331f7794bf..5baabd3f1d 100644
--- a/src/core/SkPaint.cpp
+++ b/src/core/SkPaint.cpp
@@ -370,7 +370,9 @@ void SkPaint::setLooper(sk_sp<SkDrawLooper> looper) { fLooper = std::move(looper
return f; \
}
SET_PTR(Typeface)
+#ifdef SK_SUPPORT_LEGACY_MINOR_EFFECT_PTR
SET_PTR(Rasterizer)
+#endif
SET_PTR(ImageFilter)
SET_PTR(Shader)
SET_PTR(ColorFilter)
@@ -381,10 +383,12 @@ SET_PTR(PathEffect)
SET_PTR(MaskFilter)
#undef SET_PTR
+#ifdef SK_SUPPORT_LEGACY_MINOR_EFFECT_PTR
SkDrawLooper* SkPaint::setLooper(SkDrawLooper* looper) {
fLooper.reset(SkSafeRef(looper));
return looper;
}
+#endif
SkXfermode* SkPaint::setXfermodeMode(SkXfermode::Mode mode) {
fXfermode.reset(SkXfermode::Create(mode));
@@ -1937,8 +1941,8 @@ void SkPaint::unflatten(SkReadBuffer& buffer) {
SkSafeUnref(this->setXfermode(buffer.readXfermode()));
SkSafeUnref(this->setMaskFilter(buffer.readMaskFilter()));
SkSafeUnref(this->setColorFilter(buffer.readColorFilter()));
- SkSafeUnref(this->setRasterizer(buffer.readRasterizer()));
- SkSafeUnref(this->setLooper(buffer.readDrawLooper()));
+ this->setRasterizer(buffer.readRasterizer());
+ this->setLooper(buffer.readDrawLooper());
SkSafeUnref(this->setImageFilter(buffer.readImageFilter()));
if (buffer.isVersionLT(SkReadBuffer::kAnnotationsMovedToCanvas_Version)) {
diff --git a/src/core/SkReadBuffer.h b/src/core/SkReadBuffer.h
index c7ac8480ec..575375eded 100644
--- a/src/core/SkReadBuffer.h
+++ b/src/core/SkReadBuffer.h
@@ -131,13 +131,17 @@ public:
return (T*) this->readFlattenable(T::GetFlattenableType());
}
SkColorFilter* readColorFilter() { return this->readFlattenable<SkColorFilter>(); }
- SkDrawLooper* readDrawLooper() { return this->readFlattenable<SkDrawLooper>(); }
+ sk_sp<SkDrawLooper> readDrawLooper() {
+ return sk_sp<SkDrawLooper>(this->readFlattenable<SkDrawLooper>());
+ }
SkImageFilter* readImageFilter() { return this->readFlattenable<SkImageFilter>(); }
SkMaskFilter* readMaskFilter() { return this->readFlattenable<SkMaskFilter>(); }
sk_sp<SkPathEffect> readPathEffect() {
return sk_sp<SkPathEffect>(this->readFlattenable<SkPathEffect>());
}
- SkRasterizer* readRasterizer() { return this->readFlattenable<SkRasterizer>(); }
+ sk_sp<SkRasterizer> readRasterizer() {
+ return sk_sp<SkRasterizer>(this->readFlattenable<SkRasterizer>());
+ }
sk_sp<SkShader> readShader() { return sk_sp<SkShader>(this->readFlattenable<SkShader>()); }
SkXfermode* readXfermode() { return this->readFlattenable<SkXfermode>(); }
diff --git a/src/effects/SkBlurDrawLooper.cpp b/src/effects/SkBlurDrawLooper.cpp
index 9f10ff5250..d8127eba4e 100644
--- a/src/effects/SkBlurDrawLooper.cpp
+++ b/src/effects/SkBlurDrawLooper.cpp
@@ -68,7 +68,7 @@ SkFlattenable* SkBlurDrawLooper::CreateProc(SkReadBuffer& buffer) {
const SkScalar dx = buffer.readScalar();
const SkScalar dy = buffer.readScalar();
const uint32_t flags = buffer.read32();
- return Create(color, sigma, dx, dy, flags);
+ return Make(color, sigma, dx, dy, flags).release();
}
void SkBlurDrawLooper::flatten(SkWriteBuffer& buffer) const {
diff --git a/src/effects/SkLayerDrawLooper.cpp b/src/effects/SkLayerDrawLooper.cpp
index 83f21e5b40..ae31482ae7 100644
--- a/src/effects/SkLayerDrawLooper.cpp
+++ b/src/effects/SkLayerDrawLooper.cpp
@@ -230,7 +230,7 @@ SkFlattenable* SkLayerDrawLooper::CreateProc(SkReadBuffer& buffer) {
info.fPostTranslate = buffer.readBool();
buffer.readPaint(builder.addLayerOnTop(info));
}
- return builder.detachLooper();
+ return builder.detach().release();
}
#ifndef SK_IGNORE_TO_STRING
@@ -344,7 +344,7 @@ SkPaint* SkLayerDrawLooper::Builder::addLayerOnTop(const LayerInfo& info) {
return &rec->fPaint;
}
-SkLayerDrawLooper* SkLayerDrawLooper::Builder::detachLooper() {
+sk_sp<SkDrawLooper> SkLayerDrawLooper::Builder::detach() {
SkLayerDrawLooper* looper = new SkLayerDrawLooper;
looper->fCount = fCount;
looper->fRecs = fRecs;
@@ -353,5 +353,5 @@ SkLayerDrawLooper* SkLayerDrawLooper::Builder::detachLooper() {
fRecs = nullptr;
fTopRec = nullptr;
- return looper;
+ return sk_sp<SkDrawLooper>(looper);
}
diff --git a/src/effects/SkLayerRasterizer.cpp b/src/effects/SkLayerRasterizer.cpp
index 6c08afc6f5..351265c46e 100644
--- a/src/effects/SkLayerRasterizer.cpp
+++ b/src/effects/SkLayerRasterizer.cpp
@@ -196,7 +196,7 @@ void SkLayerRasterizer::Builder::addLayer(const SkPaint& paint, SkScalar dx,
rec->fOffset.set(dx, dy);
}
-SkLayerRasterizer* SkLayerRasterizer::Builder::detachRasterizer() {
+sk_sp<SkLayerRasterizer> SkLayerRasterizer::Builder::detach() {
SkLayerRasterizer* rasterizer;
if (0 == fLayers->count()) {
rasterizer = nullptr;
@@ -205,10 +205,10 @@ SkLayerRasterizer* SkLayerRasterizer::Builder::detachRasterizer() {
rasterizer = new SkLayerRasterizer(fLayers);
}
fLayers = nullptr;
- return rasterizer;
+ return sk_sp<SkLayerRasterizer>(rasterizer);
}
-SkLayerRasterizer* SkLayerRasterizer::Builder::snapshotRasterizer() const {
+sk_sp<SkLayerRasterizer> SkLayerRasterizer::Builder::snapshot() const {
if (0 == fLayers->count()) {
return nullptr;
}
@@ -224,6 +224,5 @@ SkLayerRasterizer* SkLayerRasterizer::Builder::snapshotRasterizer() const {
}
SkASSERT(fLayers->count() == count);
SkASSERT(layers->count() == count);
- SkLayerRasterizer* rasterizer = new SkLayerRasterizer(layers);
- return rasterizer;
+ return sk_sp<SkLayerRasterizer>(new SkLayerRasterizer(layers));
}
diff --git a/tests/BlurTest.cpp b/tests/BlurTest.cpp
index 30f218aa92..39ef738288 100644
--- a/tests/BlurTest.cpp
+++ b/tests/BlurTest.cpp
@@ -418,12 +418,12 @@ static void test_blurDrawLooper(skiatest::Reporter* reporter, SkScalar sigma,
const SkBlurQuality quality = blurMaskFilterFlags_as_quality(blurMaskFilterFlags);
uint32_t flags = blurMaskFilterFlags_to_blurDrawLooperFlags(blurMaskFilterFlags);
- SkAutoTUnref<SkDrawLooper> lp(SkBlurDrawLooper::Create(color, sigma, dx, dy, flags));
+ sk_sp<SkDrawLooper> lp(SkBlurDrawLooper::Make(color, sigma, dx, dy, flags));
const bool expectSuccess = sigma > 0 &&
0 == (flags & SkBlurDrawLooper::kIgnoreTransform_BlurFlag);
- if (nullptr == lp.get()) {
+ if (nullptr == lp) {
REPORTER_ASSERT(reporter, sigma <= 0);
} else {
SkDrawLooper::BlurShadowRec rec;
@@ -440,8 +440,8 @@ static void test_blurDrawLooper(skiatest::Reporter* reporter, SkScalar sigma,
}
}
-static void test_delete_looper(skiatest::Reporter* reporter, SkDrawLooper* lp, SkScalar sigma,
- SkBlurStyle style, SkBlurQuality quality, bool expectSuccess) {
+static void test_looper(skiatest::Reporter* reporter, sk_sp<SkDrawLooper> lp, SkScalar sigma,
+ SkBlurStyle style, SkBlurQuality quality, bool expectSuccess) {
SkDrawLooper::BlurShadowRec rec;
bool success = lp->asABlurShadow(&rec);
REPORTER_ASSERT(reporter, success == expectSuccess);
@@ -453,7 +453,6 @@ static void test_delete_looper(skiatest::Reporter* reporter, SkDrawLooper* lp, S
REPORTER_ASSERT(reporter, rec.fStyle == style);
REPORTER_ASSERT(reporter, rec.fQuality == quality);
}
- lp->unref();
}
static void make_noop_layer(SkLayerDrawLooper::Builder* builder) {
@@ -481,23 +480,23 @@ static void test_layerDrawLooper(skiatest::Reporter* reporter, SkMaskFilter* mf,
// 1 layer is too few
make_noop_layer(&builder);
- test_delete_looper(reporter, builder.detachLooper(), sigma, style, quality, false);
+ test_looper(reporter, builder.detach(), sigma, style, quality, false);
// 2 layers is good, but need blur
make_noop_layer(&builder);
make_noop_layer(&builder);
- test_delete_looper(reporter, builder.detachLooper(), sigma, style, quality, false);
+ test_looper(reporter, builder.detach(), sigma, style, quality, false);
// 2 layers is just right
make_noop_layer(&builder);
make_blur_layer(&builder, mf);
- test_delete_looper(reporter, builder.detachLooper(), sigma, style, quality, expectSuccess);
+ test_looper(reporter, builder.detach(), sigma, style, quality, expectSuccess);
// 3 layers is too many
make_noop_layer(&builder);
make_blur_layer(&builder, mf);
make_noop_layer(&builder);
- test_delete_looper(reporter, builder.detachLooper(), sigma, style, quality, false);
+ test_looper(reporter, builder.detach(), sigma, style, quality, false);
}
DEF_TEST(BlurAsABlur, reporter) {
diff --git a/tests/LayerDrawLooperTest.cpp b/tests/LayerDrawLooperTest.cpp
index 391db7ce7f..8ba290fbdf 100644
--- a/tests/LayerDrawLooperTest.cpp
+++ b/tests/LayerDrawLooperTest.cpp
@@ -58,7 +58,7 @@ static void test_frontToBack(skiatest::Reporter* reporter) {
FakeDevice device;
SkCanvas canvas(&device);
SkPaint paint;
- SkAutoTUnref<SkLayerDrawLooper> looper(looperBuilder.detachLooper());
+ auto looper(looperBuilder.detach());
SkSmallAllocator<1, 32> allocator;
void* buffer = allocator.reserveT<SkDrawLooper::Context>(looper->contextSize());
SkDrawLooper::Context* context = looper->createContext(&canvas, buffer);
@@ -98,7 +98,7 @@ static void test_backToFront(skiatest::Reporter* reporter) {
FakeDevice device;
SkCanvas canvas(&device);
SkPaint paint;
- SkAutoTUnref<SkLayerDrawLooper> looper(looperBuilder.detachLooper());
+ auto looper(looperBuilder.detach());
SkSmallAllocator<1, 32> allocator;
void* buffer = allocator.reserveT<SkDrawLooper::Context>(looper->contextSize());
SkDrawLooper::Context* context = looper->createContext(&canvas, buffer);
@@ -138,7 +138,7 @@ static void test_mixed(skiatest::Reporter* reporter) {
FakeDevice device;
SkCanvas canvas(&device);
SkPaint paint;
- SkAutoTUnref<SkLayerDrawLooper> looper(looperBuilder.detachLooper());
+ sk_sp<SkDrawLooper> looper(looperBuilder.detach());
SkSmallAllocator<1, 32> allocator;
void* buffer = allocator.reserveT<SkDrawLooper::Context>(looper->contextSize());
SkDrawLooper::Context* context = looper->createContext(&canvas, buffer);
diff --git a/tests/LayerRasterizerTest.cpp b/tests/LayerRasterizerTest.cpp
index a81cca4037..b71c305d59 100644
--- a/tests/LayerRasterizerTest.cpp
+++ b/tests/LayerRasterizerTest.cpp
@@ -49,7 +49,7 @@ SkFlattenable* DummyRasterizer::CreateProc(SkReadBuffer&) { return new DummyRast
DEF_TEST(LayerRasterizer_destructor, reporter) {
{
SkPaint paint;
- paint.setRasterizer(new DummyRasterizer)->unref();
+ paint.setRasterizer(sk_make_sp<DummyRasterizer>());
REPORTER_ASSERT(reporter, DummyRasterizer::GetCount() == 1);
SkLayerRasterizer::Builder builder;
@@ -81,7 +81,7 @@ static bool equals(const SkLayerRasterizer_Rec& rec1, const SkLayerRasterizer_Re
DEF_TEST(LayerRasterizer_copy, reporter) {
SkLayerRasterizer::Builder builder;
- REPORTER_ASSERT(reporter, nullptr == builder.snapshotRasterizer());
+ REPORTER_ASSERT(reporter, nullptr == builder.snapshot());
SkPaint paint;
// Create a bunch of paints with different flags.
for (uint32_t flags = 0x01; flags < SkPaint::kAllFlags; flags <<= 1) {
@@ -90,14 +90,14 @@ DEF_TEST(LayerRasterizer_copy, reporter) {
}
// Create a layer rasterizer with all the existing layers.
- SkAutoTUnref<SkLayerRasterizer> firstCopy(builder.snapshotRasterizer());
+ sk_sp<SkLayerRasterizer> firstCopy(builder.snapshot());
// Add one more layer.
paint.setFlags(SkPaint::kAllFlags);
builder.addLayer(paint);
- SkAutoTUnref<SkLayerRasterizer> oneLarger(builder.snapshotRasterizer());
- SkAutoTUnref<SkLayerRasterizer> detached(builder.detachRasterizer());
+ sk_sp<SkLayerRasterizer> oneLarger(builder.snapshot());
+ sk_sp<SkLayerRasterizer> detached(builder.detach());
// Check the counts for consistency.
const int largerCount = LayerRasterizerTester::CountLayers(*oneLarger.get());
@@ -140,5 +140,5 @@ DEF_TEST(LayerRasterizer_copy, reporter) {
DEF_TEST(LayerRasterizer_detachEmpty, reporter) {
SkLayerRasterizer::Builder builder;
- REPORTER_ASSERT(reporter, nullptr == builder.detachRasterizer());
+ REPORTER_ASSERT(reporter, nullptr == builder.detach());
}
diff --git a/tests/PaintTest.cpp b/tests/PaintTest.cpp
index 7affa9ee94..a58bd864ec 100644
--- a/tests/PaintTest.cpp
+++ b/tests/PaintTest.cpp
@@ -146,8 +146,7 @@ DEF_TEST(Paint_copy, reporter) {
paint.setStrokeWidth(SkIntToScalar(2));
// set a few pointers
SkLayerDrawLooper::Builder looperBuilder;
- SkLayerDrawLooper* looper = looperBuilder.detachLooper();
- paint.setLooper(looper)->unref();
+ paint.setLooper(looperBuilder.detach());
SkMaskFilter* mask = SkBlurMaskFilter::Create(kNormal_SkBlurStyle,
SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(1)));
paint.setMaskFilter(mask)->unref();
diff --git a/tests/QuickRejectTest.cpp b/tests/QuickRejectTest.cpp
index 7eb80f1712..582789aa75 100644
--- a/tests/QuickRejectTest.cpp
+++ b/tests/QuickRejectTest.cpp
@@ -82,7 +82,7 @@ static void test_drawBitmap(skiatest::Reporter* reporter) {
// to the left. The test is to ensure that canvas' quickReject machinary
// allows us through, even though sans-looper we would look like we should
// be clipped out.
- paint.setLooper(new TestLooper)->unref();
+ paint.setLooper(sk_make_sp<TestLooper>());
canvas.drawBitmap(src, SkIntToScalar(-10), 0, &paint);
REPORTER_ASSERT(reporter, 0xFFFFFFFF == *dst.getAddr32(5, 5));
}
diff --git a/tools/android/SkAndroidSDKCanvas.cpp b/tools/android/SkAndroidSDKCanvas.cpp
index 1deb97cbc6..35b1581fda 100644
--- a/tools/android/SkAndroidSDKCanvas.cpp
+++ b/tools/android/SkAndroidSDKCanvas.cpp
@@ -8,6 +8,7 @@
#include "SkAndroidSDKCanvas.h"
#include "SkColorFilter.h"
+#include "SkDrawLooper.h"
#include "SkPaint.h"
#include "SkPathEffect.h"
#include "SkShader.h"
diff --git a/tools/debugger/SkDrawCommand.cpp b/tools/debugger/SkDrawCommand.cpp
index 5941a5d0e3..5bacf02b1a 100644
--- a/tools/debugger/SkDrawCommand.cpp
+++ b/tools/debugger/SkDrawCommand.cpp
@@ -1184,10 +1184,9 @@ static void extract_json_paint_looper(Json::Value& jsonPaint, UrlDataManager& ur
SkPaint* target) {
if (jsonPaint.isMember(SKDEBUGCANVAS_ATTRIBUTE_LOOPER)) {
Json::Value jsonLooper = jsonPaint[SKDEBUGCANVAS_ATTRIBUTE_LOOPER];
- SkDrawLooper* looper = (SkDrawLooper*) load_flattenable(jsonLooper, urlDataManager);
+ sk_sp<SkDrawLooper> looper((SkDrawLooper*) load_flattenable(jsonLooper, urlDataManager));
if (looper != nullptr) {
- target->setLooper(looper);
- looper->unref();
+ target->setLooper(std::move(looper));
}
}
}