diff options
author | reed <reed@google.com> | 2016-01-07 17:56:33 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-01-07 17:56:33 -0800 |
commit | 57fa241d6f43557e4243a46f8b5a4ed447ccb8d2 (patch) | |
tree | 1808b8f0a72337bc5401523ba714c257a64c5c09 /gm | |
parent | 4999df8ca2d53d7f34e0f6d0c70ab620bef2fe13 (diff) |
don't leak test filters and shaders
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1568173002
TBR=
Review URL: https://codereview.chromium.org/1568173002
Diffstat (limited to 'gm')
-rw-r--r-- | gm/colorfilterimagefilter.cpp | 38 |
1 files changed, 18 insertions, 20 deletions
diff --git a/gm/colorfilterimagefilter.cpp b/gm/colorfilterimagefilter.cpp index 711a7e48c3..49e568b130 100644 --- a/gm/colorfilterimagefilter.cpp +++ b/gm/colorfilterimagefilter.cpp @@ -42,15 +42,10 @@ static SkColorFilter* cf_make_colorize(SkColor color) { return SkColorFilter::CreateModeFilter(color, SkXfermode::kSrc_Mode); } -static const SkTDArray<SkColorFilter*>& sk_gm_get_colorfilters() { - static SkTDArray<SkColorFilter*> gColorFilters; - - if (gColorFilters.count() == 0) { - *gColorFilters.append() = cf_make_brightness(0.5f); - *gColorFilters.append() = cf_make_grayscale(); - *gColorFilters.append() = cf_make_colorize(SK_ColorBLUE); - } - return gColorFilters; +static void sk_gm_get_colorfilters(SkTDArray<SkColorFilter*>* array) { + *array->append() = cf_make_brightness(0.5f); + *array->append() = cf_make_grayscale(); + *array->append() = cf_make_colorize(SK_ColorBLUE); } /////////////////////////////////////////////////////////////////////////////////////////////////// @@ -75,15 +70,10 @@ static SkShader* sh_make_image() { return image->newShader(SkShader::kRepeat_TileMode, SkShader::kRepeat_TileMode); } -static const SkTDArray<SkShader*>& sk_gm_get_shaders() { - static SkTDArray<SkShader*> gShaders; - - if (gShaders.count() == 0) { - *gShaders.append() = sh_make_lineargradient0(); - *gShaders.append() = sh_make_lineargradient1(); - *gShaders.append() = sh_make_image(); - } - return gShaders; +static void sk_gm_get_shaders(SkTDArray<SkShader*>* array) { + *array->append() = sh_make_lineargradient0(); + *array->append() = sh_make_lineargradient1(); + *array->append() = sh_make_image(); } /////////////////////////////////////////////////////////////////////////////////////////////////// @@ -190,9 +180,17 @@ DEF_SIMPLE_GM(colorfilterimagefilter_layer, canvas, 32, 32) { /////////////////////////////////////////////////////////////////////////////////////////////////// +template <typename T> class SkTRefArray : public SkTDArray<T> { +public: + ~SkTRefArray() { this->unrefAll(); } +}; + DEF_SIMPLE_GM(colorfiltershader, canvas, 800, 800) { - const SkTDArray<SkColorFilter*>& filters = sk_gm_get_colorfilters(); - const SkTDArray<SkShader*>& shaders = sk_gm_get_shaders(); + SkTRefArray<SkColorFilter*> filters; + sk_gm_get_colorfilters(&filters); + + SkTRefArray<SkShader*> shaders; + sk_gm_get_shaders(&shaders); SkPaint paint; SkRect r = SkRect::MakeWH(120, 120); |