diff options
Diffstat (limited to 'gfx/skia/skia/src/ports/SkFontConfigInterface.cpp')
-rw-r--r-- | gfx/skia/skia/src/ports/SkFontConfigInterface.cpp | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/gfx/skia/skia/src/ports/SkFontConfigInterface.cpp b/gfx/skia/skia/src/ports/SkFontConfigInterface.cpp new file mode 100644 index 0000000000..7747f9126c --- /dev/null +++ b/gfx/skia/skia/src/ports/SkFontConfigInterface.cpp @@ -0,0 +1,33 @@ +/* + * Copyright 2016 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "include/core/SkFontMgr.h" +#include "include/core/SkRefCnt.h" +#include "include/ports/SkFontConfigInterface.h" +#include "include/private/base/SkMutex.h" + +static SkMutex& font_config_interface_mutex() { + static SkMutex& mutex = *(new SkMutex); + return mutex; +} +static SkFontConfigInterface* gFontConfigInterface; + +sk_sp<SkFontConfigInterface> SkFontConfigInterface::RefGlobal() { + SkAutoMutexExclusive ac(font_config_interface_mutex()); + + if (gFontConfigInterface) { + return sk_ref_sp(gFontConfigInterface); + } + return sk_ref_sp(SkFontConfigInterface::GetSingletonDirectInterface()); +} + +void SkFontConfigInterface::SetGlobal(sk_sp<SkFontConfigInterface> fc) { + SkAutoMutexExclusive ac(font_config_interface_mutex()); + + SkSafeUnref(gFontConfigInterface); + gFontConfigInterface = fc.release(); +} |