OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright 2012 Google Inc. | 2 * Copyright 2012 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 | 8 |
9 #ifndef SkInstCnt_DEFINED | 9 #ifndef SkInstCnt_DEFINED |
10 #define SkInstCnt_DEFINED | 10 #define SkInstCnt_DEFINED |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
66 static int32_t* GetInstanceCountPtr() { \ | 66 static int32_t* GetInstanceCountPtr() { \ |
67 static int32_t gInstanceCount; \ | 67 static int32_t gInstanceCount; \ |
68 return &gInstanceCount; \ | 68 return &gInstanceCount; \ |
69 } \ | 69 } \ |
70 \ | 70 \ |
71 static SkTArray<int (*)(int, bool)>*& GetChildren() { \ | 71 static SkTArray<int (*)(int, bool)>*& GetChildren() { \ |
72 static SkTArray<int (*)(int, bool)>* gChildren; \ | 72 static SkTArray<int (*)(int, bool)>* gChildren; \ |
73 return gChildren; \ | 73 return gChildren; \ |
74 } \ | 74 } \ |
75 \ | 75 \ |
76 static void create_mutex(SkMutex** mutex) { \ | |
77 *mutex = SkNEW(SkMutex); \ | |
78 } \ | |
76 static SkBaseMutex& GetChildrenMutex() { \ | 79 static SkBaseMutex& GetChildrenMutex() { \ |
77 SK_DECLARE_STATIC_MUTEX(childrenMutex); \ | 80 static SkMutex* childrenMutex = (SkMutex*)className::SkInstanceCount Helper::nil; \ |
mtklein
2014/07/25 12:35:33
Just curious, how come static SkMutex* childrenMut
bungeman-skia
2014/07/25 14:40:40
Because that would require an out of line definiti
| |
78 return childrenMutex; \ | 81 SK_DECLARE_STATIC_ONCE(once); \ |
mtklein
2014/07/25 12:35:33
Can't we still use SK_DECLARE_STATIC_MUTEX to make
bungeman-skia
2014/07/25 14:40:40
See above, it's the same situation as the pointer,
| |
82 SkOnce(&once, create_mutex, &childrenMutex); \ | |
83 return *childrenMutex; \ | |
79 } \ | 84 } \ |
85 static const intptr_t nil = (intptr_t)NULL; \ | |
80 \ | 86 \ |
81 } fInstanceCountHelper; \ | 87 } fInstanceCountHelper; \ |
82 \ | 88 \ |
83 static int32_t GetInstanceCount() { \ | 89 static int32_t GetInstanceCount() { \ |
84 return *SkInstanceCountHelper::GetInstanceCountPtr(); \ | 90 return *SkInstanceCountHelper::GetInstanceCountPtr(); \ |
85 } \ | 91 } \ |
86 \ | 92 \ |
87 static void exitPrint() { \ | 93 static void exitPrint() { \ |
88 CheckInstanceCount(0, true); \ | 94 CheckInstanceCount(0, true); \ |
89 } \ | 95 } \ |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
133 #define SK_DECLARE_INST_COUNT(className) static void AddInstChild() { INHERITED: :AddInstChild(); } | 139 #define SK_DECLARE_INST_COUNT(className) static void AddInstChild() { INHERITED: :AddInstChild(); } |
134 #define SK_DECLARE_INST_COUNT_ROOT(className) static void AddInstChild() { } | 140 #define SK_DECLARE_INST_COUNT_ROOT(className) static void AddInstChild() { } |
135 #endif | 141 #endif |
136 | 142 |
137 // Following are deprecated. They are defined only for backwards API compatibili ty. | 143 // Following are deprecated. They are defined only for backwards API compatibili ty. |
138 #define SK_DECLARE_INST_COUNT_TEMPLATE(className) SK_DECLARE_INST_COUNT(classNam e) | 144 #define SK_DECLARE_INST_COUNT_TEMPLATE(className) SK_DECLARE_INST_COUNT(classNam e) |
139 #define SK_DEFINE_INST_COUNT(className) | 145 #define SK_DEFINE_INST_COUNT(className) |
140 #define SK_DEFINE_INST_COUNT_TEMPLATE(templateInfo, className) | 146 #define SK_DEFINE_INST_COUNT_TEMPLATE(templateInfo, className) |
141 | 147 |
142 #endif // SkInstCnt_DEFINED | 148 #endif // SkInstCnt_DEFINED |
OLD | NEW |