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()
|
self._frameProfileQueue = Queue()
|
||||||
|
|
||||||
# this will be set when it's safe to import StateVar
|
# this will be set when it's safe to import StateVar
|
||||||
|
self._profileFrames = None
|
||||||
|
self._frameProfiler = None
|
||||||
self._profileTasks = None
|
self._profileTasks = None
|
||||||
self._taskProfiler = None
|
self._taskProfiler = None
|
||||||
self._taskProfileInfo = ScratchPad(
|
self._taskProfileInfo = ScratchPad(
|
||||||
@ -128,6 +130,8 @@ class TaskManager:
|
|||||||
from direct.fsm.StatePush import StateVar
|
from direct.fsm.StatePush import StateVar
|
||||||
self._profileTasks = StateVar(False)
|
self._profileTasks = StateVar(False)
|
||||||
self.setProfileTasks(ConfigVariableBool('profile-task-spikes', 0).getValue())
|
self.setProfileTasks(ConfigVariableBool('profile-task-spikes', 0).getValue())
|
||||||
|
self._profileFrames = StateVar(False)
|
||||||
|
self.setProfileFrames(ConfigVariableBool('profile-frame-spikes', 0).getValue())
|
||||||
|
|
||||||
def destroy(self):
|
def destroy(self):
|
||||||
# This should be safe to call multiple times.
|
# This should be safe to call multiple times.
|
||||||
@ -554,6 +558,19 @@ class TaskManager:
|
|||||||
result = self.step()
|
result = self.step()
|
||||||
return result
|
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):
|
def getProfileTasks(self):
|
||||||
return self._profileTasks.get()
|
return self._profileTasks.get()
|
||||||
|
|
||||||
|
@ -427,6 +427,8 @@ class TaskManager:
|
|||||||
self.MaxEpockSpeed = 1.0/30.0;
|
self.MaxEpockSpeed = 1.0/30.0;
|
||||||
|
|
||||||
# this will be set when it's safe to import StateVar
|
# this will be set when it's safe to import StateVar
|
||||||
|
self._profileFrames = None
|
||||||
|
self._frameProfiler = None
|
||||||
self._profileTasks = None
|
self._profileTasks = None
|
||||||
self._taskProfiler = None
|
self._taskProfiler = None
|
||||||
self._taskProfileInfo = ScratchPad(
|
self._taskProfileInfo = ScratchPad(
|
||||||
@ -1035,6 +1037,19 @@ class TaskManager:
|
|||||||
result = self.step()
|
result = self.step()
|
||||||
return result
|
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):
|
def getProfileTasks(self):
|
||||||
return self._profileTasks.get()
|
return self._profileTasks.get()
|
||||||
|
|
||||||
@ -1182,6 +1197,8 @@ class TaskManager:
|
|||||||
from direct.fsm.StatePush import StateVar
|
from direct.fsm.StatePush import StateVar
|
||||||
self._profileTasks = StateVar(False)
|
self._profileTasks = StateVar(False)
|
||||||
self.setProfileTasks(getBase().config.GetBool('profile-task-spikes', 0))
|
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
|
# Set the clock to have last frame's time in case we were
|
||||||
# Paused at the prompt for a long time
|
# Paused at the prompt for a long time
|
||||||
|
Loading…
x
Reference in New Issue
Block a user