added *base.profileNextFrame

This commit is contained in:
Darren Ranalli 2006-10-28 13:15:53 +00:00
parent 5f9c4d55dc
commit 0341696500
3 changed files with 24 additions and 2 deletions

View File

@ -761,9 +761,15 @@ def profiled(category, terse=False):
def loadParticles():
...
want-profile-particles 1
"""
assert type(category) is types.StringType, "must provide a category name for @profiled"
if not __dev__:
try:
null = not __dev__
except:
null = not __debug__
if null:
# if we're not in __dev__, just return the function itself. This
# results in zero runtime overhead, since decorators are evaluated
# at module-load.

View File

@ -2027,6 +2027,9 @@ class ShowBase(DirectObject.DirectObject):
else:
__builtins__["direct"] = self.direct = None
def profileNextFrame(self):
self.taskMgr.profileNextFrame()
def run(self):
self.taskMgr.run()

View File

@ -333,6 +333,8 @@ class TaskManager:
# List of tasks scheduled to execute in the future
self.__doLaterList = []
self._profileNextFrame = False
# We copy this value in from __builtins__ when it gets set.
# But since the TaskManager might have to run before it gets
# set--before it can even be available--we also have to have
@ -767,6 +769,13 @@ class TaskManager:
self.__addNewTask(task)
self.pendingTaskDict.clear()
def profileNextFrame(self):
self._profileNextFrame = True
@profiled('frame')
def _profiledFrame(self, *args, **kArgs):
return self.step(*args, **kArgs)
def step(self):
# assert TaskManager.notify.debug('step: begin')
self.currentTime, self.currentFrame = self.__getTimeFrame()
@ -837,7 +846,11 @@ class TaskManager:
self.running = 1
while self.running:
try:
self.step()
if self._profileNextFrame:
self._profiledFrame()
self._profileNextFrame = False
else:
self.step()
except KeyboardInterrupt:
self.stop()
except IOError, (errno, strerror):