Start connection in onSurfaceChanged() just in case we render our first frame prior to surface configuration

This commit is contained in:
Cameron Gutman 2018-03-20 18:37:31 -07:00
parent 0b15fd582d
commit 81d84600d4

View File

@ -96,6 +96,8 @@ public class Game extends Activity implements SurfaceHolder.Callback,
private boolean displayedFailureDialog = false; private boolean displayedFailureDialog = false;
private boolean connecting = false; private boolean connecting = false;
private boolean connected = false; private boolean connected = false;
private boolean surfaceCreated = false;
private boolean attemptedConnection = false;
private InputCaptureProvider inputCaptureProvider; private InputCaptureProvider inputCaptureProvider;
private int modifierFlags = 0; private int modifierFlags = 0;
@ -1200,8 +1202,8 @@ public class Game extends Activity implements SurfaceHolder.Callback,
spinner = null; spinner = null;
} }
connecting = false;
connected = true; connected = true;
connecting = false;
runOnUiThread(new Runnable() { runOnUiThread(new Runnable() {
@Override @Override
@ -1240,20 +1242,30 @@ public class Game extends Activity implements SurfaceHolder.Callback,
@Override @Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
if (!surfaceCreated) {
throw new IllegalStateException("Surface changed before creation!");
} }
@Override if (!attemptedConnection) {
public void surfaceCreated(SurfaceHolder holder) { attemptedConnection = true;
if (!connected && !connecting) {
connecting = true;
decoderRenderer.setRenderTarget(holder); decoderRenderer.setRenderTarget(holder);
conn.start(PlatformBinding.getAudioRenderer(), decoderRenderer, Game.this); conn.start(PlatformBinding.getAudioRenderer(), decoderRenderer, Game.this);
} }
} }
@Override
public void surfaceCreated(SurfaceHolder holder) {
surfaceCreated = true;
}
@Override @Override
public void surfaceDestroyed(SurfaceHolder holder) { public void surfaceDestroyed(SurfaceHolder holder) {
if (!surfaceCreated) {
throw new IllegalStateException("Surface destroyed before creation!");
}
if (attemptedConnection) {
// Let the decoder know immediately that the surface is gone // Let the decoder know immediately that the surface is gone
decoderRenderer.prepareForStop(); decoderRenderer.prepareForStop();
@ -1261,6 +1273,7 @@ public class Game extends Activity implements SurfaceHolder.Callback,
stopConnection(); stopConnection();
} }
} }
}
@Override @Override
public void mouseMove(int deltaX, int deltaY) { public void mouseMove(int deltaX, int deltaY) {