From f76b30d109c264b52a57e7cee2250a06f0910d28 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Sat, 2 Jan 2016 18:28:01 -0600 Subject: [PATCH] Fix exceptions in onStop when the connection is aborted due to lack of H.264 support --- app/src/main/java/com/limelight/Game.java | 58 ++++++++++++----------- 1 file changed, 31 insertions(+), 27 deletions(-) diff --git a/app/src/main/java/com/limelight/Game.java b/app/src/main/java/com/limelight/Game.java index 71ffbf30..91fa5a34 100644 --- a/app/src/main/java/com/limelight/Game.java +++ b/app/src/main/java/com/limelight/Game.java @@ -354,8 +354,10 @@ public class Game extends Activity implements SurfaceHolder.Callback, SpinnerDialog.closeDialogs(this); Dialog.closeDialogs(); - InputManager inputManager = (InputManager) getSystemService(Context.INPUT_SERVICE); - inputManager.unregisterInputDeviceListener(controllerHandler); + if (controllerHandler != null) { + InputManager inputManager = (InputManager) getSystemService(Context.INPUT_SERVICE); + inputManager.unregisterInputDeviceListener(controllerHandler); + } wifiLock.release(); @@ -364,36 +366,38 @@ public class Game extends Activity implements SurfaceHolder.Callback, unbindService(usbDriverServiceConnection); } - VideoDecoderRenderer.VideoFormat videoFormat = conn.getActiveVideoFormat(); + if (conn != null) { + VideoDecoderRenderer.VideoFormat videoFormat = conn.getActiveVideoFormat(); - displayedFailureDialog = true; - stopConnection(); + displayedFailureDialog = true; + stopConnection(); - int averageEndToEndLat = decoderRenderer.getAverageEndToEndLatency(); - int averageDecoderLat = decoderRenderer.getAverageDecoderLatency(); - String message = null; - if (averageEndToEndLat > 0) { - message = getResources().getString(R.string.conn_client_latency)+" "+averageEndToEndLat+" ms"; - if (averageDecoderLat > 0) { - message += " ("+getResources().getString(R.string.conn_client_latency_hw)+" "+averageDecoderLat+" ms)"; + int averageEndToEndLat = decoderRenderer.getAverageEndToEndLatency(); + int averageDecoderLat = decoderRenderer.getAverageDecoderLatency(); + String message = null; + if (averageEndToEndLat > 0) { + message = getResources().getString(R.string.conn_client_latency)+" "+averageEndToEndLat+" ms"; + if (averageDecoderLat > 0) { + message += " ("+getResources().getString(R.string.conn_client_latency_hw)+" "+averageDecoderLat+" ms)"; + } } - } - else if (averageDecoderLat > 0) { - message = getResources().getString(R.string.conn_hardware_latency)+" "+averageDecoderLat+" ms"; - } - - // Add the video codec to the post-stream toast - if (message != null && videoFormat != VideoDecoderRenderer.VideoFormat.Unknown) { - if (videoFormat == VideoDecoderRenderer.VideoFormat.H265) { - message += " [H.265]"; + else if (averageDecoderLat > 0) { + message = getResources().getString(R.string.conn_hardware_latency)+" "+averageDecoderLat+" ms"; } - else { - message += " [H.264]"; - } - } - if (message != null) { - Toast.makeText(this, message, Toast.LENGTH_LONG).show(); + // Add the video codec to the post-stream toast + if (message != null && videoFormat != VideoDecoderRenderer.VideoFormat.Unknown) { + if (videoFormat == VideoDecoderRenderer.VideoFormat.H265) { + message += " [H.265]"; + } + else { + message += " [H.264]"; + } + } + + if (message != null) { + Toast.makeText(this, message, Toast.LENGTH_LONG).show(); + } } finish();