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

Side by Side Diff: tools/sk_tool_utils_font.cpp

Issue 1180593005: call portable font cleanup only once at app end (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 5 years, 6 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 | « tools/sk_tool_utils.h ('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 /* 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
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
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 }
OLDNEW
« no previous file with comments | « tools/sk_tool_utils.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698