diff options
| author | Paul Buetow <paul@buetow.org> | 2008-06-02 01:43:11 +0000 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2008-06-02 01:43:11 +0000 |
| commit | 16200e39c38ed76ddac954c7e005a22b6233c642 (patch) | |
| tree | f4703e6359da7fbc3d5ca97e7427556777839b39 /sources/simulator/VSSimulatorCanvas.java | |
| parent | 378c2674fc704b2a6bbf0e6a01b721a7aea7c2e2 (diff) | |
foo
Diffstat (limited to 'sources/simulator/VSSimulatorCanvas.java')
| -rw-r--r-- | sources/simulator/VSSimulatorCanvas.java | 47 |
1 files changed, 32 insertions, 15 deletions
diff --git a/sources/simulator/VSSimulatorCanvas.java b/sources/simulator/VSSimulatorCanvas.java index 1d12a06..752f726 100644 --- a/sources/simulator/VSSimulatorCanvas.java +++ b/sources/simulator/VSSimulatorCanvas.java @@ -673,6 +673,11 @@ public class VSSimulatorCanvas extends Canvas * order to gain performance! */ private void recalcOnChange() { + synchronized (processes) { + if (processes.size() == 0) + return; + } + processlineColor = prefs.getColor("col.process.line"); processSecondlineColor = prefs.getColor("col.process.secondline"); processSeplineColor = prefs.getColor("col.process.sepline"); @@ -1484,16 +1489,15 @@ public class VSSimulatorCanvas extends Canvas index = processes.indexOf(process); processes.remove(index); - for (VSProcess p : processes) { + for (VSProcess p : processes) p.removedAProcessAtIndex(index); - } numProcesses = processes.size(); } - taskManager.removeTasksOf(process); - simulator.removedAProcessAtIndex(index); - recalcOnChange(); + taskManager.removeTasksOf(process); + simulator.removedAProcessAtIndex(index); + recalcOnChange(); ArrayList<VSMessageLine> removeThose = new ArrayList<VSMessageLine>(); @@ -1530,8 +1534,10 @@ public class VSSimulatorCanvas extends Canvas /** * Adds a new process to the simulator. + * + * @return The process which has been added */ - private void addProcess() { + private VSProcess addProcess() { synchronized (processes) { numProcesses = processes.size() + 1; VSProcess newProcess = createProcess(processes.size()); @@ -1543,6 +1549,8 @@ public class VSSimulatorCanvas extends Canvas recalcOnChange(); simulator.addProcessAtIndex(processes.size()-1); + + return newProcess; } } @@ -1573,16 +1581,25 @@ public class VSSimulatorCanvas extends Canvas if (VSSerialize.DEBUG) System.out.println("Deserializing: VSSimulatorCanvas"); + int num = ((Integer) objectInputStream.readObject()).intValue(); + logging.clear(); + + ArrayList<VSProcess> newProcesses = new ArrayList<VSProcess>(); + for (int i = 0; i < num; ++i) { + VSProcess process = createProcess(i); + process.deserialize(serialize, objectInputStream); + newProcesses.add(process); + } + synchronized (processes) { - numProcesses = ((Integer) - objectInputStream.readObject()).intValue(); - - processes.clear(); - for (int i = 0; i < numProcesses; ++i) { - VSProcess process = createProcess(i); - process.deserialize(serialize, objectInputStream); - processes.add(process); - } + int diff = numProcesses - num; + if (diff > 0) + for (int i = num; i < numProcesses; ++i) + removeProcess(processes.get(num)); + + for (int i = 0; i < num; ++i) { + + } } taskManager.deserialize(serialize, objectInputStream); |
