summaryrefslogtreecommitdiff
path: root/sources/simulator/VSSimulatorCanvas.java
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2008-06-02 01:43:11 +0000
committerPaul Buetow <paul@buetow.org>2008-06-02 01:43:11 +0000
commit16200e39c38ed76ddac954c7e005a22b6233c642 (patch)
treef4703e6359da7fbc3d5ca97e7427556777839b39 /sources/simulator/VSSimulatorCanvas.java
parent378c2674fc704b2a6bbf0e6a01b721a7aea7c2e2 (diff)
foo
Diffstat (limited to 'sources/simulator/VSSimulatorCanvas.java')
-rw-r--r--sources/simulator/VSSimulatorCanvas.java47
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);