From a07bf6788e926c41d52ae4bed592ec8a187ee4ab Mon Sep 17 00:00:00 2001 From: Robert Phillips Date: Fri, 13 Jul 2018 10:18:38 -0400 Subject: Add bullet proofing to image_subset GM for TSAN failures The most common TSAN failure is: glmsaa8 gm image_subset with this stack trace: 5.73m /b/s/w/ir/build/dm(_ZNK7SkImage10makeSubsetERK7SkIRect+0x96) [0x1a7c356] /b/s/w/ir/build/dm(_ZNK7SkImage10makeSubsetERK7SkIRect+0x96) [0x1a7c356] 5.73m /b/s/w/ir/build/dm() [0x12cf587] /b/s/w/ir/build/dm() [0x12cf587] 5.73m /b/s/w/ir/build/dm(_ZN6skiagm8SimpleGM6onDrawEP8SkCanvas+0x25) [0x12ba205] Change-Id: Ife1c27af935ef3f56073360e9781a89fe8206586 Reviewed-on: https://skia-review.googlesource.com/141280 Reviewed-by: Greg Daniel Commit-Queue: Robert Phillips --- gm/image.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'gm') diff --git a/gm/image.cpp b/gm/image.cpp index 2592131334..1e3edc3292 100644 --- a/gm/image.cpp +++ b/gm/image.cpp @@ -399,8 +399,11 @@ DEF_SIMPLE_GM(scalepixels_unpremul, canvas, 1080, 280) { static sk_sp make_lazy_image(SkSurface* surf) { surf->getCanvas()->drawCircle(100, 100, 100, SkPaint()); - auto data = surf->makeImageSnapshot()->encodeToData(); - return SkImage::MakeFromEncoded(data); + sk_sp data = surf->makeImageSnapshot()->encodeToData(); + if (!data) { + return nullptr; + } + return SkImage::MakeFromEncoded(std::move(data)); } #include "SkWriteBuffer.h" @@ -420,6 +423,9 @@ DEF_SIMPLE_GM(image_subset, canvas, 440, 220) { SkImageInfo info = SkImageInfo::MakeN32Premul(200, 200, nullptr); auto surf = sk_tool_utils::makeSurface(canvas, info, nullptr); auto img = make_lazy_image(surf.get()); + if (!img) { + return; + } canvas->drawImage(img, 10, 10, nullptr); auto sub = img->makeSubset({100, 100, 200, 200}); -- cgit v1.2.3