From 57498ca0daa40216866bf30e65098f0ae4d14fb7 Mon Sep 17 00:00:00 2001 From: Jeff Johnson Date: Wed, 24 Jun 2020 15:54:32 -0600 Subject: [PATCH] Wrap frame processing restart in conditional --- .../picture/Full1PictureRecorder.java | 27 ++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/picture/Full1PictureRecorder.java b/cameraview/src/main/java/com/otaliastudios/cameraview/picture/Full1PictureRecorder.java index 06af0bd6..c5a17077 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/picture/Full1PictureRecorder.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/picture/Full1PictureRecorder.java @@ -8,6 +8,7 @@ import androidx.exifinterface.media.ExifInterface; import com.otaliastudios.cameraview.PictureResult; import com.otaliastudios.cameraview.engine.Camera1Engine; import com.otaliastudios.cameraview.engine.offset.Reference; +import com.otaliastudios.cameraview.engine.orchestrator.CameraState; import com.otaliastudios.cameraview.internal.ExifHelper; import com.otaliastudios.cameraview.size.Size; @@ -71,19 +72,21 @@ public class Full1PictureRecorder extends FullPictureRecorder { mResult.rotation = exifRotation; LOG.i("take(): starting preview again. ", Thread.currentThread()); - camera.setPreviewCallbackWithBuffer(mEngine); - Size previewStreamSize = mEngine.getPreviewStreamSize(Reference.SENSOR); - if (previewStreamSize == null) { - throw new IllegalStateException("Preview stream size " + - "should never be null here."); + if (mEngine.getState().isAtLeast(CameraState.PREVIEW)) { + camera.setPreviewCallbackWithBuffer(mEngine); + Size previewStreamSize = mEngine.getPreviewStreamSize(Reference.SENSOR); + if (previewStreamSize == null) { + throw new IllegalStateException("Preview stream size " + + "should never be null here."); + } + // Need to re-setup the frame manager, otherwise no frames are processed + // after takePicture() is called + mEngine.getFrameManager().setUp( + mEngine.getFrameProcessingFormat(), + previewStreamSize, + mEngine.getAngles() + ); } - // Need to re-setup the frame manager, otherwise no frames are processed - // after takePicture() is called - mEngine.getFrameManager().setUp( - mEngine.getFrameProcessingFormat(), - previewStreamSize, - mEngine.getAngles() - ); camera.startPreview(); // This is needed, read somewhere in the docs. dispatchResult();