added *base.profileNextFrame
This commit is contained in:
parent
5f9c4d55dc
commit
0341696500
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
||||
|
|
|
|||
|
|
@ -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):
|
||||
|
|
|
|||
Loading…
Reference in New Issue