11ae0e01accbca4b96a10b8a8c21917dd7bf27dc3bungeman/*
21ae0e01accbca4b96a10b8a8c21917dd7bf27dc3bungeman * Copyright 2016 Google Inc.
31ae0e01accbca4b96a10b8a8c21917dd7bf27dc3bungeman *
41ae0e01accbca4b96a10b8a8c21917dd7bf27dc3bungeman * Use of this source code is governed by a BSD-style license that can be
51ae0e01accbca4b96a10b8a8c21917dd7bf27dc3bungeman * found in the LICENSE file.
61ae0e01accbca4b96a10b8a8c21917dd7bf27dc3bungeman */
71ae0e01accbca4b96a10b8a8c21917dd7bf27dc3bungeman
81ae0e01accbca4b96a10b8a8c21917dd7bf27dc3bungeman#include "SkFontConfigInterface.h"
91ae0e01accbca4b96a10b8a8c21917dd7bf27dc3bungeman#include "SkFontMgr.h"
101ae0e01accbca4b96a10b8a8c21917dd7bf27dc3bungeman#include "SkMutex.h"
111ae0e01accbca4b96a10b8a8c21917dd7bf27dc3bungeman#include "SkRefCnt.h"
121ae0e01accbca4b96a10b8a8c21917dd7bf27dc3bungeman
131ae0e01accbca4b96a10b8a8c21917dd7bf27dc3bungemanSK_DECLARE_STATIC_MUTEX(gFontConfigInterfaceMutex);
141ae0e01accbca4b96a10b8a8c21917dd7bf27dc3bungemanstatic SkFontConfigInterface* gFontConfigInterface;
151ae0e01accbca4b96a10b8a8c21917dd7bf27dc3bungeman
161ae0e01accbca4b96a10b8a8c21917dd7bf27dc3bungemanSkFontConfigInterface* SkFontConfigInterface::RefGlobal() {
171ae0e01accbca4b96a10b8a8c21917dd7bf27dc3bungeman    SkAutoMutexAcquire ac(gFontConfigInterfaceMutex);
181ae0e01accbca4b96a10b8a8c21917dd7bf27dc3bungeman
191ae0e01accbca4b96a10b8a8c21917dd7bf27dc3bungeman    if (gFontConfigInterface) {
201ae0e01accbca4b96a10b8a8c21917dd7bf27dc3bungeman        return SkRef(gFontConfigInterface);
211ae0e01accbca4b96a10b8a8c21917dd7bf27dc3bungeman    }
221ae0e01accbca4b96a10b8a8c21917dd7bf27dc3bungeman    return SkSafeRef(SkFontConfigInterface::GetSingletonDirectInterface());
231ae0e01accbca4b96a10b8a8c21917dd7bf27dc3bungeman}
241ae0e01accbca4b96a10b8a8c21917dd7bf27dc3bungeman
251ae0e01accbca4b96a10b8a8c21917dd7bf27dc3bungemanSkFontConfigInterface* SkFontConfigInterface::SetGlobal(SkFontConfigInterface* fc) {
261ae0e01accbca4b96a10b8a8c21917dd7bf27dc3bungeman    SkAutoMutexAcquire ac(gFontConfigInterfaceMutex);
271ae0e01accbca4b96a10b8a8c21917dd7bf27dc3bungeman
281ae0e01accbca4b96a10b8a8c21917dd7bf27dc3bungeman    SkRefCnt_SafeAssign(gFontConfigInterface, fc);
291ae0e01accbca4b96a10b8a8c21917dd7bf27dc3bungeman    return fc;
301ae0e01accbca4b96a10b8a8c21917dd7bf27dc3bungeman}
31