Add skia_tsan_build to match skia_asan_build and fix one example race.

R=mtklein@google.com

Review URL: https://codereview.chromium.org/24644003

git-svn-id: http://skia.googlecode.com/svn/trunk@11464 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/gyp/common_conditions.gypi b/gyp/common_conditions.gypi
index f9feb1c..f8012b9 100644
--- a/gyp/common_conditions.gypi
+++ b/gyp/common_conditions.gypi
@@ -286,6 +286,15 @@
               '-fsanitize=address',
             ],
           }],
+          [ 'skia_tsan_build', {
+            'cflags': [
+              '-fsanitize=thread',
+              '-fno-omit-frame-pointer',
+            ],
+            'ldflags': [
+              '-fsanitize=thread',
+            ],
+          }],
           [ 'skia_clang_build', {
             'cflags': [
               '-Wstring-conversion',
diff --git a/gyp/common_variables.gypi b/gyp/common_variables.gypi
index 117ec9e..3f7b154 100644
--- a/gyp/common_variables.gypi
+++ b/gyp/common_variables.gypi
@@ -79,6 +79,7 @@
       ],
 
       'skia_asan_build%': 0,
+      'skia_tsan_build%': 0,
       'skia_scalar%': 'float',
       'skia_mesa%': 0,
       'skia_nv_path_rendering%': 0,
@@ -118,7 +119,7 @@
       }, {
         'skia_release_optimization_level%': '<(skia_default_gcc_optimization_level)',
       }],
-      [ 'skia_asan_build', {
+      [ 'skia_asan_build or skia_tsan_build', {
         'skia_clang_build': 1,
       }, {
         'skia_clang_build%': 0,
@@ -133,6 +134,7 @@
     'skia_os%': '<(skia_os)',
     'os_posix%': '<(os_posix)',
     'skia_asan_build%': '<(skia_asan_build)',
+    'skia_tsan_build%': '<(skia_tsan_build)',
     'skia_scalar%': '<(skia_scalar)',
     'skia_mesa%': '<(skia_mesa)',
     'skia_nv_path_rendering%': '<(skia_nv_path_rendering)',
diff --git a/tests/skia_test.cpp b/tests/skia_test.cpp
index 7d22ff6..a93b307 100644
--- a/tests/skia_test.cpp
+++ b/tests/skia_test.cpp
@@ -84,9 +84,9 @@
 
 protected:
     virtual void onStart(Test* test) {
-        const int index = sk_atomic_inc(&fNextIndex);
-        sk_atomic_inc(&fPending);
-        SkDebugf("[%3d/%3d] (%d) %s\n", index+1, fTotal, fPending, test->getName());
+        const int index = sk_atomic_inc(&fNextIndex)+1;
+        const int pending = sk_atomic_inc(&fPending)+1;
+        SkDebugf("[%3d/%3d] (%d) %s\n", index, fTotal, pending, test->getName());
     }
     virtual void onReportFailed(const SkString& desc) {
         SkDebugf("\tFAILED: %s\n", desc.c_str());