/hg/icedtea-web: Close the splashscreen in case of error (not ju...

dlila at icedtea.classpath.org dlila at icedtea.classpath.org
Fri Jun 10 10:16:28 PDT 2011


changeset 0398f63d1b21 in /hg/icedtea-web
details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=0398f63d1b21
author: Denis Lila <dlila at redhat.com>
date: Fri Jun 10 13:15:00 2011 -0400

	Close the splashscreen in case of error (not just successful
	launch).


diffstat:

 ChangeLog                                       |  11 ++++++++
 netx/net/sourceforge/jnlp/GuiLaunchHandler.java |  31 ++++++++++++++++--------
 2 files changed, 32 insertions(+), 10 deletions(-)

diffs (90 lines):

diff -r 6b46e55a8854 -r 0398f63d1b21 ChangeLog
--- a/ChangeLog	Fri Jun 10 13:13:02 2011 -0400
+++ b/ChangeLog	Fri Jun 10 13:15:00 2011 -0400
@@ -1,3 +1,14 @@
+2011-06-10  Denis Lila  <dlila at redhat.com>
+
+	* netx/net/sourceforge/jnlp/GuiLaunchHandler.java:
+	(mutex): New mutex for synchronizing splashScreen.
+	(closeSplashScreen): New method to hide and dispose
+	splashScreen.
+	(launchStarting): Call closeSplashScreen instead of doing it
+	inline.
+	(launchInitialized): Sync splashScreen creation.
+	(validationError, launchError): Call closeSplashScreen.
+
 2011-06-10  Denis Lila  <dlila at redhat.com>
 
 	* netx/net/sourceforge/jnlp/cache/DefaultDownloadIndicator.java:
diff -r 6b46e55a8854 -r 0398f63d1b21 netx/net/sourceforge/jnlp/GuiLaunchHandler.java
--- a/netx/net/sourceforge/jnlp/GuiLaunchHandler.java	Fri Jun 10 13:13:02 2011 -0400
+++ b/netx/net/sourceforge/jnlp/GuiLaunchHandler.java	Fri Jun 10 13:15:00 2011 -0400
@@ -53,6 +53,7 @@
 public class GuiLaunchHandler implements LaunchHandler {
 
     private JNLPSplashScreen splashScreen = null;
+    private final Object mutex = new Object();
     private UpdatePolicy policy = UpdatePolicy.ALWAYS;
 
     @Override
@@ -65,22 +66,29 @@
         SwingUtilities.invokeLater(new Runnable() {
             @Override
             public void run() {
+                closeSplashScreen();
                 BasicExceptionDialog.show(exception);
             }
         });
     }
 
+    private void closeSplashScreen() {
+        synchronized(mutex) {
+            if (splashScreen != null) {
+                if (splashScreen.isSplashScreenValid()) {
+                    splashScreen.setVisible(false);
+                }
+                splashScreen.dispose();
+            }
+        }
+    }
+
     @Override
     public void launchStarting(ApplicationInstance application) {
         SwingUtilities.invokeLater(new Runnable() {
             @Override
             public void run() {
-                if (splashScreen != null) {
-                    if (splashScreen.isSplashScreenValid()) {
-                        splashScreen.setVisible(false);
-                    }
-                    splashScreen.dispose();
-                }
+                closeSplashScreen();
             }
         });
     }
@@ -98,10 +106,12 @@
                 if (splashImageURL != null) {
                     ResourceTracker resourceTracker = new ResourceTracker(true);
                     resourceTracker.addResource(splashImageURL, file.getFileVersion(), null, policy);
-                    splashScreen = new JNLPSplashScreen(resourceTracker, null, null);
-                    splashScreen.setSplashImageURL(splashImageURL);
-                    if (splashScreen.isSplashScreenValid()) {
-                        splashScreen.setVisible(true);
+                    synchronized(mutex) {
+                        splashScreen = new JNLPSplashScreen(resourceTracker, null, null);
+                        splashScreen.setSplashImageURL(splashImageURL);
+                        if (splashScreen.isSplashScreenValid()) {
+                            splashScreen.setVisible(true);
+                        }
                     }
                 }
             }
@@ -116,6 +126,7 @@
 
     @Override
     public boolean validationError(LaunchException security) {
+        closeSplashScreen();
         DefaultLaunchHandler.printMessage(security);
         return true;
     }



More information about the distro-pkg-dev mailing list