diff options
author | Eino-Ville Talvala <etalvala@google.com> | 2012-10-16 10:17:30 -0700 |
---|---|---|
committer | Eino-Ville Talvala <etalvala@google.com> | 2012-10-16 10:23:05 -0700 |
commit | d6cc4a62f3d94cad4dd36bd0a844ba8764177d26 (patch) | |
tree | fbd68ee26548cd153119df2b42900c7f19bacd1c /services/camera/libcameraservice/camera2 | |
parent | b4a55269a5b39c73de2cc1d4013d0631ef18c77d (diff) |
Camera2: When focus is already locked in CAF mode, do not trigger HAL.
In HAL2 CAF modes, once focus is locked by an AF trigger, additional
triggers will not cause AF notifications, since the state will not
change again until a cancelAutofocus call.
Since the old API still expects to see a notification, short-circuit
this at the service and send an immediate success notification.
Bug: 7318298
Change-Id: Ib209a24eaf2a35a247d06aea671efe80a33d751e
Diffstat (limited to 'services/camera/libcameraservice/camera2')
-rw-r--r-- | services/camera/libcameraservice/camera2/Parameters.cpp | 4 | ||||
-rw-r--r-- | services/camera/libcameraservice/camera2/Parameters.h | 2 |
2 files changed, 5 insertions, 1 deletions
diff --git a/services/camera/libcameraservice/camera2/Parameters.cpp b/services/camera/libcameraservice/camera2/Parameters.cpp index 3c679da3..9a0083ac 100644 --- a/services/camera/libcameraservice/camera2/Parameters.cpp +++ b/services/camera/libcameraservice/camera2/Parameters.cpp @@ -633,6 +633,7 @@ status_t Parameters::initialize(const CameraMetadata *info) { params.set(CameraParameters::KEY_SUPPORTED_FOCUS_MODES, supportedFocusModes); } + focusState = ANDROID_CONTROL_AF_STATE_INACTIVE; shadowFocusMode = FOCUS_MODE_INVALID; camera_metadata_ro_entry_t max3aRegions = @@ -1462,8 +1463,9 @@ status_t Parameters::set(const String8& paramString) { } } } + validatedParams.focusState = ANDROID_CONTROL_AF_STATE_INACTIVE; // Always reset shadow focus mode to avoid reverting settings - shadowFocusMode = FOCUS_MODE_INVALID; + validatedParams.shadowFocusMode = FOCUS_MODE_INVALID; // Update in case of override newParams.set(CameraParameters::KEY_FOCUS_MODE, focusModeEnumToString(validatedParams.focusMode)); diff --git a/services/camera/libcameraservice/camera2/Parameters.h b/services/camera/libcameraservice/camera2/Parameters.h index fd02744e..8a8645ee 100644 --- a/services/camera/libcameraservice/camera2/Parameters.h +++ b/services/camera/libcameraservice/camera2/Parameters.h @@ -88,6 +88,8 @@ struct Parameters { FOCUS_MODE_INVALID = -1 } focusMode; + uint8_t focusState; // Latest focus state from HAL + // For use with triggerAfWithAuto quirk focusMode_t shadowFocusMode; |