< prev index next >

modules/graphics/src/main/java/com/sun/javafx/application/PlatformImpl.java

Print this page
rev 9394 : imported patch 8090585-platform-startup

*** 131,157 **** } /** * This method is invoked typically on the main thread. At this point, * the JavaFX Application Thread has not been started. Any attempt ! * to call startup twice results in an exception. * @param r */ public static void startup(final Runnable r) { // NOTE: if we ever support re-launching an application and/or // launching a second application in the same VM/classloader // this will need to be changed. if (platformExit.get()) { throw new IllegalStateException("Platform.exit has been called"); } if (initialized.getAndSet(true)) { // If we've already initialized, just put the runnable on the queue. runLater(r); return; } AccessController.doPrivileged((PrivilegedAction<Void>) () -> { contextual2DNavigation = Boolean.getBoolean( "com.sun.javafx.isContextual2DNavigation"); String s = System.getProperty("com.sun.javafx.twoLevelFocus"); if (s != null) { --- 131,177 ---- } /** * This method is invoked typically on the main thread. At this point, * the JavaFX Application Thread has not been started. Any attempt ! * to call startup more than once results in all subsequent calls turning into ! * nothing more than a runLater call with the provided Runnable being called. * @param r */ public static void startup(final Runnable r) { + startup(r, false); + } + + /** + * This method is invoked typically on the main thread. At this point, + * the JavaFX Application Thread has not been started. If preventDuplicateCalls + * is true, calling this method multiple times will result in an + * IllegalStateException. If it is false, calling this method multiple times + * will result in all subsequent calls turning into + * nothing more than a runLater call with the provided Runnable being called. + * @param r + * @param preventDuplicateCalls + */ + public static void startup(final Runnable r, boolean preventDuplicateCalls) { // NOTE: if we ever support re-launching an application and/or // launching a second application in the same VM/classloader // this will need to be changed. if (platformExit.get()) { throw new IllegalStateException("Platform.exit has been called"); } if (initialized.getAndSet(true)) { + if (preventDuplicateCalls) { + throw new IllegalStateException("Toolkit already initialized"); + } + // If we've already initialized, just put the runnable on the queue. runLater(r); return; } + AccessController.doPrivileged((PrivilegedAction<Void>) () -> { contextual2DNavigation = Boolean.getBoolean( "com.sun.javafx.isContextual2DNavigation"); String s = System.getProperty("com.sun.javafx.twoLevelFocus"); if (s != null) {
< prev index next >