Fix crash on devices that re-create the surface when we set the format

This commit is contained in:
Cameron Gutman 2014-04-14 12:46:59 -04:00
parent 9703cf4ffe
commit 93a7d9f181

View File

@ -52,6 +52,8 @@ public class Game extends Activity implements SurfaceHolder.Callback, OnGenericM
private NvConnection conn; private NvConnection conn;
private SpinnerDialog spinner; private SpinnerDialog spinner;
private boolean displayedFailureDialog = false; private boolean displayedFailureDialog = false;
private boolean connecting = false;
private boolean connected = false;
private int drFlags = 0; private int drFlags = 0;
@ -422,6 +424,7 @@ public class Game extends Activity implements SurfaceHolder.Callback, OnGenericM
displayedFailureDialog = true; displayedFailureDialog = true;
Dialog.displayDialog(this, "Connection Error", "Starting "+stage.getName()+" failed", true); Dialog.displayDialog(this, "Connection Error", "Starting "+stage.getName()+" failed", true);
conn.stop(); conn.stop();
connecting = false;
} }
} }
@ -432,6 +435,7 @@ public class Game extends Activity implements SurfaceHolder.Callback, OnGenericM
e.printStackTrace(); e.printStackTrace();
Dialog.displayDialog(this, "Connection Terminated", "The connection failed unexpectedly", true); Dialog.displayDialog(this, "Connection Terminated", "The connection failed unexpectedly", true);
conn.stop(); conn.stop();
connected = false;
} }
} }
@ -440,6 +444,9 @@ public class Game extends Activity implements SurfaceHolder.Callback, OnGenericM
spinner.dismiss(); spinner.dismiss();
spinner = null; spinner = null;
connecting = false;
connected = true;
hideSystemUi(); hideSystemUi();
} }
@ -469,12 +476,18 @@ public class Game extends Activity implements SurfaceHolder.Callback, OnGenericM
@Override @Override
public void surfaceCreated(SurfaceHolder holder) { public void surfaceCreated(SurfaceHolder holder) {
if (!connected && !connecting) {
connecting = true;
conn.start(PlatformBinding.getDeviceName(), holder, drFlags, conn.start(PlatformBinding.getDeviceName(), holder, drFlags,
PlatformBinding.getAudioRenderer(), new ConfigurableDecoderRenderer()); PlatformBinding.getAudioRenderer(), new ConfigurableDecoderRenderer());
} }
}
@Override @Override
public void surfaceDestroyed(SurfaceHolder holder) { public void surfaceDestroyed(SurfaceHolder holder) {
if (connected) {
conn.stop(); conn.stop();
connected = false;
}
} }
} }