From 9d24f8be14ac5e01791e2f44144769e7585439ce Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Thu, 26 Dec 2013 16:11:42 -0500 Subject: [PATCH] Don't print stack traces for InterruptExceptions. Call the NvConnectionListener class to terminate the stream without causing the unexpected termination error dialog. --- src/com/limelight/Limelight.java | 17 ++++++++++++----- src/com/limelight/gui/StreamFrame.java | 9 +++++---- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/com/limelight/Limelight.java b/src/com/limelight/Limelight.java index 611e678..069d6d9 100644 --- a/src/com/limelight/Limelight.java +++ b/src/com/limelight/Limelight.java @@ -27,7 +27,7 @@ public class Limelight implements NvConnectionListener { private String host; private StreamFrame streamFrame; private NvConnection conn; - private boolean connectionFailed; + private boolean connectionTerminating; private static JFrame limeFrame; public Limelight(String host) { @@ -88,7 +88,7 @@ public class Limelight implements NvConnectionListener { StreamConfiguration streamConfig = createConfiguration(prefs.getResolution()); conn = new NvConnection(host, this, streamConfig); - streamFrame.build(conn, streamConfig, prefs.getFullscreen()); + streamFrame.build(this, conn, streamConfig, prefs.getFullscreen()); conn.start(PlatformBinding.getDeviceName(), streamFrame, VideoDecoderRenderer.FLAG_PREFER_QUALITY, PlatformBinding.getAudioRenderer(), @@ -157,6 +157,11 @@ public class Limelight implements NvConnectionListener { createFrame(); } + + public void stop() { + connectionTerminating = true; + conn.stop(); + } @Override public void stageStarting(Stage stage) { @@ -183,9 +188,11 @@ public class Limelight implements NvConnectionListener { @Override public void connectionTerminated(Exception e) { - e.printStackTrace(); - if (!connectionFailed) { - connectionFailed = true; + if (!(e instanceof InterruptedException)) { + e.printStackTrace(); + } + if (!connectionTerminating) { + connectionTerminating = true; // Kill the connection to the target conn.stop(); diff --git a/src/com/limelight/gui/StreamFrame.java b/src/com/limelight/gui/StreamFrame.java index 257148e..3f71b67 100644 --- a/src/com/limelight/gui/StreamFrame.java +++ b/src/com/limelight/gui/StreamFrame.java @@ -24,6 +24,7 @@ import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JProgressBar; +import com.limelight.Limelight; import com.limelight.input.KeyboardHandler; import com.limelight.input.MouseHandler; import com.limelight.nvstream.NvConnection; @@ -41,7 +42,7 @@ public class StreamFrame extends JFrame { private JProgressBar spinner; private JLabel spinnerLabel; private Cursor noCursor; - private NvConnection conn; + private Limelight limelight; public void freeMouse() { mouse.free(); @@ -53,8 +54,8 @@ public class StreamFrame extends JFrame { hideCursor(); } - public void build(NvConnection conn, StreamConfiguration streamConfig, boolean fullscreen) { - this.conn = conn; + public void build(Limelight limelight, NvConnection conn, StreamConfiguration streamConfig, boolean fullscreen) { + this.limelight = limelight; keyboard = new KeyboardHandler(conn, this); mouse = new MouseHandler(conn, this); @@ -224,7 +225,7 @@ public class StreamFrame extends JFrame { } public void close() { + limelight.stop(); dispose(); - conn.stop(); } }