From b8ac8d8e214b70417385ae70a73a79701e4e3f42 Mon Sep 17 00:00:00 2001 From: David Rose Date: Mon, 16 Sep 2002 17:53:40 +0000 Subject: [PATCH] subtle ordering problem --- direct/src/interval/IntervalManager.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/direct/src/interval/IntervalManager.py b/direct/src/interval/IntervalManager.py index a9b18d6edd..9e518cec31 100644 --- a/direct/src/interval/IntervalManager.py +++ b/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) + # 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() - - index = self.getNextRemoval() - while index >= 0: - self.ivals[index] = None - index = self.getNextRemoval() def __storeInterval(self, interval, index): while index >= len(self.ivals):