diff options
| author | Paul Buetow <paul@buetow.org> | 2008-05-31 04:42:18 +0000 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2008-05-31 04:42:18 +0000 |
| commit | 9f75eaace545db34546dff94a8a6ea0711a3bca4 (patch) | |
| tree | 104915e39521e5a2be970a5bc37d8c9e9bc9bf17 /sources/simulator | |
| parent | dda68e02570d7dbdc82ce56123ebb4da989acafe (diff) | |
Vector<VSProcess> processes is now an ArrayList
Diffstat (limited to 'sources/simulator')
| -rw-r--r-- | sources/simulator/VSSimulatorCanvas.java | 42 |
1 files changed, 26 insertions, 16 deletions
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); } |
