From 924f9299d39b9bd985c58fde4ea2968b8ebdb229 Mon Sep 17 00:00:00 2001
From: Adam Domurad <adomurad@redhat.com>
Date: Mon, 28 Jan 2013 11:38:34 -0500
Subject: Fix PR1157: Applets can hang browser after fatal exception

---
 netx/net/sourceforge/jnlp/NetxPanel.java | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

(limited to 'netx/net/sourceforge/jnlp/NetxPanel.java')

diff --git a/netx/net/sourceforge/jnlp/NetxPanel.java b/netx/net/sourceforge/jnlp/NetxPanel.java
index 1afa416..dfa7262 100644
--- a/netx/net/sourceforge/jnlp/NetxPanel.java
+++ b/netx/net/sourceforge/jnlp/NetxPanel.java
@@ -139,8 +139,6 @@ public class NetxPanel extends AppletViewerPanel implements SplashController {
             // won't make it to the applet, whereas using sun.applet.AppletClassLoader
             // works just fine.
 
-            dispatchAppletEvent(APPLET_LOADING_COMPLETED, null);
-
             if (applet != null) {
                 // Stick it in the frame
                 applet.setStub(this);
@@ -153,6 +151,12 @@ public class NetxPanel extends AppletViewerPanel implements SplashController {
             this.appletAlive = false;
             e.printStackTrace();
             replaceSplash(SplashUtils.getErrorSplashScreen(getWidth(), getHeight(), e));
+        } finally {
+            // PR1157: This needs to occur even in the case of an exception
+            // so that the applet's event listeners are signaled.
+            // Once PluginAppletViewer.AppletEventListener is signaled PluginAppletViewer it can properly stop waiting
+            // in PluginAppletViewer.waitForAppletInit
+            dispatchAppletEvent(APPLET_LOADING_COMPLETED, null);
         }
     }
 
-- 
cgit v1.2.3