소스 검색

useless entries in instance_times no longer added

Simon Van Mierlo 7 년 전
부모
커밋
bd1f5369fa
1개의 변경된 파일5개의 추가작업 그리고 3개의 파일을 삭제
  1. 5 3
      src/python_sccd/python_sccd_runtime/statecharts_core.py

+ 5 - 3
src/python_sccd/python_sccd_runtime/statecharts_core.py

@@ -1046,7 +1046,8 @@ class RuntimeClassBase(object):
         
     def addEvent(self, event_list, time_offset = 0):
         event_time = self.controller.simulated_time + time_offset
-        heappush(self.controller.object_manager.instance_times, (event_time, self))
+        if not (event_time, self) in self.controller.object_manager.instance_times:
+            heappush(self.controller.object_manager.instance_times, (event_time, self))
         if event_time < self.earliest_event_time:
             self.earliest_event_time = event_time
         if not isinstance(event_list, list):
@@ -1064,13 +1065,14 @@ class RuntimeClassBase(object):
         self.is_stable = is_stable
         # self.earliest_event_time keeps track of the earliest time this instance will execute a transition
         if not is_stable:
-            self.earliest_event_time = 0
+            self.earliest_event_time = self.controller.simulated_time
         elif not self.active:
             self.earliest_event_time = INFINITY
         else:
             self.earliest_event_time = self.events.getEarliestTime()
         if self.earliest_event_time != INFINITY:
-            heappush(self.controller.object_manager.instance_times, (self.earliest_event_time, self))
+            if not (self.earliest_event_time, self) in self.controller.object_manager.instance_times:
+                heappush(self.controller.object_manager.instance_times, (self.earliest_event_time, self))
 
     def step(self):
         is_stable = False