diff options
Diffstat (limited to 'src/core/SkFontHost.cpp')
-rw-r--r-- | src/core/SkFontHost.cpp | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/src/core/SkFontHost.cpp b/src/core/SkFontHost.cpp index 9e7eeb182d..a16a8c42e0 100644 --- a/src/core/SkFontHost.cpp +++ b/src/core/SkFontHost.cpp @@ -6,7 +6,7 @@ */ #include "SkFontLCDConfig.h" -#include "SkOnce.h" +#include "SkLazyPtr.h" static SkFontLCDConfig::LCDOrientation gLCDOrientation = SkFontLCDConfig::kHorizontal_LCDOrientation; static SkFontLCDConfig::LCDOrder gLCDOrder = SkFontLCDConfig::kRGB_LCDOrder; @@ -198,19 +198,14 @@ SkTypeface* SkFontMgr::legacyCreateTypeface(const char familyName[], return this->onLegacyCreateTypeface(familyName, styleBits); } -void set_up_default(SkFontMgr** singleton) { - *singleton = SkFontMgr::Factory(); - // we never want to return NULL - if (NULL == *singleton) { - *singleton = SkNEW(SkEmptyFontMgr); - } +SkFontMgr* SkFontMgr::CreateDefault() { + SkFontMgr* fm = SkFontMgr::Factory(); + return fm ? fm : SkNEW(SkEmptyFontMgr); } SkFontMgr* SkFontMgr::RefDefault() { - static SkFontMgr* gFM = NULL; - SK_DECLARE_STATIC_ONCE(once); - SkOnce(&once, set_up_default, &gFM); - return SkRef(gFM); + SK_DECLARE_STATIC_LAZY_PTR(SkFontMgr, singleton, CreateDefault); + return SkRef(singleton.get()); } ////////////////////////////////////////////////////////////////////////// |