OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright 2014 Google Inc. | 2 * Copyright 2014 Google Inc. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 | 7 |
8 #include "Resources.h" | 8 #include "Resources.h" |
9 #include "SkFontMgr.h" | 9 #include "SkFontMgr.h" |
10 #include "SkOSFile.h" | 10 #include "SkOSFile.h" |
11 #include "SkTestScalerContext.h" | 11 #include "SkTestScalerContext.h" |
12 #include "SkThread.h" | 12 #include "SkThread.h" |
13 #include "SkUtils.h" | 13 #include "SkUtils.h" |
14 #include "sk_tool_utils.h" | 14 #include "sk_tool_utils.h" |
15 | 15 |
16 namespace sk_tool_utils { | 16 namespace sk_tool_utils { |
17 | 17 |
18 #include "test_font_monospace.cpp" | 18 #include "test_font_monospace.cpp" |
19 #include "test_font_sans_serif.cpp" | 19 #include "test_font_sans_serif.cpp" |
20 #include "test_font_serif.cpp" | 20 #include "test_font_serif.cpp" |
21 #include "test_font_index.cpp" | 21 #include "test_font_index.cpp" |
22 | 22 |
23 static void release_portable_typefaces() { | 23 void release_portable_typefaces() { |
24 // We'll clean this up in our own tests, but disable for clients. | |
25 // Chrome seems to have funky multi-process things going on in unit tests th at | |
26 // makes this unsafe to delete when the main process atexit()s. | |
27 // SkLazyPtr does the same sort of thing. | |
28 #if SK_DEVELOPER | |
29 for (int index = 0; index < gTestFontsCount; ++index) { | 24 for (int index = 0; index < gTestFontsCount; ++index) { |
30 SkTestFontData& fontData = gTestFonts[index]; | 25 SkTestFontData& fontData = gTestFonts[index]; |
31 SkSafeUnref(fontData.fFontCache); | 26 SkSafeUnref(fontData.fFontCache); |
32 } | 27 } |
33 #endif | |
34 } | 28 } |
35 | 29 |
36 SK_DECLARE_STATIC_MUTEX(gTestFontMutex); | 30 SK_DECLARE_STATIC_MUTEX(gTestFontMutex); |
37 | 31 |
38 SkTypeface* create_font(const char* name, SkTypeface::Style style) { | 32 SkTypeface* create_font(const char* name, SkTypeface::Style style) { |
39 SkTestFontData* fontData = NULL; | 33 SkTestFontData* fontData = NULL; |
40 const SubFont* sub; | 34 const SubFont* sub; |
41 if (name) { | 35 if (name) { |
42 for (int index = 0; index < gSubFontsCount; ++index) { | 36 for (int index = 0; index < gSubFontsCount; ++index) { |
43 sub = &gSubFonts[index]; | 37 sub = &gSubFonts[index]; |
(...skipping 18 matching lines...) Expand all Loading... | |
62 SkTestFont* font; | 56 SkTestFont* font; |
63 { | 57 { |
64 SkAutoMutexAcquire ac(gTestFontMutex); | 58 SkAutoMutexAcquire ac(gTestFontMutex); |
65 if (fontData->fFontCache) { | 59 if (fontData->fFontCache) { |
66 font = SkSafeRef(fontData->fFontCache); | 60 font = SkSafeRef(fontData->fFontCache); |
67 } else { | 61 } else { |
68 font = SkNEW_ARGS(SkTestFont, (*fontData)); | 62 font = SkNEW_ARGS(SkTestFont, (*fontData)); |
69 SkDEBUGCODE(font->fDebugName = sub->fName); | 63 SkDEBUGCODE(font->fDebugName = sub->fName); |
70 SkDEBUGCODE(font->fDebugStyle = sub->fStyle); | 64 SkDEBUGCODE(font->fDebugStyle = sub->fStyle); |
71 fontData->fFontCache = SkSafeRef(font); | 65 fontData->fFontCache = SkSafeRef(font); |
72 atexit(release_portable_typefaces); | |
mtklein
2015/06/15 13:57:36
Ah, we called this for each portable typeface, but
| |
73 } | 66 } |
74 } | 67 } |
75 return SkNEW_ARGS(SkTestTypeface, (font, SkFontStyle(style))); | 68 return SkNEW_ARGS(SkTestTypeface, (font, SkFontStyle(style))); |
76 } | 69 } |
77 | 70 |
78 | 71 |
79 SkTypeface* resource_font(const char* name, SkTypeface::Style style) { | 72 SkTypeface* resource_font(const char* name, SkTypeface::Style style) { |
80 const char* file = NULL; | 73 const char* file = NULL; |
81 if (name) { | 74 if (name) { |
82 for (int index = 0; index < gSubFontsCount; ++index) { | 75 for (int index = 0; index < gSubFontsCount; ++index) { |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
178 break; | 171 break; |
179 } | 172 } |
180 } | 173 } |
181 fprintf(out, ";\n"); | 174 fprintf(out, ";\n"); |
182 } | 175 } |
183 fclose(out); | 176 fclose(out); |
184 } | 177 } |
185 #endif | 178 #endif |
186 | 179 |
187 } | 180 } |
OLD | NEW |