< prev index next >

modules/javafx.swing/src/main/java/javafx/embed/swing/JFXPanel.java

Print this page

        

@@ -295,19 +295,19 @@
      */
     public void setScene(final Scene newScene) {
         if (Toolkit.getToolkit().isFxUserThread()) {
             setSceneImpl(newScene);
         } else {
-            final CountDownLatch initLatch = new CountDownLatch(1);
+            EventQueue eventQueue = AccessController.doPrivileged(
+                    (PrivilegedAction<EventQueue>) java.awt.Toolkit
+                            .getDefaultToolkit()::getSystemEventQueue);
+            SecondaryLoop secondaryLoop = eventQueue.createSecondaryLoop();
+            if (secondaryLoop.enter()) {
             Platform.runLater(() -> {
                 setSceneImpl(newScene);
-                initLatch.countDown();
             });
-            try {
-                initLatch.await();
-            } catch (InterruptedException z) {
-                z.printStackTrace(System.err);
+                secondaryLoop.exit();
             }
         }
     }
 
     /*
< prev index next >