From ac0cd56627b121081308213d5a327cfbae410f4d Mon Sep 17 00:00:00 2001 From: Eino-Ville Talvala Date: Tue, 16 Oct 2012 12:58:21 -0700 Subject: Camera2: Improve quirks focusing behavior. - When scene mode is set and the AF quirk is in use, don't change AF mode and then cancel when AF cancel is received. Just change mode since that also implies a cancel. - Only trigger quirks switch when a focusing area is set. Bug: 7318812 Change-Id: I28d8755553bd78052e774701210cb94d84ee2046 --- services/camera/libcameraservice/Camera2Client.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'services/camera/libcameraservice/Camera2Client.cpp') diff --git a/services/camera/libcameraservice/Camera2Client.cpp b/services/camera/libcameraservice/Camera2Client.cpp index c5ea3ed..98332f9 100644 --- a/services/camera/libcameraservice/Camera2Client.cpp +++ b/services/camera/libcameraservice/Camera2Client.cpp @@ -1007,7 +1007,8 @@ status_t Camera2Client::autoFocus() { */ if (l.mParameters.quirks.triggerAfWithAuto && l.mParameters.sceneMode != ANDROID_CONTROL_SCENE_MODE_UNSUPPORTED && - l.mParameters.focusMode != Parameters::FOCUS_MODE_AUTO) { + l.mParameters.focusMode != Parameters::FOCUS_MODE_AUTO && + !l.mParameters.focusingAreas[0].isEmpty()) { ALOGV("%s: Quirk: Switching from focusMode %d to AUTO", __FUNCTION__, l.mParameters.focusMode); l.mParameters.shadowFocusMode = l.mParameters.focusMode; @@ -1038,13 +1039,16 @@ status_t Camera2Client::cancelAutoFocus() { triggerId = ++l.mParameters.afTriggerCounter; // When using triggerAfWithAuto quirk, may need to reset focus mode to - // the real state at this point. + // the real state at this point. No need to cancel explicitly if + // changing the AF mode. if (l.mParameters.shadowFocusMode != Parameters::FOCUS_MODE_INVALID) { ALOGV("%s: Quirk: Restoring focus mode to %d", __FUNCTION__, l.mParameters.shadowFocusMode); l.mParameters.focusMode = l.mParameters.shadowFocusMode; l.mParameters.shadowFocusMode = Parameters::FOCUS_MODE_INVALID; updateRequests(l.mParameters); + + return OK; } } syncWithDevice(); -- cgit v1.1