summaryrefslogtreecommitdiffstats
path: root/camera/CameraHal.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'camera/CameraHal.cpp')
-rw-r--r--camera/CameraHal.cpp23
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);