processing / processing4-javafx

JavaFX library for Processing 4
14 stars 5 forks source link

Quitting an FX2D app (via ESC or cmd-Q) on macOS throws IllegalStateException #4

Open benfry opened 7 years ago

benfry commented 7 years ago

Using ESC to quit an app results in

java.lang.IllegalStateException: Not on FX application thread; currentThread = JavaFX Application Thread
    at com.sun.javafx.tk.Toolkit.checkFxUserThread(Toolkit.java:236)
    at com.sun.javafx.tk.quantum.QuantumToolkit.checkFxUserThread(QuantumToolkit.java:423)
    at javafx.stage.Window.setShowing(Window.java:921)
    at javafx.stage.Window.hide(Window.java:947)
    at com.sun.javafx.stage.WindowPeerListener.closed(WindowPeerListener.java:100)
    at com.sun.javafx.tk.quantum.GlassWindowEventHandler.run(GlassWindowEventHandler.java:119)
    at com.sun.javafx.tk.quantum.GlassWindowEventHandler.run(GlassWindowEventHandler.java:40)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.tk.quantum.GlassWindowEventHandler.lambda$handleWindowEvent$423(GlassWindowEventHandler.java:151)
    at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:389)
    at com.sun.javafx.tk.quantum.GlassWindowEventHandler.handleWindowEvent(GlassWindowEventHandler.java:149)
    at com.sun.glass.ui.Window.handleWindowEvent(Window.java:1266)
    at com.sun.glass.ui.Window.notifyDestroy(Window.java:1183)
christianbender commented 6 years ago

@benfry I tested it on linux (Linux Mint 18.2 ) and it works fine.

void setup() {
  size(200, 200, FX2D);
}

void draw() {
}

If I typed ESC the program terminates without error messages.

hkiel commented 6 years ago

The same happens here on macOS.

hkiel commented 6 years ago

I seem to have fixed that issue on macOS (#5574). Cannot check other architectures, though...

benfry commented 2 years ago

Still need help with a fix for this one… Stack trace from the beta 4 release:

java.lang.IllegalStateException: Not on FX application thread; currentThread = JavaFX Application Thread
    at javafx.graphics/com.sun.javafx.tk.Toolkit.checkFxUserThread(Toolkit.java:295)
    at javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit.checkFxUserThread(QuantumToolkit.java:458)
    at javafx.graphics/javafx.stage.Window.setShowing(Window.java:1189)
    at javafx.graphics/javafx.stage.Window.hide(Window.java:1215)
    at javafx.graphics/com.sun.javafx.stage.WindowPeerListener.closed(WindowPeerListener.java:105)
    at javafx.graphics/com.sun.javafx.tk.quantum.GlassWindowEventHandler.run(GlassWindowEventHandler.java:144)
    at javafx.graphics/com.sun.javafx.tk.quantum.GlassWindowEventHandler.run(GlassWindowEventHandler.java:40)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at javafx.graphics/com.sun.javafx.tk.quantum.GlassWindowEventHandler.lambda$handleWindowEvent$4(GlassWindowEventHandler.java:178)
    at javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:424)
    at javafx.graphics/com.sun.javafx.tk.quantum.GlassWindowEventHandler.handleWindowEvent(GlassWindowEventHandler.java:176)
    at javafx.graphics/com.sun.glass.ui.Window.handleWindowEvent(Window.java:1336)
    at javafx.graphics/com.sun.glass.ui.Window.notifyDestroy(Window.java:1250)
IllegalStateException: Not on FX application thread; currentThread = JavaFX Application Thread