1/* 2 * Copyright 2016 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8#include "include/core/SkFontMgr.h" 9#include "include/core/SkRefCnt.h" 10#include "include/ports/SkFontConfigInterface.h" 11#include "include/private/SkMutex.h" 12 13static SkMutex& font_config_interface_mutex() { 14 static SkMutex& mutex = *(new SkMutex); 15 return mutex; 16} 17static SkFontConfigInterface* gFontConfigInterface; 18 19sk_sp<SkFontConfigInterface> SkFontConfigInterface::RefGlobal() { 20 SkAutoMutexExclusive ac(font_config_interface_mutex()); 21 22 if (gFontConfigInterface) { 23 return sk_ref_sp(gFontConfigInterface); 24 } 25 return sk_ref_sp(SkFontConfigInterface::GetSingletonDirectInterface()); 26} 27 28void SkFontConfigInterface::SetGlobal(sk_sp<SkFontConfigInterface> fc) { 29 SkAutoMutexExclusive ac(font_config_interface_mutex()); 30 31 SkSafeUnref(gFontConfigInterface); 32 gFontConfigInterface = fc.release(); 33} 34