summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sources/core/VSProcess.java6
-rw-r--r--sources/core/VSTask.java8
-rw-r--r--sources/core/VSTaskManager.java6
-rw-r--r--sources/simulator/VSSimulationPanel.java6
4 files changed, 19 insertions, 7 deletions
diff --git a/sources/core/VSProcess.java b/sources/core/VSProcess.java
index 7e50abe..aa754a2 100644
--- a/sources/core/VSProcess.java
+++ b/sources/core/VSProcess.java
@@ -164,10 +164,8 @@ public final class VSProcess extends VSPrefs {
final long currentGlobalTimestep = globalTime - this.globalTime;
this.globalTime = globalTime;
- //if (!isCrashed) {
- localTime += currentGlobalTimestep;
- clockOffset += currentGlobalTimestep * (double) clockVariance;
- //}
+ localTime += currentGlobalTimestep;
+ clockOffset += currentGlobalTimestep * (double) clockVariance;
while (clockOffset >= 1) {
clockOffset -= 1;
diff --git a/sources/core/VSTask.java b/sources/core/VSTask.java
index a476e35..7c2b067 100644
--- a/sources/core/VSTask.java
+++ b/sources/core/VSTask.java
@@ -47,6 +47,13 @@ public class VSTask implements Comparable {
return false;
}
+ public boolean timeOver() {
+ if (isGlobalTimed)
+ return taskTime < process.getGlobalTime();
+
+ return taskTime < process.getTime();
+ }
+
public boolean equals(VSTask task) {
return event.equals(task.getEvent())
&& taskTime == task.getTaskTime()
@@ -176,6 +183,7 @@ public class VSTask implements Comparable {
else if (taskTime > task.getTaskTime())
return 1;
+ /* If it's a ProtocolEvent, it should get handled first */
boolean a = event instanceof ProtocolEvent;
boolean b = task.getEvent() instanceof ProtocolEvent;
diff --git a/sources/core/VSTaskManager.java b/sources/core/VSTaskManager.java
index 7e24cf3..4f79d16 100644
--- a/sources/core/VSTaskManager.java
+++ b/sources/core/VSTaskManager.java
@@ -184,8 +184,12 @@ public class VSTaskManager {
}
private void insert(VSTask task) {
- if (task.isGlobalTimed())
+ if (task.timeOver())
+ fullfilledProgrammedTasks.addLast(task);
+
+ else if (task.isGlobalTimed())
globalTasks.add(task);
+
else
tasks.add(task);
}
diff --git a/sources/simulator/VSSimulationPanel.java b/sources/simulator/VSSimulationPanel.java
index e9ade8c..7be587b 100644
--- a/sources/simulator/VSSimulationPanel.java
+++ b/sources/simulator/VSSimulationPanel.java
@@ -556,14 +556,16 @@ public class VSSimulationPanel extends JPanel implements Runnable, MouseMotionLi
time = 0;
lastTime = 0;
- taskManager.reset();
-
for (VSProcess p : processes)
p.reset();
+ /* Reset the task manager AFTER the processes, for the programmed tasks */
+ taskManager.reset();
+
synchronized (messageLines) {
messageLines.clear();
}
+
repaint();
logging.clear();
}