| Index: gm/colorfilterimagefilter.cpp
|
| diff --git a/gm/colorfilterimagefilter.cpp b/gm/colorfilterimagefilter.cpp
|
| index 711a7e48c337e9cdd5bbd89af8981f9bfc844737..49e568b1305411d2410e9098407229829937b980 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);
|
|
|