Try fix bug

pull/22/head
Mattia Iavarone 8 years ago
parent 75f0789f1a
commit 858264bab3
  1. 4
      cameraview/src/androidTest/java/com/otaliastudios/cameraview/MockPreview.java
  2. 6
      cameraview/src/androidTest/java/com/otaliastudios/cameraview/PreviewTest.java
  3. 10
      cameraview/src/main/views/com/otaliastudios/cameraview/Preview.java
  4. 5
      cameraview/src/main/views/com/otaliastudios/cameraview/SurfaceViewPreview.java
  5. 5
      cameraview/src/main/views/com/otaliastudios/cameraview/TextureViewPreview.java

@ -34,8 +34,4 @@ public class MockPreview extends Preview<View, Void> {
return null; return null;
} }
@Override
boolean isReady() {
return true;
}
} }

@ -34,12 +34,9 @@ public abstract class PreviewTest extends BaseTest {
@Override @Override
public void run() { public void run() {
TestActivity a = rule.getActivity(); TestActivity a = rule.getActivity();
preview = createPreview(a, a.getContentView());
surfaceSize = a.getContentSize(); surfaceSize = a.getContentSize();
callback = mock(Preview.SurfaceCallback.class); callback = mock(Preview.SurfaceCallback.class);
preview.setSurfaceCallback(callback);
surfaceAvailability = new Task<>(); surfaceAvailability = new Task<>();
surfaceAvailability.listen(); surfaceAvailability.listen();
surfaceAvailability.start(); surfaceAvailability.start();
@ -50,6 +47,9 @@ public abstract class PreviewTest extends BaseTest {
return null; return null;
} }
}).when(callback).onSurfaceAvailable(); }).when(callback).onSurfaceAvailable();
preview = createPreview(a, a.getContentView());
preview.setSurfaceCallback(callback);
} }
}); });
} }

@ -50,8 +50,6 @@ abstract class Preview<T extends View, Output> {
abstract Output getOutput(); abstract Output getOutput();
abstract boolean isReady();
// As far as I can see, these are the actual preview dimensions, as set in CameraParameters. // As far as I can see, these are the actual preview dimensions, as set in CameraParameters.
// This is called by the CameraImpl. // This is called by the CameraImpl.
// These must be alredy rotated, if needed, to be consistent with surface/view sizes. // These must be alredy rotated, if needed, to be consistent with surface/view sizes.
@ -72,6 +70,10 @@ abstract class Preview<T extends View, Output> {
final void setSurfaceCallback(SurfaceCallback callback) { final void setSurfaceCallback(SurfaceCallback callback) {
mSurfaceCallback = callback; mSurfaceCallback = callback;
// If surface already available, dispatch.
if (mSurfaceWidth != 0 || mSurfaceHeight != 0) {
mSurfaceCallback.onSurfaceAvailable();
}
} }
@ -96,12 +98,14 @@ abstract class Preview<T extends View, Output> {
} }
} }
protected final void onSurfaceDestroyed() { protected final void onSurfaceDestroyed() {
mSurfaceWidth = 0; mSurfaceWidth = 0;
mSurfaceHeight = 0; mSurfaceHeight = 0;
} }
final boolean isReady() {
return mSurfaceWidth > 0 && mSurfaceHeight > 0;
}
/** /**
* Here we must crop the visible part by applying a > 1 scale to one of our * Here we must crop the visible part by applying a > 1 scale to one of our

@ -57,9 +57,4 @@ class SurfaceViewPreview extends Preview<SurfaceView, SurfaceHolder> {
return SurfaceHolder.class; return SurfaceHolder.class;
} }
@Override
boolean isReady() {
return getView().getWidth() != 0 && getView().getHeight() != 0;
}
} }

@ -60,11 +60,6 @@ class TextureViewPreview extends Preview<TextureView, SurfaceTexture> {
return SurfaceTexture.class; return SurfaceTexture.class;
} }
@Override
boolean isReady() {
return getOutput() != null;
}
@Override @Override
SurfaceTexture getOutput() { SurfaceTexture getOutput() {
return getView().getSurfaceTexture(); return getView().getSurfaceTexture();

Loading…
Cancel
Save