diff options
Diffstat (limited to 'sources')
| -rw-r--r-- | sources/core/VSTaskManager.java | 8 | ||||
| -rw-r--r-- | sources/simulator/VSSimulatorCanvas.java | 42 |
2 files changed, 30 insertions, 20 deletions
diff --git a/sources/core/VSTaskManager.java b/sources/core/VSTaskManager.java index 96bbb9e..620d115 100644 --- a/sources/core/VSTaskManager.java +++ b/sources/core/VSTaskManager.java @@ -88,7 +88,7 @@ public class VSTaskManager { long globalTime; final long globalOffsetTime = lastGlobalTime + step; boolean redo; - Vector<VSProcess> processes = simulatorCanvas.getProcesses(); + ArrayList<VSProcess> processes = simulatorCanvas.getProcesses(); do { redo = false; @@ -216,7 +216,7 @@ public class VSTaskManager { * Resets the task manager. */ public synchronized void reset() { - Vector<VSProcess> processes = simulatorCanvas.getProcesses(); + ArrayList<VSProcess> processes = simulatorCanvas.getProcesses(); PriorityQueue<VSTask> tmp = null; synchronized (processes) { @@ -350,7 +350,7 @@ public class VSTaskManager { */ public synchronized ArrayList<VSTask> getLocalTasks() { ArrayList<VSTask> localTasks = new ArrayList<VSTask>(); - Vector<VSProcess> processes = simulatorCanvas.getProcesses(); + ArrayList<VSProcess> processes = simulatorCanvas.getProcesses(); for (VSTask task : fullfilledProgrammedTasks) if (!task.isGlobalTimed()) @@ -458,7 +458,7 @@ public class VSTaskManager { buffer.append(prefs.getString("lang.tasks.local")); - Vector<VSProcess> processes = simulatorCanvas.getProcesses(); + ArrayList<VSProcess> processes = simulatorCanvas.getProcesses(); synchronized (processes) { for (VSProcess process : processes) { VSPriorityQueue<VSTask> tasks = process.getTasks(); diff --git a/sources/simulator/VSSimulatorCanvas.java b/sources/simulator/VSSimulatorCanvas.java index 0fb58ed..e149cbc 100644 --- a/sources/simulator/VSSimulatorCanvas.java +++ b/sources/simulator/VSSimulatorCanvas.java @@ -120,7 +120,7 @@ public class VSSimulatorCanvas extends Canvas implements Runnable { private LinkedList<VSMessageLine> messageLinesToRemove; /** The processes. */ - private Vector<VSProcess> processes; + private ArrayList<VSProcess> processes; /** The clock speed. */ private double clockSpeed; @@ -477,7 +477,7 @@ public class VSSimulatorCanvas extends Canvas implements Runnable { this.taskManager = new VSTaskManager(prefs, this); this.messageLines = new LinkedList<VSMessageLine>(); this.messageLinesToRemove = new LinkedList<VSMessageLine>(); - this.processes = new Vector<VSProcess>(); + this.processes = new ArrayList<VSProcess>(); numProcesses = prefs.getInteger("sim.process.num"); updateFromPrefs(); @@ -996,7 +996,9 @@ public class VSSimulatorCanvas extends Canvas implements Runnable { for (int i = 0; i < numProcesses; ++i) { if (yPos < y + reachDistance && yPos > y - reachDistance - LINE_WIDTH) - return processes.get(i); + synchronized (processes) { + return processes.get(i); + } y += yOffset; } @@ -1097,10 +1099,12 @@ public class VSSimulatorCanvas extends Canvas implements Runnable { * @return the process */ public VSProcess getProcess(int processNum) { - if (processNum >= processes.size()) - return null; + synchronized (processes) { + if (processNum >= processes.size()) + return null; - return processes.get(processNum); + return processes.get(processNum); + } } /* (non-Javadoc) @@ -1366,8 +1370,10 @@ public class VSSimulatorCanvas extends Canvas implements Runnable { * @param processNum the process num */ public void editProcess(int processNum) { - VSProcess process = processes.get(processNum); - editProcess(process); + synchronized (processes) { + VSProcess process = processes.get(processNum); + editProcess(process); + } } /** @@ -1404,7 +1410,7 @@ public class VSSimulatorCanvas extends Canvas implements Runnable { * * @return the processes */ - public Vector<VSProcess> getProcesses() { + public ArrayList<VSProcess> getProcesses() { return processes; } @@ -1448,16 +1454,18 @@ public class VSSimulatorCanvas extends Canvas implements Runnable { simulator.getSimulatorFrame().removeSimulator(simulator); } else { - int index = processes.indexOf(process); - processes.remove(index); - + int index = 0; synchronized (processes) { + index = processes.indexOf(process); + processes.remove(index); + for (VSProcess p : processes) { p.removedAProcessAtIndex(index); } + + numProcesses = processes.size(); } - numProcesses = processes.size(); taskManager.removeTasksOf(process); simulator.removedAProcessAtIndex(index); recalcOnChange(); @@ -1499,14 +1507,16 @@ public class VSSimulatorCanvas extends Canvas implements Runnable { * Adds a new process to the simulator. */ private void addProcess() { - numProcesses = processes.size() + 1; - VSProcess newProcess = createProcess(processes.size()); - processes.add(newProcess); synchronized (processes) { + numProcesses = processes.size() + 1; + VSProcess newProcess = createProcess(processes.size()); + processes.add(newProcess); + for (VSProcess process : processes) if (!process.equals(newProcess)) process.addedAProcess(); } + recalcOnChange(); simulator.addProcessAtIndex(processes.size()-1); } |
