WindowAdapter beendet die ZM nun direkt, und wartet nicht auf den Thread

Bisher hat ein Schließen des Fensters dazu geführt, dass `running = false` gestzt wurde und die Maschine den aktuellen Frame noch beenden konnte. Da ein Frame durch die Verwendung von `delay(int)` aber auch lange dauern kann, hatte man als Nutzer dann den Eindruck, dass der Klick nicht registriert wurde.
Nun beendet das Programm direkt, ruft aber trotzdem vorher `teardown()` und `cleanup()` auf.
This commit is contained in:
ngb
2022-07-14 18:02:30 +02:00
parent c0831688ba
commit e6882fcbf7

View File

@@ -291,6 +291,7 @@ public class Zeichenmaschine extends Constants {
// Das Icon des Fensters ändern // Das Icon des Fensters ändern
try { try {
// TODO: Add image sizes
ImageIcon icon = new ImageIcon(ImageIO.read(new File("res/icon_64.png"))); ImageIcon icon = new ImageIcon(ImageIO.read(new File("res/icon_64.png")));
if( MACOS ) { if( MACOS ) {
@@ -334,7 +335,10 @@ public class Zeichenmaschine extends Constants {
frame.addWindowListener(new WindowAdapter() { frame.addWindowListener(new WindowAdapter() {
@Override @Override
public void windowClosing( WindowEvent e ) { public void windowClosing( WindowEvent e ) {
exit(); //exit();
teardown();
cleanup();
quit(true);
} }
}); });
@@ -1033,7 +1037,7 @@ public class Zeichenmaschine extends Constants {
* @param delta * @param delta
*/ */
public void update( double delta ) { public void update( double delta ) {
//running = !run_once; running = !run_once;
stop_after_update = run_once; stop_after_update = run_once;
} }
@@ -1048,7 +1052,7 @@ public class Zeichenmaschine extends Constants {
* dar, da hier die Zeichnung des Programms erstellt wird. * dar, da hier die Zeichnung des Programms erstellt wird.
*/ */
public void draw() { public void draw() {
running = !stop_after_update; //running = !stop_after_update;
} }
/** /**