| /* |
| * Copyright 2008 Google Inc. |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #include "SkFontConfigInterface.h" |
| #include "SkFontMgr.h" |
| #include "SkMutex.h" |
| #include "SkRefCnt.h" |
| |
| SK_DECLARE_STATIC_MUTEX(gFontConfigInterfaceMutex); |
| static SkFontConfigInterface* gFontConfigInterface; |
| |
| SkFontConfigInterface* SkFontConfigInterface::RefGlobal() { |
| SkAutoMutexAcquire ac(gFontConfigInterfaceMutex); |
| |
| return SkSafeRef(gFontConfigInterface); |
| } |
| |
| SkFontConfigInterface* SkFontConfigInterface::SetGlobal(SkFontConfigInterface* fc) { |
| SkAutoMutexAcquire ac(gFontConfigInterfaceMutex); |
| |
| SkRefCnt_SafeAssign(gFontConfigInterface, fc); |
| return fc; |
| } |
| |
| /////////////////////////////////////////////////////////////////////////////// |
| |
| static SkFontConfigInterface* init_FCI() { |
| SkAutoMutexAcquire ac(gFontConfigInterfaceMutex); |
| |
| if (gFontConfigInterface) { |
| return SkRef(gFontConfigInterface); |
| } |
| gFontConfigInterface = SkRef(SkFontConfigInterface::GetSingletonDirectInterface()); |
| return gFontConfigInterface; |
| } |
| |
| SkFontMgr* SkFontMgr::Factory() { |
| SkFontConfigInterface* fci = init_FCI(); |
| return fci ? SkFontMgr_New_FCI(fci) : nullptr; |
| } |