fontmgr_default.cc 873 B

12345678910111213141516171819202122232425262728293031323334
  1. // Copyright 2018 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "skia/ext/fontmgr_default.h"
  5. #include "third_party/skia/include/core/SkFontMgr.h"
  6. namespace {
  7. SkDEBUGCODE(bool g_factory_called;)
  8. // This is a purposefully leaky pointer that has ownership of the FontMgr.
  9. SkFontMgr* g_fontmgr_override = nullptr;
  10. } // namespace
  11. namespace skia {
  12. void OverrideDefaultSkFontMgr(sk_sp<SkFontMgr> fontmgr) {
  13. SkASSERT(!g_factory_called);
  14. SkSafeUnref(g_fontmgr_override);
  15. g_fontmgr_override = fontmgr.release();
  16. }
  17. } // namespace skia
  18. SK_API sk_sp<SkFontMgr> SkFontMgr::Factory() {
  19. SkDEBUGCODE(g_factory_called = true;);
  20. return g_fontmgr_override ? sk_ref_sp(g_fontmgr_override)
  21. : skia::CreateDefaultSkFontMgr();
  22. }