< prev index next >
modules/javafx.graphics/src/main/java/com/sun/javafx/application/PlatformImpl.java
Print this page
*** 89,98 ****
--- 89,99 ----
private static Boolean hasMultiTouch;
private static Boolean hasPointer;
private static boolean isThreadMerged = false;
private static String applicationType = "";
private static BooleanProperty accessibilityActive = new SimpleBooleanProperty();
+ private static CountDownLatch allNestedLoopsExited = new CountDownLatch(1);
private static final boolean verbose
= AccessController.doPrivileged((PrivilegedAction<Boolean>) () ->
Boolean.getBoolean("javafx.verbose"));
*** 255,264 ****
--- 256,267 ----
checkIdle();
}
@Override
public void exitedLastNestedLoop() {
+ if (isImplicitExit())
+ allNestedLoopsExited.countDown();
checkIdle();
}
};
Toolkit.getToolkit().addTkListener(toolkitListener);
*** 561,570 ****
--- 564,588 ----
static CountDownLatch test_getPlatformExitLatch() {
return platformExitLatch;
}
public static void tkExit() {
+
+ PlatformImpl.runAndWait(() -> {
+ if (Toolkit.getToolkit().isNestedLoopRunning()) {
+ Toolkit.getToolkit().exitAllNestedEventLoops();
+ } else {
+ allNestedLoopsExited.countDown();
+ }
+ });
+
+ try {
+ allNestedLoopsExited.await();
+ } catch (InterruptedException e) {
+ throw new RuntimeException("Could not exit all nested event loops");
+ }
+
if (toolkitExit.getAndSet(true)) {
return;
}
if (initialized.get()) {
< prev index next >