diff options
author | mtklein <mtklein@chromium.org> | 2014-10-13 13:17:56 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-10-13 13:17:56 -0700 |
commit | 148ec59001ca7d7e54aec580a048c6dd2a085991 (patch) | |
tree | ee310a6be5a0b53ac4ed05dd6907bd0d328dda6d /src/core/SkPathRef.cpp | |
parent | 70242ace3b2ed06b33ee5ea5c9ac3aedea89b194 (diff) |
Require SK_DECLARE_STATIC_LAZY_PTR is used in global scope.
Function- or method- local scope isn't threadsafe; the pointer is generally
zero-initialized on first use in function scope (i.e. lazily... we have to go
deeper), but for globals we can be pretty sure the linker will do that for us.
BUG=skia:
No public API changes.
TBR=reed@google.com
Review URL: https://codereview.chromium.org/651723003
Diffstat (limited to 'src/core/SkPathRef.cpp')
-rw-r--r-- | src/core/SkPathRef.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/core/SkPathRef.cpp b/src/core/SkPathRef.cpp index 57076939b6..dffb6a3646 100644 --- a/src/core/SkPathRef.cpp +++ b/src/core/SkPathRef.cpp @@ -29,14 +29,16 @@ SkPathRef::Editor::Editor(SkAutoTUnref<SkPathRef>* pathRef, ////////////////////////////////////////////////////////////////////////////// -SkPathRef* SkPathRef::CreateEmptyImpl() { +// As a template argument, this must have external linkage. +SkPathRef* sk_create_empty_pathref() { SkPathRef* empty = SkNEW(SkPathRef); empty->computeBounds(); // Avoids races later to be the first to do this. return empty; } +SK_DECLARE_STATIC_LAZY_PTR(SkPathRef, empty, sk_create_empty_pathref); + SkPathRef* SkPathRef::CreateEmpty() { - SK_DECLARE_STATIC_LAZY_PTR(SkPathRef, empty, CreateEmptyImpl); return SkRef(empty.get()); } |