Chromium Code Reviews| Index: src/core/SkGlyphCache.cpp |
| diff --git a/src/core/SkGlyphCache.cpp b/src/core/SkGlyphCache.cpp |
| index 699801d2dbb3cb9ca16c87c1bd8f3f5351b92495..2ab721aab464c74676cde710a711156c125e5a2d 100755 |
| --- a/src/core/SkGlyphCache.cpp |
| +++ b/src/core/SkGlyphCache.cpp |
| @@ -11,7 +11,7 @@ |
| #include "SkGlyphCache_Globals.h" |
| #include "SkDistanceFieldGen.h" |
| #include "SkGraphics.h" |
| -#include "SkOnce.h" |
| +#include "SkLazyPtr.h" |
| #include "SkPaint.h" |
| #include "SkPath.h" |
| #include "SkTemplates.h" |
| @@ -21,18 +21,18 @@ |
| //#define SPEW_PURGE_STATUS |
| //#define RECORD_HASH_EFFICIENCY |
| -static void create_globals(SkGlyphCache_Globals** globals) { |
| - *globals = SkNEW_ARGS(SkGlyphCache_Globals, (SkGlyphCache_Globals::kYes_UseMutex)); |
| +namespace { |
|
tfarina
2014/05/30 04:38:48
Mike, could you keep the function static?
Brian a
mtklein
2014/05/30 13:07:53
Nope. You can't pass functions with static linkag
tfarina
2014/05/30 15:06:10
OK. So it is inevitable.
I have had a problem lik
|
| + |
| +SkGlyphCache_Globals* create_globals() { |
| + return SkNEW_ARGS(SkGlyphCache_Globals, (SkGlyphCache_Globals::kYes_UseMutex)); |
| } |
| +} // namespace |
| + |
| // Returns the shared globals |
| static SkGlyphCache_Globals& getSharedGlobals() { |
| - // we leak this, so we don't incur any shutdown cost of the destructor |
| - static SkGlyphCache_Globals* gGlobals = NULL; |
| - SK_DECLARE_STATIC_ONCE(once); |
| - SkOnce(&once, create_globals, &gGlobals); |
| - SkASSERT(NULL != gGlobals); |
| - return *gGlobals; |
| + SK_DECLARE_STATIC_LAZY_PTR(SkGlyphCache_Globals, globals, create_globals); |
| + return *globals.get(); |
| } |
| // Returns the TLS globals (if set), or the shared globals |