update/draw nun in eigenem Thread

update/draw wird nun einmal pro Frame als separater Thread ausgeführt. Falls dabei delay oder eine andere wartende Methode aufgerufen wird, läuft die ZM aber weiter, bis der update/draw Thread wieder aufwacht. Dadurch werden Animationen und andere parallele Prozesse nicht auch geblockt.
This commit is contained in:
ngb
2022-07-17 08:53:43 +02:00
parent 7031aa40cc
commit 4fd4aa9a94
4 changed files with 244 additions and 45 deletions

View File

@@ -174,17 +174,31 @@ public class Zeichenleinwand extends Canvas {
}
public boolean removeLayer( Layer pLayer ) {
return layers.remove(pLayer);
synchronized( layers ) {
return layers.remove(pLayer);
}
}
public void removeLayers( Layer... pLayers ) {
for( Layer layer : pLayers ) {
layers.remove(layer);
synchronized( layers ) {
for( Layer layer : pLayers ) {
layers.remove(layer);
}
}
}
public void clearLayers() {
layers.clear();
synchronized( layers ) {
layers.clear();
}
}
public void updateLayers( double delta ) {
synchronized( layers ) {
for( Layer layer : layers ) {
layer.update(delta);
}
}
}
/**