diff --git a/direct/src/task/Task.py b/direct/src/task/Task.py index 444828209e..3f7fc5857a 100644 --- a/direct/src/task/Task.py +++ b/direct/src/task/Task.py @@ -354,7 +354,8 @@ class TaskManager: OsdPrefix = 'task.' - DefTaskDurationWarningThreshold = 3. + # multiple of average frame duration + DefTaskDurationWarningThreshold = 4. def __init__(self): self.running = 0 @@ -751,10 +752,11 @@ class TaskManager: task.avgDt = 0 # warn if the task took too long - if self.warnTaskDuration: - if dt >= self.taskDurationWarningThreshold: - assert TaskManager.notify.warning('task %s ran for %.2f seconds' % ( - task.name, dt)) + if self.warnTaskDuration and self.globalClock: + avgFrameDur = (1. / self.globalClock.getAverageFrameRate()) + if dt >= (self.taskDurationWarningThreshold * avgFrameDur): + assert TaskManager.notify.warning('frame %s: task %s ran for %.2f seconds, avg frame duration=%.2f seconds' % ( + globalClock.getFrameCount(), task.name, dt, avgFrameDur)) return ret