From 6c0fb53d12447f6c14ce75d8eb9edcf08402c2d0 Mon Sep 17 00:00:00 2001 From: Mike Pope Date: Sun, 22 Sep 2013 21:49:21 +0930 Subject: [PATCH] Work around Java crash when stopping opening video. --- src/net/sf/freecol/client/gui/Canvas.java | 10 ++++++++- .../freecol/client/gui/video/VideoComponent.java | 24 ++++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/src/net/sf/freecol/client/gui/Canvas.java b/src/net/sf/freecol/client/gui/Canvas.java index d4116f0..9f429bd 100644 --- a/src/net/sf/freecol/client/gui/Canvas.java +++ b/src/net/sf/freecol/client/gui/Canvas.java @@ -931,7 +931,16 @@ public final class Canvas extends JDesktopPane { if (frame != null && frame != comp) { frame.dispose(); } else { - super.remove(comp); + // Java 1.7.0 as seen on Fedora with: + // Java version: 1.7.0_40 + // Java WM version: 24.0-b56 + // crashes here deep in the java libraries. + try { + super.remove(comp); + } catch (Exception e) { + logger.warning("Java crash"); + e.printStackTrace(); + } } repaint(updateBounds.x, updateBounds.y, updateBounds.width, updateBounds.height); } diff --git a/src/net/sf/freecol/client/gui/video/VideoComponent.java b/src/net/sf/freecol/client/gui/video/VideoComponent.java index 189f4a8..d368248 100644 --- a/src/net/sf/freecol/client/gui/video/VideoComponent.java +++ b/src/net/sf/freecol/client/gui/video/VideoComponent.java @@ -23,6 +23,8 @@ import java.awt.Insets; import java.awt.event.MouseListener; import java.util.LinkedList; import java.util.List; +import java.util.logging.Level; +import java.util.logging.Logger; import javax.swing.JPanel; import javax.swing.border.Border; @@ -38,6 +40,8 @@ import com.fluendo.player.Cortado; */ public class VideoComponent extends JPanel { + private static final Logger logger = Logger.getLogger(VideoComponent.class.getName()); + private final Cortado applet; private List videoListeners = new LinkedList(); @@ -136,4 +140,25 @@ public class VideoComponent extends JPanel { private Border createBorder() { return FreeColImageBorder.imageBorder; } + + // Override Component + + /** + * {@inheritDoc} + */ + public void removeNotify() { + applet.stop(); + applet.destroy(); + + // Java 1.7.0 as seen on Fedora with: + // Java version: 1.7.0_40 + // Java WM version: 24.0-b56 + // crashes here deep in the java libraries. + try { + super.removeNotify(); + } catch (Exception e) { + logger.warning("Mystery crash" + e); + e.printStackTrace(); + } + } } -- 1.8.4.2