diff options
author | Eino-Ville Talvala <etalvala@google.com> | 2012-10-16 17:03:53 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2012-10-16 17:03:53 -0700 |
commit | db2c9afc763d40e699ba93c8a495783f2372ad66 (patch) | |
tree | 95eb2a68df5545ba1df267e6b9715a67b35b8f41 | |
parent | 426ee0f6f828b01693f83780832c167b683c004f (diff) | |
parent | ed653a35784969b7d36e8b36bd421e2a54def0de (diff) | |
download | frameworks_av-db2c9afc763d40e699ba93c8a495783f2372ad66.zip frameworks_av-db2c9afc763d40e699ba93c8a495783f2372ad66.tar.gz frameworks_av-db2c9afc763d40e699ba93c8a495783f2372ad66.tar.bz2 |
am ed653a35: am ecfbc952: Merge "Camera2: Improve quirks focusing behavior." into jb-mr1-dev
* commit 'ed653a35784969b7d36e8b36bd421e2a54def0de':
Camera2: Improve quirks focusing behavior.
-rw-r--r-- | services/camera/libcameraservice/Camera2Client.cpp | 8 | ||||
-rw-r--r-- | services/camera/libcameraservice/camera2/Parameters.h | 3 |
2 files changed, 9 insertions, 2 deletions
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(); diff --git a/services/camera/libcameraservice/camera2/Parameters.h b/services/camera/libcameraservice/camera2/Parameters.h index bb3e6e0..6d32bf6 100644 --- a/services/camera/libcameraservice/camera2/Parameters.h +++ b/services/camera/libcameraservice/camera2/Parameters.h @@ -100,6 +100,9 @@ struct Parameters { Area(int left, int top, int right, int bottom, int weight): left(left), top(top), right(right), bottom(bottom), weight(weight) {} + bool isEmpty() const { + return (left == 0) && (top == 0) && (right == 0) && (bottom == 0); + } }; Vector<Area> focusingAreas; |