diff options
Diffstat (limited to 'camera/CameraHal.cpp')
-rw-r--r-- | camera/CameraHal.cpp | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/camera/CameraHal.cpp b/camera/CameraHal.cpp index e56bdf1..12a41a1 100644 --- a/camera/CameraHal.cpp +++ b/camera/CameraHal.cpp @@ -3214,6 +3214,12 @@ status_t CameraHal::stopImageBracketing() */ status_t CameraHal::takePicture(const char *params) { + // cancel AF state if needed (before any operation and mutex lock) + if ((mCameraAdapter->getState() == CameraAdapter::AF_STATE) || + (mCameraAdapter->getState() == CameraAdapter::VIDEO_AF_STATE)) { + cancelAutoFocus(); + } + android::AutoMutex lock(mLock); return __takePicture(params); } @@ -3228,11 +3234,6 @@ status_t CameraHal::takePicture(const char *params) */ status_t CameraHal::__takePicture(const char *params, struct timeval *captureStart) { - // cancel AF state if needed (before any operation and mutex lock) - if (mCameraAdapter->getState() == CameraAdapter::AF_STATE) { - cancelAutoFocus(); - } - status_t ret = NO_ERROR; CameraFrame frame; CameraAdapter::BuffersDescriptor desc; @@ -3424,7 +3425,8 @@ status_t CameraHal::__takePicture(const char *params, struct timeval *captureSta // pause preview during normal image capture // do not pause preview if recording (video state) if ( (NO_ERROR == ret) && (NULL != mDisplayAdapter.get()) ) { - if (mCameraAdapter->getState() != CameraAdapter::VIDEO_STATE) { + if ((mCameraAdapter->getState() != CameraAdapter::VIDEO_STATE) && + (mCameraAdapter->getState() != CameraAdapter::VIDEO_AF_STATE)) { mDisplayPaused = true; mPreviewEnabled = false; ret = mDisplayAdapter->pauseDisplay(mDisplayPaused); @@ -3440,7 +3442,8 @@ status_t CameraHal::__takePicture(const char *params, struct timeval *captureSta } // if we taking video snapshot... - if ((NO_ERROR == ret) && (mCameraAdapter->getState() == CameraAdapter::VIDEO_STATE)) { + if ((NO_ERROR == ret) && ((mCameraAdapter->getState() == CameraAdapter::VIDEO_STATE) || + (mCameraAdapter->getState() == CameraAdapter::VIDEO_AF_STATE))) { // enable post view frames if not already enabled so we can internally // save snapshot frames for generating thumbnail if((mMsgEnabled & CAMERA_MSG_POSTVIEW_FRAME) == 0) { @@ -3773,6 +3776,12 @@ status_t CameraHal::reprocess(const char *params) goto exit; } + // 4.5. cancel AF state if needed (before any operation and mutex lock) + if ((mCameraAdapter->getState() == CameraAdapter::AF_STATE) || + (mCameraAdapter->getState() == CameraAdapter::VIDEO_AF_STATE)) { + cancelAutoFocus(); + } + // 5. Start capturing ret = __takePicture(shotParams.flatten().string(), &startReprocess); |