Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(44)

Side by Side Diff: skia/ext/fontmgr_default_win.cc

Issue 2644103003: Allow multiple calls to SetDefaultSkiaFactory on Windows. (Closed)
Patch Set: Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « skia/ext/fontmgr_default_android.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "skia/ext/fontmgr_default_win.h" 5 #include "skia/ext/fontmgr_default_win.h"
6 6
7 #include "third_party/skia/include/ports/SkFontMgr.h" 7 #include "third_party/skia/include/ports/SkFontMgr.h"
8 #include "third_party/skia/include/ports/SkTypeface_win.h" 8 #include "third_party/skia/include/ports/SkTypeface_win.h"
9 9
10 namespace { 10 namespace {
11 11
12 // This is a leaky bare owning pointer. 12 // This is a leaky bare owning pointer.
13 SkFontMgr* g_default_fontmgr; 13 SkFontMgr* g_default_fontmgr;
14 14
15 // The ppapi code currently calls SetDefaultSkiaFactory twice on Win8+.
16 // This tracks when the global escapes and shouldno longer be set.
17 SkDEBUGCODE(bool g_factory_called;)
18
15 } // namespace 19 } // namespace
16 20
17 void SetDefaultSkiaFactory(sk_sp<SkFontMgr> fontmgr) { 21 void SetDefaultSkiaFactory(sk_sp<SkFontMgr> fontmgr) {
18 SkASSERT(g_default_fontmgr == nullptr); 22 SkASSERT(!g_factory_called);
23
24 SkSafeUnref(g_default_fontmgr);
19 g_default_fontmgr = fontmgr.release(); 25 g_default_fontmgr = fontmgr.release();
20 } 26 }
21 27
22 SK_API sk_sp<SkFontMgr> SkFontMgr::Factory() { 28 SK_API sk_sp<SkFontMgr> SkFontMgr::Factory() {
29 SkDEBUGCODE(g_factory_called = true;)
30
23 // This will be set when DirectWrite is in use, and an SkFontMgr has been 31 // This will be set when DirectWrite is in use, and an SkFontMgr has been
24 // created with the pre-sandbox warmed up one. Otherwise, we fallback to a 32 // created with the pre-sandbox warmed up one. Otherwise, we fallback to a
25 // GDI SkFontMgr which is used in the browser. 33 // GDI SkFontMgr which is used in the browser.
26 if (g_default_fontmgr) 34 if (g_default_fontmgr)
27 return sk_ref_sp(g_default_fontmgr); 35 return sk_ref_sp(g_default_fontmgr);
28 return SkFontMgr_New_GDI(); 36 return SkFontMgr_New_GDI();
29 } 37 }
OLDNEW
« no previous file with comments | « skia/ext/fontmgr_default_android.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698