From 657792498ace1bad9195cad958af7d77ae49e75b Mon Sep 17 00:00:00 2001 From: Darren Ranalli Date: Wed, 18 Apr 2007 09:40:15 +0000 Subject: [PATCH] added GarbageLeakDetector --- direct/src/showbase/LeakDetectors.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/direct/src/showbase/LeakDetectors.py b/direct/src/showbase/LeakDetectors.py index 549b3a9cfa..e926a3dbfb 100755 --- a/direct/src/showbase/LeakDetectors.py +++ b/direct/src/showbase/LeakDetectors.py @@ -1,6 +1,7 @@ # objects that report different types of leaks to the ContainerLeakDetector -import __builtin__ +from direct.showbase.PythonUtil import gcDebugOn +import __builtin__, gc class LeakDetector: def __init__(self): @@ -12,6 +13,21 @@ class LeakDetector: def destroy(self): del leakDetectors[id(self)] +class GarbageLeakDetector(LeakDetector): + # are we accumulating Python garbage? + def __len__(self): + # do a garbage collection + wasOn = gcDebugOn() + oldFlags = gc.get_debug() + if not wasOn: + gc.set_debug(gc.DEBUG_SAVEALL) + gc.collect() + numGarbage = len(gc.garbage) + del gc.garbage[:] + if not wasOn: + gc.set_debug(oldFlags) + return numGarbage + class SceneGraphLeakDetector(LeakDetector): # is a scene graph leaking nodes? def __init__(self, render):