Ver Fonte

*** empty log message ***

Joe Shochet há 25 anos atrás
pai
commit
c1200b5b09
1 ficheiros alterados com 13 adições e 6 exclusões
  1. 13 6
      direct/src/fsm/FSM.py

+ 13 - 6
direct/src/fsm/FSM.py

@@ -193,12 +193,19 @@ class FSM(DirectObject):
             return 1
             return 1
         # We can implicitly always transition to our final state.
         # We can implicitly always transition to our final state.
         elif (aStateName == self.__finalState.getName()):
         elif (aStateName == self.__finalState.getName()):
-            FSM.notify.debug("[%s]: implicit transition to final state: %s" %
-                             (self.__name, aStateName))
-            self.__transition(aState,
-                              enterArgList,
-                              exitArgList)
-            return 1
+            if (self.__currentState == self.__finalState):
+                # Do not do the transition if we are already in the final state
+                FSM.notify.debug("[%s]: already in final state: %s" %
+                                 (self.__name, aStateName))
+                return 1
+            else:
+                # Force a transition to allow for cleanup
+                FSM.notify.debug("[%s]: implicit transition to final state: %s" %
+                                 (self.__name, aStateName))
+                self.__transition(aState,
+                                  enterArgList,
+                                  exitArgList)
+                return 1
         else:
         else:
             FSM.notify.warning("[%s]: no transition exists from %s to %s" %
             FSM.notify.warning("[%s]: no transition exists from %s to %s" %
                                (self.__name,
                                (self.__name,