OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright 2010 Google Inc. | 2 * Copyright 2010 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 #ifndef SkGlyphCache_Globals_DEFINED | 8 #ifndef SkGlyphCache_Globals_DEFINED |
9 #define SkGlyphCache_Globals_DEFINED | 9 #define SkGlyphCache_Globals_DEFINED |
10 | 10 |
11 #include "SkGlyphCache.h" | 11 #include "SkGlyphCache.h" |
12 #include "SkSpinlock.h" | |
12 #include "SkTLS.h" | 13 #include "SkTLS.h" |
13 | 14 |
14 #ifndef SK_DEFAULT_FONT_CACHE_COUNT_LIMIT | 15 #ifndef SK_DEFAULT_FONT_CACHE_COUNT_LIMIT |
15 #define SK_DEFAULT_FONT_CACHE_COUNT_LIMIT 2048 | 16 #define SK_DEFAULT_FONT_CACHE_COUNT_LIMIT 2048 |
16 #endif | 17 #endif |
17 | 18 |
18 #ifndef SK_DEFAULT_FONT_CACHE_LIMIT | 19 #ifndef SK_DEFAULT_FONT_CACHE_LIMIT |
19 #define SK_DEFAULT_FONT_CACHE_LIMIT (2 * 1024 * 1024) | 20 #define SK_DEFAULT_FONT_CACHE_LIMIT (2 * 1024 * 1024) |
20 #endif | 21 #endif |
21 | 22 |
22 /////////////////////////////////////////////////////////////////////////////// | 23 /////////////////////////////////////////////////////////////////////////////// |
23 | 24 |
24 class SkMutex; | 25 class SkMutex; |
26 class SkSpinlock; | |
25 | 27 |
26 class SkGlyphCache_Globals { | 28 class SkGlyphCache_Globals { |
27 public: | 29 public: |
30 using Lock = SkSpinlock; | |
28 enum UseMutex { | 31 enum UseMutex { |
29 kNo_UseMutex, // thread-local cache | 32 kNo_UseMutex, // thread-local cache |
30 kYes_UseMutex // shared cache | 33 kYes_UseMutex // shared cache |
31 }; | 34 }; |
32 | 35 |
33 SkGlyphCache_Globals(UseMutex um) { | 36 SkGlyphCache_Globals(UseMutex um) { |
34 fHead = NULL; | 37 fHead = NULL; |
35 fTotalMemoryUsed = 0; | 38 fTotalMemoryUsed = 0; |
36 fCacheSizeLimit = SK_DEFAULT_FONT_CACHE_LIMIT; | 39 fCacheSizeLimit = SK_DEFAULT_FONT_CACHE_LIMIT; |
37 fCacheCount = 0; | 40 fCacheCount = 0; |
38 fCacheCountLimit = SK_DEFAULT_FONT_CACHE_COUNT_LIMIT; | 41 fCacheCountLimit = SK_DEFAULT_FONT_CACHE_COUNT_LIMIT; |
39 | 42 |
40 fMutex = (kYes_UseMutex == um) ? SkNEW(SkMutex) : NULL; | 43 fMutex = (kYes_UseMutex == um) ? SkNEW(SkSpinlock) : NULL; |
mtklein
2015/07/08 19:33:47
Lock?
herb_g
2015/07/08 20:21:57
Ok. I have obviously botched the way TLS is being
| |
41 } | 44 } |
42 | 45 |
43 ~SkGlyphCache_Globals() { | 46 ~SkGlyphCache_Globals() { |
44 SkGlyphCache* cache = fHead; | 47 SkGlyphCache* cache = fHead; |
45 while (cache) { | 48 while (cache) { |
46 SkGlyphCache* next = cache->fNext; | 49 SkGlyphCache* next = cache->fNext; |
47 SkDELETE(cache); | 50 SkDELETE(cache); |
48 cache = next; | 51 cache = next; |
49 } | 52 } |
50 | 53 |
51 SkDELETE(fMutex); | 54 SkDELETE(fMutex); |
52 } | 55 } |
53 | 56 |
54 SkMutex* fMutex; | 57 Lock* fMutex; |
55 | 58 |
56 SkGlyphCache* internalGetHead() const { return fHead; } | 59 SkGlyphCache* internalGetHead() const { return fHead; } |
57 SkGlyphCache* internalGetTail() const; | 60 SkGlyphCache* internalGetTail() const; |
58 | 61 |
59 size_t getTotalMemoryUsed() const { return fTotalMemoryUsed; } | 62 size_t getTotalMemoryUsed() const { return fTotalMemoryUsed; } |
60 int getCacheCountUsed() const { return fCacheCount; } | 63 int getCacheCountUsed() const { return fCacheCount; } |
61 | 64 |
62 #ifdef SK_DEBUG | 65 #ifdef SK_DEBUG |
63 void validate() const; | 66 void validate() const; |
64 #else | 67 #else |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
113 static void* CreateTLS() { | 116 static void* CreateTLS() { |
114 return SkNEW_ARGS(SkGlyphCache_Globals, (kNo_UseMutex)); | 117 return SkNEW_ARGS(SkGlyphCache_Globals, (kNo_UseMutex)); |
115 } | 118 } |
116 | 119 |
117 static void DeleteTLS(void* ptr) { | 120 static void DeleteTLS(void* ptr) { |
118 SkDELETE((SkGlyphCache_Globals*)ptr); | 121 SkDELETE((SkGlyphCache_Globals*)ptr); |
119 } | 122 } |
120 }; | 123 }; |
121 | 124 |
122 #endif | 125 #endif |
OLD | NEW |