diff options
| author | Paul Buetow <paul@buetow.org> | 2008-05-19 00:55:18 +0000 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2008-05-19 00:55:18 +0000 |
| commit | c91c5aa93d701eccda88112ab4a078b5057d6c33 (patch) | |
| tree | a3aac3f3d33bbb6c2afdc3840061e78582a3ecae | |
| parent | f3644572ea68aacf96ce5a1a9b9e5ce2cf617d95 (diff) | |
Bugfix in the TaskManager.insert method.
| -rw-r--r-- | sources/core/VSProcess.java | 6 | ||||
| -rw-r--r-- | sources/core/VSTask.java | 8 | ||||
| -rw-r--r-- | sources/core/VSTaskManager.java | 6 | ||||
| -rw-r--r-- | sources/simulator/VSSimulationPanel.java | 6 |
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(); } |
