Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(400)

Side by Side Diff: src/core/SkRecords.h

Issue 1169033003: Disable direction pre-caching to suss out TSAN failures. (Closed) Base URL: https://skia.googlesource.com/skia@master
Patch Set: rebase Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2014 Google Inc. 2 * Copyright 2014 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #ifndef SkRecords_DEFINED 8 #ifndef SkRecords_DEFINED
9 #define SkRecords_DEFINED 9 #define SkRecords_DEFINED
10 10
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
209 SkBitmap fBitmap; 209 SkBitmap fBitmap;
210 }; 210 };
211 211
212 // SkPath::getBounds() isn't thread safe unless we precache the bounds in a sing lethreaded context. 212 // SkPath::getBounds() isn't thread safe unless we precache the bounds in a sing lethreaded context.
213 // SkPath::cheapComputeDirection() is similar. 213 // SkPath::cheapComputeDirection() is similar.
214 // Recording is a convenient time to cache these, or we can delay it to between record and playback. 214 // Recording is a convenient time to cache these, or we can delay it to between record and playback.
215 struct PreCachedPath : public SkPath { 215 struct PreCachedPath : public SkPath {
216 PreCachedPath() {} 216 PreCachedPath() {}
217 explicit PreCachedPath(const SkPath& path) : SkPath(path) { 217 explicit PreCachedPath(const SkPath& path) : SkPath(path) {
218 this->updateBoundsCache(); 218 this->updateBoundsCache();
219 #if 0 // Disabled to see if we ever really race on this. It costs time, chromi um:496982.
219 SkPathPriv::FirstDirection junk; 220 SkPathPriv::FirstDirection junk;
220 (void)SkPathPriv::CheapComputeFirstDirection(*this, &junk); 221 (void)SkPathPriv::CheapComputeFirstDirection(*this, &junk);
222 #endif
221 } 223 }
222 }; 224 };
223 225
224 // Like SkPath::getBounds(), SkMatrix::getType() isn't thread safe unless we pre cache it. 226 // Like SkPath::getBounds(), SkMatrix::getType() isn't thread safe unless we pre cache it.
225 // This may not cover all SkMatrices used by the picture (e.g. some could be hid ing in a shader). 227 // This may not cover all SkMatrices used by the picture (e.g. some could be hid ing in a shader).
226 struct TypedMatrix : public SkMatrix { 228 struct TypedMatrix : public SkMatrix {
227 TypedMatrix() {} 229 TypedMatrix() {}
228 explicit TypedMatrix(const SkMatrix& matrix) : SkMatrix(matrix) { 230 explicit TypedMatrix(const SkMatrix& matrix) : SkMatrix(matrix) {
229 (void)this->getType(); 231 (void)this->getType();
230 } 232 }
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
359 #undef RECORD0 361 #undef RECORD0
360 #undef RECORD1 362 #undef RECORD1
361 #undef RECORD2 363 #undef RECORD2
362 #undef RECORD3 364 #undef RECORD3
363 #undef RECORD4 365 #undef RECORD4
364 #undef RECORD5 366 #undef RECORD5
365 367
366 } // namespace SkRecords 368 } // namespace SkRecords
367 369
368 #endif//SkRecords_DEFINED 370 #endif//SkRecords_DEFINED
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698