diff --git a/direct/src/task/Task.py b/direct/src/task/Task.py index 952eed163f..5a07b9e545 100644 --- a/direct/src/task/Task.py +++ b/direct/src/task/Task.py @@ -312,6 +312,8 @@ class TaskManager: doLaterCleanupCounter = 2000 + OsdPrefix = 'task.' + def __init__(self): self.running = 0 self.stepping = 0 @@ -935,7 +937,49 @@ class TaskManager: # Ask for the time last frame return globalClock.getFrameTime(), globalClock.getFrameCount() - + def startOsd(self): + self.add(self.doOsd, 'taskMgr.doOsd') + self._osdEnabled = None + def osdEnabled(self): + return hasattr(self, '_osdEnabled') + def stopOsd(self): + onScreenDebug.removeAllWithPrefix(TaskManager.OsdPrefix) + self.remove('taskMgr.doOsd') + del self._osdEnabled + def doOsd(self, task): + import fpformat + prefix = TaskManager.OsdPrefix + onScreenDebug.removeAllWithPrefix(prefix) + i = 0 + taskNameWidth = 32 + dtWidth = 10 + priorityWidth = 10 + totalDt = 0 + totalAvgDt = 0 + for taskPriList in self.taskList: + priority = `taskPriList.getPriority()` + for task in taskPriList: + if task is None: + break + if task.isRemoved(): + taskName = '(R)' + task.name + else: + taskName = task.name + totalDt = totalDt + task.dt + totalAvgDt = totalAvgDt + task.avgDt + onScreenDebug.add( + ('%s%02s.%s' % (prefix, i, task.name)).ljust(taskNameWidth), + '%s %s %s %s' % ( + fpformat.fix(task.dt*1000, 2).rjust(dtWidth), + fpformat.fix(task.avgDt*1000, 2).rjust(dtWidth), + fpformat.fix(task.maxDt*1000, 2).rjust(dtWidth), + priority.rjust(priorityWidth))) + i += 1 + onScreenDebug.add(('%s%02s.total' % (prefix, i)).ljust(taskNameWidth), + '%s %s' % ( + fpformat.fix(totalDt*1000, 2).rjust(dtWidth), + fpformat.fix(totalAvgDt*1000, 2).rjust(dtWidth),)) + return cont """ import Task