Separated Inst counting from the SK_DEBUG #define (now SK_ENABLE_INST_COUNT)
http://codereview.appspot.com/6353047/ git-svn-id: http://skia.googlecode.com/svn/trunk@4376 2bbb7eff-a529-9590-31e7-b0007b416f81
This commit is contained in:
parent
006db0f1b8
commit
b74af872cc
@ -810,6 +810,11 @@ private:
|
||||
}
|
||||
|
||||
int main(int argc, char * const argv[]) {
|
||||
|
||||
#ifdef SK_ENABLE_INST_COUNT
|
||||
gPrintInstCount = true;
|
||||
#endif
|
||||
|
||||
SkGraphics::Init();
|
||||
// we don't need to see this during a run
|
||||
gSkSuppressFontCachePurgeSpew = true;
|
||||
|
@ -68,6 +68,7 @@
|
||||
'Debug': {
|
||||
'defines': [
|
||||
'SK_DEBUG',
|
||||
'SK_ENABLE_INST_COUNT',
|
||||
'GR_DEBUG=1',
|
||||
],
|
||||
},
|
||||
|
@ -79,6 +79,7 @@
|
||||
'../src/core/SkGlyphCache.cpp',
|
||||
'../src/core/SkGlyphCache.h',
|
||||
'../src/core/SkGraphics.cpp',
|
||||
'../src/core/SkInstCnt.cpp',
|
||||
'../src/core/SkLineClipper.cpp',
|
||||
'../src/core/SkMallocPixelRef.cpp',
|
||||
'../src/core/SkMask.cpp',
|
||||
|
@ -65,6 +65,12 @@
|
||||
//#define SK_DEBUG
|
||||
//#define SK_RELEASE
|
||||
|
||||
/* To assist debugging, Skia provides an instance counting utility in
|
||||
include/core/SkInstCount.h. This flag turns on and off that utility to
|
||||
allow instance count tracking in either debug or release builds. By
|
||||
default it is enabled in debug but disabled in release.
|
||||
*/
|
||||
//#define SK_ENABLE_INST_COUNT
|
||||
|
||||
/* If, in debugging mode, Skia needs to stop (presumably to invoke a debugger)
|
||||
it will call SK_CRASH(). If this is not defined it, it is defined in
|
||||
|
@ -18,9 +18,11 @@
|
||||
* At the end of an application a call to all the "root" objects'
|
||||
* CheckInstanceCount methods should be made
|
||||
*/
|
||||
#ifdef SK_DEBUG
|
||||
#ifdef SK_ENABLE_INST_COUNT
|
||||
#include "SkTArray.h"
|
||||
|
||||
extern bool gPrintInstCount;
|
||||
|
||||
#define SK_DECLARE_INST_COUNT(className) \
|
||||
SK_DECLARE_INST_COUNT_INTERNAL(className, \
|
||||
INHERITED::AddInstChild(CheckInstanceCount);)
|
||||
@ -58,7 +60,7 @@
|
||||
} \
|
||||
\
|
||||
static int CheckInstanceCount(int level = 0) { \
|
||||
if (0 != SkInstanceCountHelper::gInstanceCount) { \
|
||||
if (gPrintInstCount && 0 != SkInstanceCountHelper::gInstanceCount) {\
|
||||
SkDebugf("%*c Leaked %s: %d\n", \
|
||||
4*level, ' ', #className, \
|
||||
SkInstanceCountHelper::gInstanceCount); \
|
||||
@ -69,7 +71,7 @@
|
||||
count -= (*SkInstanceCountHelper::gChildren[i])(level+1); \
|
||||
} \
|
||||
SkASSERT(count >= 0); \
|
||||
if (childCount > 0 && count > 0) { \
|
||||
if (gPrintInstCount && childCount > 0 && count > 0) { \
|
||||
SkDebugf("%*c Leaked ???: %d\n", 4*(level + 1), ' ', count); \
|
||||
} \
|
||||
return SkInstanceCountHelper::gInstanceCount; \
|
||||
|
12
src/core/SkInstCnt.cpp
Normal file
12
src/core/SkInstCnt.cpp
Normal file
@ -0,0 +1,12 @@
|
||||
/*
|
||||
* Copyright 2012 Google Inc.
|
||||
*
|
||||
* Use of this source code is governed by a BSD-style license that can be
|
||||
* found in the LICENSE file.
|
||||
*/
|
||||
|
||||
#include "SkInstCnt.h"
|
||||
|
||||
#ifdef SK_ENABLE_INST_COUNT
|
||||
bool gPrintInstCount = false;
|
||||
#endif
|
@ -48,13 +48,17 @@ public:
|
||||
static A* Create(SkRandom* r);
|
||||
|
||||
static void SetAllocator(size_t preallocSize, size_t minAllocSize) {
|
||||
#ifdef SK_ENABLE_INST_COUNT
|
||||
SkASSERT(0 == GetInstanceCount());
|
||||
#endif
|
||||
GrMemoryPool* pool = new GrMemoryPool(preallocSize, minAllocSize);
|
||||
gPool.reset(pool);
|
||||
}
|
||||
|
||||
static void ResetAllocator() {
|
||||
#ifdef SK_ENABLE_INST_COUNT
|
||||
SkASSERT(0 == GetInstanceCount());
|
||||
#endif
|
||||
gPool.reset(NULL);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user