From f6e40118a98adbc307281548df8d0406c3b74d83 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Fri, 16 Jun 2017 19:50:50 -0700 Subject: [PATCH] Bring back the warning displayed if video decoder initialization fails --- app/src/main/java/com/limelight/Game.java | 10 ++++++++++ .../binding/video/MediaCodecDecoderRenderer.java | 5 ++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/limelight/Game.java b/app/src/main/java/com/limelight/Game.java index 905cca58..649ee680 100644 --- a/app/src/main/java/com/limelight/Game.java +++ b/app/src/main/java/com/limelight/Game.java @@ -944,6 +944,16 @@ public class Game extends Activity implements SurfaceHolder.Callback, displayedFailureDialog = true; LimeLog.severe(stage+" failed: "+errorCode); + // If video initialization failed and the surface is still valid, display extra information for the user + if (stage.contains("video") && streamView.getHolder().getSurface().isValid()) { + runOnUiThread(new Runnable() { + @Override + public void run() { + Toast.makeText(Game.this, "Video decoder failed to initialize. Your device may not support the selected resolution.", Toast.LENGTH_LONG).show(); + } + }); + } + Dialog.displayDialog(this, getResources().getString(R.string.conn_error_title), getResources().getString(R.string.conn_error_msg)+" "+stage, true); } diff --git a/app/src/main/java/com/limelight/binding/video/MediaCodecDecoderRenderer.java b/app/src/main/java/com/limelight/binding/video/MediaCodecDecoderRenderer.java index 7c02bd07..dc372743 100644 --- a/app/src/main/java/com/limelight/binding/video/MediaCodecDecoderRenderer.java +++ b/app/src/main/java/com/limelight/binding/video/MediaCodecDecoderRenderer.java @@ -440,12 +440,15 @@ public class MediaCodecDecoderRenderer extends VideoDecoderRenderer { startSpinnerThreads(); } + // !!! May be called even if setup()/start() fails !!! public void prepareForStop() { // Let the decoding code know to ignore codec exceptions now stopping = true; // Halt the rendering thread - rendererThread.interrupt(); + if (rendererThread != null) { + rendererThread.interrupt(); + } } @Override