Made access to layers synchronized

This commit is contained in:
ngb
2021-12-31 15:28:21 +01:00
parent 1201bbc708
commit c712826c07

View File

@@ -29,10 +29,12 @@ public class Zeichenleinwand extends Canvas {
// Liste der Ebenen initialisieren und die Standardebenen einfügen // Liste der Ebenen initialisieren und die Standardebenen einfügen
layers = new LinkedList<>(); layers = new LinkedList<>();
synchronized( layers ) {
layers.add(new ColorLayer(Constants.STD_BACKGROUND)); layers.add(new ColorLayer(Constants.STD_BACKGROUND));
layers.add(new DrawingLayer()); layers.add(new DrawingLayer());
layers.add(new ShapesLayer()); layers.add(new ShapesLayer());
} }
}
/** /**
* Ändert die Größe der Zeichenleinwand auf die angegebene Größe in Pixeln. * Ändert die Größe der Zeichenleinwand auf die angegebene Größe in Pixeln.
@@ -47,10 +49,12 @@ public class Zeichenleinwand extends Canvas {
this.setPreferredSize(this.getSize()); this.setPreferredSize(this.getSize());
this.setMinimumSize(this.getSize()); this.setMinimumSize(this.getSize());
synchronized( layers ) {
for( Layer layer : layers ) { for( Layer layer : layers ) {
layer.setSize(width, height); layer.setSize(width, height);
} }
} }
}
/** /**
* Fügt der Zeichenleinwand eine Ebene hinzu, die oberhalb aller bisherigen * Fügt der Zeichenleinwand eine Ebene hinzu, die oberhalb aller bisherigen
@@ -59,10 +63,12 @@ public class Zeichenleinwand extends Canvas {
*/ */
public void addLayer( Layer layer ) { public void addLayer( Layer layer ) {
if( layer != null ) { if( layer != null ) {
synchronized( layers ) {
layer.setSize(getWidth(), getHeight()); layer.setSize(getWidth(), getHeight());
layers.add(layer); layers.add(layer);
} }
} }
}
/** /**
* Fügt der Zeichenleinwand eine Ebene an einer bestimmten Stelle hinzu. * Fügt der Zeichenleinwand eine Ebene an einer bestimmten Stelle hinzu.
@@ -71,10 +77,12 @@ public class Zeichenleinwand extends Canvas {
*/ */
public void addLayer( int i, Layer layer ) { public void addLayer( int i, Layer layer ) {
if( layer != null ) { if( layer != null ) {
synchronized( layers ) {
layer.setSize(getWidth(), getHeight()); layer.setSize(getWidth(), getHeight());
layers.add(i, layer); layers.add(i, layer);
} }
} }
}
/** /**
* Gibt die Liste der bisher hinzugefügten Ebenen zurück. * Gibt die Liste der bisher hinzugefügten Ebenen zurück.
@@ -140,10 +148,12 @@ public class Zeichenleinwand extends Canvas {
} }
public void dispose() { public void dispose() {
synchronized( layers ) {
for( Layer layer : layers ) { for( Layer layer : layers ) {
layer.dispose(); layer.dispose();
} }
} }
}
@Override @Override
public void paint( Graphics g ) { public void paint( Graphics g ) {
@@ -163,9 +173,11 @@ public class Zeichenleinwand extends Canvas {
Graphics2D g2d = (Graphics2D) strategy.getDrawGraphics(); Graphics2D g2d = (Graphics2D) strategy.getDrawGraphics();
g2d.clearRect(0, 0, getWidth(), getHeight()); g2d.clearRect(0, 0, getWidth(), getHeight());
synchronized( layers ) {
for( Layer layer : layers ) { for( Layer layer : layers ) {
layer.draw(g2d); layer.draw(g2d);
} }
}
g2d.dispose(); g2d.dispose();
} while( strategy.contentsRestored() ); } while( strategy.contentsRestored() );