diff options
author | bungeman <bungeman@google.com> | 2015-11-10 13:29:43 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-11-10 13:29:44 -0800 |
commit | fbd87d611a16d6e1397226d1c8418c810c76b598 (patch) | |
tree | 186d8856b0ff52826f335adb3905899c08938acd | |
parent | d472792a72c0c433a205d42a73e0b77d65f8d76f (diff) |
Missing resources crash SampleFilterQuality.
The FilterQuality slide segfaults if resources cannot be loaded.
This is particularly noticeable with an Android build, as by
default resources are not available.
Review URL: https://codereview.chromium.org/1422763004
-rw-r--r-- | samplecode/SampleFilterQuality.cpp | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/samplecode/SampleFilterQuality.cpp b/samplecode/SampleFilterQuality.cpp index 1213b75b08..c37fcae457 100644 --- a/samplecode/SampleFilterQuality.cpp +++ b/samplecode/SampleFilterQuality.cpp @@ -41,9 +41,10 @@ static SkShader* make_shader(const SkRect& bounds) { colors, nullptr, SK_ARRAY_COUNT(colors), SkShader::kClamp_TileMode); #else - SkString resourcePath = GetResourcePath("mandrill_128.png"); - SkAutoTUnref<SkData> data(SkData::NewFromFileName(resourcePath.c_str())); - SkAutoTUnref<SkImage> image(SkImage::NewFromEncoded(data)); + SkAutoTUnref<SkImage> image(GetResourceAsImage("mandrill_128.png")); + if (nullptr == image) { + return nullptr; + } return image->newShader(SkShader::kClamp_TileMode, SkShader::kClamp_TileMode); #endif } @@ -66,7 +67,7 @@ static SkImage* make_image() { path.moveTo(0, 0); path.lineTo(N, 0); path.lineTo(0, N); path.close(); SkPaint paint; - paint.setShader(make_shader(SkRect::MakeWH(N, N)))->unref(); + SkSafeUnref(paint.setShader(make_shader(SkRect::MakeWH(N, N)))); canvas->drawPath(path, paint); return surface->newImageSnapshot(); |