Wait for first frame in onStartPreview

pull/716/head
Mattia Iavarone 6 years ago
parent 4955875a15
commit db93cce7d7
  1. 4
      cameraview/src/androidTest/java/com/otaliastudios/cameraview/engine/Camera2IntegrationTest.java
  2. 15
      cameraview/src/main/java/com/otaliastudios/cameraview/engine/Camera2Engine.java

@ -36,7 +36,7 @@ public class Camera2IntegrationTest extends CameraIntegrationTest<Camera2Engine>
return Engine.CAMERA2; return Engine.CAMERA2;
} }
@Override /* @Override
protected void onOpenSync() { protected void onOpenSync() {
super.onOpenSync(); super.onOpenSync();
// Extra wait for the first frame to be dispatched. // Extra wait for the first frame to be dispatched.
@ -54,7 +54,7 @@ public class Camera2IntegrationTest extends CameraIntegrationTest<Camera2Engine>
} }
}.start(controller); }.start(controller);
try { latch.await(); } catch (InterruptedException ignore) {} try { latch.await(); } catch (InterruptedException ignore) {}
} } */
@Override @Override
protected long getMeteringTimeoutMillis() { protected long getMeteringTimeoutMillis() {

@ -628,7 +628,20 @@ public class Camera2Engine extends CameraBaseEngine implements
} }
}); });
} }
return Tasks.forResult(null);
// Wait for the first frame.
final TaskCompletionSource<Void> task = new TaskCompletionSource<>();
new BaseAction() {
@Override
public void onCaptureCompleted(@NonNull ActionHolder holder,
@NonNull CaptureRequest request,
@NonNull TotalCaptureResult result) {
super.onCaptureCompleted(holder, request, result);
setState(STATE_COMPLETED);
task.trySetResult(null);
}
}.start(this);
return task.getTask();
} }
//endregion //endregion

Loading…
Cancel
Save