From 93a7d9f181c45ea2eebc4b6930da73dc0595f861 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Mon, 14 Apr 2014 12:46:59 -0400 Subject: [PATCH] Fix crash on devices that re-create the surface when we set the format --- src/com/limelight/Game.java | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/com/limelight/Game.java b/src/com/limelight/Game.java index 70d41417..b151e810 100644 --- a/src/com/limelight/Game.java +++ b/src/com/limelight/Game.java @@ -52,6 +52,8 @@ public class Game extends Activity implements SurfaceHolder.Callback, OnGenericM private NvConnection conn; private SpinnerDialog spinner; private boolean displayedFailureDialog = false; + private boolean connecting = false; + private boolean connected = false; private int drFlags = 0; @@ -422,6 +424,7 @@ public class Game extends Activity implements SurfaceHolder.Callback, OnGenericM displayedFailureDialog = true; Dialog.displayDialog(this, "Connection Error", "Starting "+stage.getName()+" failed", true); conn.stop(); + connecting = false; } } @@ -432,6 +435,7 @@ public class Game extends Activity implements SurfaceHolder.Callback, OnGenericM e.printStackTrace(); Dialog.displayDialog(this, "Connection Terminated", "The connection failed unexpectedly", true); conn.stop(); + connected = false; } } @@ -440,6 +444,9 @@ public class Game extends Activity implements SurfaceHolder.Callback, OnGenericM spinner.dismiss(); spinner = null; + connecting = false; + connected = true; + hideSystemUi(); } @@ -469,12 +476,18 @@ public class Game extends Activity implements SurfaceHolder.Callback, OnGenericM @Override public void surfaceCreated(SurfaceHolder holder) { - conn.start(PlatformBinding.getDeviceName(), holder, drFlags, - PlatformBinding.getAudioRenderer(), new ConfigurableDecoderRenderer()); + if (!connected && !connecting) { + connecting = true; + conn.start(PlatformBinding.getDeviceName(), holder, drFlags, + PlatformBinding.getAudioRenderer(), new ConfigurableDecoderRenderer()); + } } @Override public void surfaceDestroyed(SurfaceHolder holder) { - conn.stop(); + if (connected) { + conn.stop(); + connected = false; + } } }