Browse Source

subtle ordering problem

David Rose 23 years ago
parent
commit
b8ac8d8e21
1 changed files with 9 additions and 5 deletions
  1. 9 5
      direct/src/interval/IntervalManager.py

+ 9 - 5
direct/src/interval/IntervalManager.py

@@ -48,15 +48,19 @@ class IntervalManager(CIntervalManager):
         # Call C++ step, then do all the required Python post-processing.
         CIntervalManager.step(self)
 
-        index = self.getNextEvent()
-        while index >= 0:
-            self.ivals[index].privPostEvent()
-            index = self.getNextEvent()
-
+        # It is important to call all of the python callbacks on the
+        # just-removed intervals before we call any of the callbacks
+        # on the still-running intervals.
         index = self.getNextRemoval()
         while index >= 0:
+            self.ivals[index].privPostEvent()
             self.ivals[index] = None
             index = self.getNextRemoval()
+
+        index = self.getNextEvent()
+        while index >= 0:
+            self.ivals[index].privPostEvent()
+            index = self.getNextEvent()
         
     def __storeInterval(self, interval, index):
         while index >= len(self.ivals):