From 214842d862d24c4ae77d28b7c8bb4122e676f722 Mon Sep 17 00:00:00 2001 From: Anthony Petrov Date: Tue, 12 Oct 2010 18:20:07 +0400 Subject: [PATCH] 6990352: SplashScreen.getSplashScreen() does not return null for implicitly closed splash screen Mark the splash screen closed when it happens implicitly Reviewed-by: art, dcherepanov --- jdk/src/share/classes/java/awt/SplashScreen.java | 6 ++++++ jdk/src/share/classes/java/awt/Window.java | 3 +++ 2 files changed, 9 insertions(+) diff --git a/jdk/src/share/classes/java/awt/SplashScreen.java b/jdk/src/share/classes/java/awt/SplashScreen.java index 64ec967d00f..e02a6172df7 100644 --- a/jdk/src/share/classes/java/awt/SplashScreen.java +++ b/jdk/src/share/classes/java/awt/SplashScreen.java @@ -318,6 +318,12 @@ public final class SplashScreen { checkVisible(); _close(splashPtr); image = null; + SplashScreen.markClosed(); + } + } + + static void markClosed() { + synchronized (SplashScreen.class) { wasClosed = true; theInstance = null; } diff --git a/jdk/src/share/classes/java/awt/Window.java b/jdk/src/share/classes/java/awt/Window.java index c603767dd74..7dce80e9564 100644 --- a/jdk/src/share/classes/java/awt/Window.java +++ b/jdk/src/share/classes/java/awt/Window.java @@ -928,7 +928,10 @@ public class Window extends Container implements Accessible { return; } if (beforeFirstWindowShown.getAndSet(false)) { + // We don't use SplashScreen.getSplashScreen() to avoid instantiating + // the object if it hasn't been requested by user code explicitly SunToolkit.closeSplashScreen(); + SplashScreen.markClosed(); } }