From ff599cf9abda48677c7e0cc83e14db348aa882e5 Mon Sep 17 00:00:00 2001 From: Ken Patel Date: Wed, 28 Apr 2010 21:16:25 +0000 Subject: [PATCH] bpdb - fix bpgroup static=1 behavior for when bpdb is disabled --- direct/src/showbase/PythonUtil.py | 45 +++++++++++++++++-------------- 1 file changed, 25 insertions(+), 20 deletions(-) diff --git a/direct/src/showbase/PythonUtil.py b/direct/src/showbase/PythonUtil.py index da64677d40..aff3c990fe 100644 --- a/direct/src/showbase/PythonUtil.py +++ b/direct/src/showbase/PythonUtil.py @@ -4370,15 +4370,15 @@ class BpDb: return bpdb.enabled @staticmethod - def bp(id=None, grp=None, cfg=None, iff=True, frameCount=1): + def bp(id=None, grp=None, cfg=None, iff=True, test=None, frameCount=1): if not bpdb.enabled or not bpdb.verifyEnabled(): return - bpi = bp(id=id, grp=grp, cfg=cfg, iff=iff,frameCount=frameCount+1) - bpi.maybeBreak(frameCount=frameCount+1) + bpi = bp(id=id, grp=grp, cfg=cfg, iff=iff, frameCount=frameCount+1) + bpi.maybeBreak(test=test, frameCount=frameCount+1) @staticmethod - def bpCall(id=None,grp=None,cfg=None,iff=True,frameCount=1,onEnter=1,onExit=0): + def bpCall(id=None,grp=None,cfg=None,iff=True,test=None,frameCount=1,onEnter=1,onExit=0): def decorator(f): return f @@ -4394,10 +4394,10 @@ class BpDb: #create our bp object dbp = bp(id=id or f.__name__, grp=bpi.grp, cfg=bpi.cfg, iff=iff, frameCount=frameCount+1) if onEnter: - dbp.maybeBreak(iff=iff,frameCount=frameCount+1,displayPrefix='Calling ') + dbp.maybeBreak(iff=iff,test=test,frameCount=frameCount+1,displayPrefix='Calling ') f_result = f(*args, **kwds) if onExit: - dbp.maybeBreak(iff=iff,frameCount=frameCount+1,displayPrefix='Exited ') + dbp.maybeBreak(iff=iff,test=test,frameCount=frameCount+1,displayPrefix='Exited ') return f_result wrap.func_name = f.func_name @@ -4410,18 +4410,17 @@ class BpDb: @staticmethod def bpGroup(*args, **kArgs): - if not bpdb.enabled or not bpdb.verifyEnabled(): - def functor(*cArgs, **ckArgs): - return - return functor - - argsCopy = args[:] def functor(*cArgs, **ckArgs): - kwArgs = kArgs - kwArgs.update(ckArgs) - kwArgs.pop('static', None) - kwArgs['frameCount'] = ckArgs.get('frameCount',1)+1 - return bpdb.bp(*(cArgs), **kwArgs) + return + + if bpdb.enabled and bpdb.verifyEnabled(): + argsCopy = args[:] + def functor(*cArgs, **ckArgs): + kwArgs = kArgs + kwArgs.update(ckArgs) + kwArgs.pop('static', None) + kwArgs['frameCount'] = ckArgs.get('frameCount',1)+1 + return bpdb.bp(*(cArgs), **kwArgs) if kArgs.get('static'): return staticmethod(functor) @@ -4614,16 +4613,22 @@ class bp: bpdb.grpInfos[grp][id] = {} print '%s has been reset.'%(self.prettyName(id,grp,q=1),) - def maybeBreak(self, iff=True, frameCount=1,displayPrefix=''): - if self.shouldBreak(iff): + def maybeBreak(self, iff=True, test=None, frameCount=1, displayPrefix=''): + if self.shouldBreak(iff=iff, test=test): self.doBreak(frameCount=frameCount+1,displayPrefix=displayPrefix) - def shouldBreak(self,iff=True): + def shouldBreak(self,iff=True, test=None): #check easy early out if self.disabled: return False if not self.iff or not iff: return False + if test: + if not isinstance(test, (list, tuple)): + test = (test,) + for atest in test: + if not atest(): + return False #make sure we exist self.makeIdGrp(self.id,self.grp)