From 4f10844149bbc05f0259a1b3199c2f995756ed60 Mon Sep 17 00:00:00 2001 From: mtklein Date: Wed, 3 Dec 2014 13:07:39 -0800 Subject: [PATCH] Turn on MPD threading in nanobench. Seems okay after this small patch to skip lockPixels() / unlockPixels(). BUG=skia:3149 CQ_EXTRA_TRYBOTS=client.skia:Test-Ubuntu13.10-GCE-NoGPU-x86_64-Release-TSAN-Trybot Review URL: https://codereview.chromium.org/773203003 --- bench/nanobench.cpp | 3 +-- src/core/SkBitmapProcShader.cpp | 6 +++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/bench/nanobench.cpp b/bench/nanobench.cpp index b7603bf3bc..03fabc44f1 100644 --- a/bench/nanobench.cpp +++ b/bench/nanobench.cpp @@ -600,8 +600,7 @@ int nanobench_main(); int nanobench_main() { SetupCrashHandler(); SkAutoGraphics ag; - // Multithreading is disabled pending resolution of skia:3149 - //SkTaskGroup::Enabler enabled; + SkTaskGroup::Enabler enabled; #if SK_SUPPORT_GPU GrContext::Options grContextOpts; diff --git a/src/core/SkBitmapProcShader.cpp b/src/core/SkBitmapProcShader.cpp index f01d559058..2e42ef1b9a 100644 --- a/src/core/SkBitmapProcShader.cpp +++ b/src/core/SkBitmapProcShader.cpp @@ -92,9 +92,9 @@ static bool valid_for_drawing(const SkBitmap& bm) { return false; // no pixels to read } if (kIndex_8_SkColorType == bm.colorType()) { - // ugh, I have to lock-pixels to inspect the colortable - SkAutoLockPixels alp(bm); - if (!bm.getColorTable()) { + SkBitmap copy(bm); // Locking and unlocking pixels is not thread safe, + SkAutoLockPixels alp(copy); // but we need to call it before getColorTable() is safe. + if (!copy.getColorTable()) { return false; } }