aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--NEWS1
-rw-r--r--netx/net/sourceforge/jnlp/NetxPanel.java8
3 files changed, 14 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index a900486..35f8cd7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2013-01-28 Adam Domurad <[email protected]>
+
+ Fix PR1157: Applets can hang browser after fatal exception
+ * NEWS: Add entry for PR1157
+ * netx/net/sourceforge/jnlp/NetxPanel.java
+ (runLoader): Move dispatchAppletEvent into a 'finally' block.
+
2013-01-16 Deepak Bhole <[email protected]>
PR1260: IcedTea-Web should not rely on GTK
diff --git a/NEWS b/NEWS
index a2855d5..518d25c 100644
--- a/NEWS
+++ b/NEWS
@@ -26,6 +26,7 @@ New in release 1.4 (2012-XX-XX):
- PR1189: Icedtea-plugin requires code attribute when using jnlp_href
- PR1198: JSObject is not passed to javascript correctly
- PR1260: IcedTea-Web should not rely on GTK
+ - PR1157: Applets can hang browser after fatal exception
* Common
- PR1049: Extension jnlp's signed jar with the content of only META-INF/* is considered
- PR955: regression: SweetHome3D fails to run
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);
}
}