SurfaceView onSurfaceCreated is too early. Fix

pull/54/head
Mattia Iavarone 8 years ago
parent 2a421165bd
commit 00dcc76196
  1. 14
      cameraview/src/main/views/com/otaliastudios/cameraview/SurfaceViewPreview.java

@ -24,19 +24,29 @@ class SurfaceViewPreview extends Preview<SurfaceView, SurfaceHolder> {
final SurfaceHolder holder = surface.getHolder(); final SurfaceHolder holder = surface.getHolder();
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
holder.addCallback(new SurfaceHolder.Callback() { holder.addCallback(new SurfaceHolder.Callback() {
private boolean mFirstTime = true;
@Override @Override
public void surfaceCreated(SurfaceHolder holder) { public void surfaceCreated(SurfaceHolder holder) {
onSurfaceAvailable(getView().getWidth(), getView().getHeight()); // Looks like this is too early to call anything.
// onSurfaceAvailable(getView().getWidth(), getView().getHeight());
} }
@Override @Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
onSurfaceSizeChanged(width, height); if (mFirstTime) {
onSurfaceAvailable(width, height);
mFirstTime = false;
} else {
onSurfaceSizeChanged(width, height);
}
} }
@Override @Override
public void surfaceDestroyed(SurfaceHolder holder) { public void surfaceDestroyed(SurfaceHolder holder) {
onSurfaceDestroyed(); onSurfaceDestroyed();
mFirstTime = true;
} }
}); });
return surface; return surface;

Loading…
Cancel
Save