diff options
author | Eino-Ville Talvala <etalvala@google.com> | 2012-10-04 00:56:40 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-10-04 16:34:11 -0700 |
commit | 4c843702c7c2d2ca951e25bc54787c68c2071a8b (patch) | |
tree | 1aa06e8b460e2cba635e5da7760101dc64d5338d /services/camera/libcameraservice/Camera2Client.cpp | |
parent | 4c9eb718352697cd75269752344c0bcc6b05e708 (diff) | |
download | frameworks_av-4c843702c7c2d2ca951e25bc54787c68c2071a8b.zip frameworks_av-4c843702c7c2d2ca951e25bc54787c68c2071a8b.tar.gz frameworks_av-4c843702c7c2d2ca951e25bc54787c68c2071a8b.tar.bz2 |
Camera2: Use the triggerAfWithAuto quirk
When this quirk is set, and a scene mode is enabled, do AF calls with
AF mode AUTO instead of whatever the scene more override AF mode is.
Bug: 7159577
Change-Id: I3ea6b8386abc0968047fc9bba3a35c5db5bdcfd3
Diffstat (limited to 'services/camera/libcameraservice/Camera2Client.cpp')
-rw-r--r-- | services/camera/libcameraservice/Camera2Client.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/services/camera/libcameraservice/Camera2Client.cpp b/services/camera/libcameraservice/Camera2Client.cpp index 9bcaef1..ed4567e 100644 --- a/services/camera/libcameraservice/Camera2Client.cpp +++ b/services/camera/libcameraservice/Camera2Client.cpp @@ -956,6 +956,16 @@ status_t Camera2Client::autoFocus() { return INVALID_OPERATION; } + if (l.mParameters.quirks.triggerAfWithAuto && + l.mParameters.sceneMode != ANDROID_CONTROL_SCENE_MODE_UNSUPPORTED && + l.mParameters.focusMode != Parameters::FOCUS_MODE_AUTO) { + ALOGV("%s: Quirk: Switching from focusMode %d to AUTO", + __FUNCTION__, l.mParameters.focusMode); + l.mParameters.shadowFocusMode = l.mParameters.focusMode; + l.mParameters.focusMode = Parameters::FOCUS_MODE_AUTO; + updateRequests(l.mParameters); + } + l.mParameters.currentAfTriggerId = ++l.mParameters.afTriggerCounter; triggerId = l.mParameters.currentAfTriggerId; } @@ -977,6 +987,16 @@ status_t Camera2Client::cancelAutoFocus() { { SharedParameters::Lock l(mParameters); triggerId = ++l.mParameters.afTriggerCounter; + + // When using triggerAfWithAuto quirk, may need to reset focus mode to + // the real state at this point. + 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); + } } syncWithDevice(); |