mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-03 02:15:43 -04:00
frame profiler framework
This commit is contained in:
parent
b742e9050d
commit
2e362128da
18
direct/src/task/FrameProfiler.py
Executable file
18
direct/src/task/FrameProfiler.py
Executable file
@ -0,0 +1,18 @@
|
||||
from direct.directnotify.DirectNotifyGlobal import directNotify
|
||||
from direct.fsm.StatePush import FunctionCall
|
||||
|
||||
class FrameProfiler:
|
||||
notify = directNotify.newCategory('FrameProfiler')
|
||||
|
||||
def __init__(self):
|
||||
self._enableFC = FunctionCall(self._setEnabled, taskMgr.getProfileFramesSV())
|
||||
|
||||
def destroy(self):
|
||||
self._enableFC.set(False)
|
||||
self._enableFC.destroy()
|
||||
|
||||
def _setEnabled(self, enabled):
|
||||
if enabled:
|
||||
print 'FrameProfiler enabled'
|
||||
else:
|
||||
print 'FrameProfiler disabled'
|
@ -114,6 +114,8 @@ class TaskManager:
|
||||
self._frameProfileQueue = Queue()
|
||||
|
||||
# this will be set when it's safe to import StateVar
|
||||
self._profileFrames = None
|
||||
self._frameProfiler = None
|
||||
self._profileTasks = None
|
||||
self._taskProfiler = None
|
||||
self._taskProfileInfo = ScratchPad(
|
||||
@ -128,6 +130,8 @@ class TaskManager:
|
||||
from direct.fsm.StatePush import StateVar
|
||||
self._profileTasks = StateVar(False)
|
||||
self.setProfileTasks(ConfigVariableBool('profile-task-spikes', 0).getValue())
|
||||
self._profileFrames = StateVar(False)
|
||||
self.setProfileFrames(ConfigVariableBool('profile-frame-spikes', 0).getValue())
|
||||
|
||||
def destroy(self):
|
||||
# This should be safe to call multiple times.
|
||||
@ -554,6 +558,19 @@ class TaskManager:
|
||||
result = self.step()
|
||||
return result
|
||||
|
||||
def getProfileFrames(self):
|
||||
return self._profileFrames.get()
|
||||
|
||||
def getProfileFramesSV(self):
|
||||
return self._profileFrames
|
||||
|
||||
def setProfileFrames(self, profileFrames):
|
||||
self._profileFrames.set(profileFrames)
|
||||
if (not self._frameProfiler) and profileFrames:
|
||||
# import here due to import dependencies
|
||||
from direct.task.FrameProfiler import FrameProfiler
|
||||
self._frameProfiler = FrameProfiler()
|
||||
|
||||
def getProfileTasks(self):
|
||||
return self._profileTasks.get()
|
||||
|
||||
|
@ -427,6 +427,8 @@ class TaskManager:
|
||||
self.MaxEpockSpeed = 1.0/30.0;
|
||||
|
||||
# this will be set when it's safe to import StateVar
|
||||
self._profileFrames = None
|
||||
self._frameProfiler = None
|
||||
self._profileTasks = None
|
||||
self._taskProfiler = None
|
||||
self._taskProfileInfo = ScratchPad(
|
||||
@ -1035,6 +1037,19 @@ class TaskManager:
|
||||
result = self.step()
|
||||
return result
|
||||
|
||||
def getProfileFrames(self):
|
||||
return self._profileFrames.get()
|
||||
|
||||
def getProfileFramesSV(self):
|
||||
return self._profileFrames
|
||||
|
||||
def setProfileFrames(self, profileFrames):
|
||||
self._profileFrames.set(profileFrames)
|
||||
if (not self._frameProfiler) and profileFrames:
|
||||
# import here due to import dependencies
|
||||
from direct.task.FrameProfiler import FrameProfiler
|
||||
self._frameProfiler = FrameProfiler()
|
||||
|
||||
def getProfileTasks(self):
|
||||
return self._profileTasks.get()
|
||||
|
||||
@ -1182,6 +1197,8 @@ class TaskManager:
|
||||
from direct.fsm.StatePush import StateVar
|
||||
self._profileTasks = StateVar(False)
|
||||
self.setProfileTasks(getBase().config.GetBool('profile-task-spikes', 0))
|
||||
self._profileFrames = StateVar(False)
|
||||
self.setProfileFrames(ConfigVariableBool('profile-frame-spikes', 0).getValue())
|
||||
|
||||
# Set the clock to have last frame's time in case we were
|
||||
# Paused at the prompt for a long time
|
||||
|
Loading…
x
Reference in New Issue
Block a user