diff --git a/direct/src/showbase/ReferrerSearch.py b/direct/src/showbase/ReferrerSearch.py index 902ef30ca7..35acb5e915 100755 --- a/direct/src/showbase/ReferrerSearch.py +++ b/direct/src/showbase/ReferrerSearch.py @@ -9,8 +9,9 @@ class ReferrerSearch(Job): Job.__init__(self, 'ReferrerSearch') self.obj = obj self.maxRefs = maxRefs - self.found = set() + self.visited = set() self.depth = 0 + self.found = 0 self.shouldPrintStats = False def __call__(self): @@ -18,7 +19,7 @@ class ReferrerSearch(Job): info = safeReprNotify.getInfo() safeReprNotify.setInfo(0) - self.found = set() + self.visited = set() try: self.step(0, [self.obj]) finally: @@ -35,7 +36,7 @@ class ReferrerSearch(Job): print 'RefPath(%s): Beginning ReferrerSearch for %s' %(self._id, fastRepr(self.obj)) - self.found = set() + self.visited = set() for x in self.stepGenerator(0, [self.obj]): yield None pass @@ -97,16 +98,17 @@ class ReferrerSearch(Job): at = path[-1] - if id(at) in self.found: + if id(at) in self.visited: # don't continue down this path return # check for success if (self.isAtRoot(at, path)): + self.found += 1 return # mark our progress after checking goal - self.found.add(id(at)) + self.visited.add(id(at)) referrers = [ref for ref in gc.get_referrers(at) \ if not (ref is path or \ @@ -114,7 +116,7 @@ class ReferrerSearch(Job): (isinstance(ref, dict) and \ ref.keys() == locals().keys()) or \ ref is self.__dict__ or \ - id(ref) in self.found) ] + id(ref) in self.visited) ] if (self.isManyRef(at, path, referrers)): return @@ -136,16 +138,17 @@ class ReferrerSearch(Job): at = path[-1] - if id(at) in self.found: + if id(at) in self.visited: # don't continue down this path raise StopIteration # check for success if (self.isAtRoot(at, path)): + self.found += 1 raise StopIteration # mark our progress after checking goal - self.found.add(id(at)) + self.visited.add(id(at)) referrers = [ref for ref in gc.get_referrers(at) \ if not (ref is path or \ @@ -153,7 +156,7 @@ class ReferrerSearch(Job): (isinstance(ref, dict) and \ ref.keys() == locals().keys()) or \ ref is self.__dict__ or \ - id(ref) in self.found) ] + id(ref) in self.visited) ] if (self.isManyRef(at, path, referrers)): raise StopIteration @@ -173,8 +176,8 @@ class ReferrerSearch(Job): def printStats(self, path): path = list(reversed(path)) path.insert(0,0) - print 'RefPath(%s) - Stats - found(%s) | depth(%s) | CurrentPath(%s)' % \ - (self._id, len(self.found), self.depth, ''.join(self.myrepr(path[x], path[x+1]) for x in xrange(len(path)-1))) + print 'RefPath(%s) - Stats - visited(%s) | found(%s) | depth(%s) | CurrentPath(%s)' % \ + (self._id, len(self.visited), self.found, self.depth, ''.join(self.myrepr(path[x], path[x+1]) for x in xrange(len(path)-1))) pass def isAtRoot(self, at, path):