summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorEino-Ville Talvala <etalvala@google.com>2012-10-16 17:03:53 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2012-10-16 17:03:53 -0700
commitdb2c9afc763d40e699ba93c8a495783f2372ad66 (patch)
tree95eb2a68df5545ba1df267e6b9715a67b35b8f41 /services
parent426ee0f6f828b01693f83780832c167b683c004f (diff)
parented653a35784969b7d36e8b36bd421e2a54def0de (diff)
downloadframeworks_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.
Diffstat (limited to 'services')
-rw-r--r--services/camera/libcameraservice/Camera2Client.cpp8
-rw-r--r--services/camera/libcameraservice/camera2/Parameters.h3
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;