Browse Source

long-running task warning now warns based on average frame duration

Darren Ranalli 17 years ago
parent
commit
d0ef5b51ff
1 changed files with 7 additions and 5 deletions
  1. 7 5
      direct/src/task/Task.py

+ 7 - 5
direct/src/task/Task.py

@@ -354,7 +354,8 @@ class TaskManager:
 
 
     OsdPrefix = 'task.'
     OsdPrefix = 'task.'
 
 
-    DefTaskDurationWarningThreshold = 3.
+    # multiple of average frame duration
+    DefTaskDurationWarningThreshold = 4.
 
 
     def __init__(self):
     def __init__(self):
         self.running = 0
         self.running = 0
@@ -751,10 +752,11 @@ class TaskManager:
                 task.avgDt = 0
                 task.avgDt = 0
 
 
         # warn if the task took too long
         # 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
         return ret