diff --git a/direct/src/showbase/LeakDetectors.py b/direct/src/showbase/LeakDetectors.py new file mode 100755 index 0000000000..f7708b99cf --- /dev/null +++ b/direct/src/showbase/LeakDetectors.py @@ -0,0 +1,20 @@ +# objects that report different types of leaks to the ContainerLeakDetector + +class SceneGraphLeakDetector: + # is a scene graph leaking nodes? + def __init__(self, render): + self._render = render + if config.GetBool('leak-scene-graph', 0): + self._leakTaskName = 'leakNodes-%s' % serialNum() + self._leakNode() + def destroy(self): + if hasattr(self, '_leakTaskName'): + taskMgr.remove(self._leakTaskName) + del self._render + def __len__(self): + return self._render.getNumDescendants() + def __repr__(self): + return 'SceneGraphLeakDetector(%s)' % self._render + def _leakNode(self, task=None): + self._render.attachNewNode('leakNode-%s' % serialNum()) + taskMgr.doMethodLater(10, self._leakNode, self._leakTaskName)