From 9454a9710b13c7d9262fe1cbd910235a3cd35f20 Mon Sep 17 00:00:00 2001 From: Eino-Ville Talvala Date: Mon, 3 Jun 2013 16:50:53 -0700 Subject: Camera2/3: Don't trigger AF when in INFINITY focus mode. While the HAL should ignore it, it's faster to immediately respond with success. Also filter out cancel autofocus calls for FIXED/INFINITY focus. Bug: 9263856 Change-Id: I637ec7c8b459d654ef11cb1142b959f2674224c5 --- services/camera/libcameraservice/Camera2Client.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'services') diff --git a/services/camera/libcameraservice/Camera2Client.cpp b/services/camera/libcameraservice/Camera2Client.cpp index dd50e3c..5fdec34 100644 --- a/services/camera/libcameraservice/Camera2Client.cpp +++ b/services/camera/libcameraservice/Camera2Client.cpp @@ -1007,8 +1007,12 @@ status_t Camera2Client::autoFocus() { * If the camera does not support auto-focus, it is a no-op and * onAutoFocus(boolean, Camera) callback will be called immediately * with a fake value of success set to true. + * + * Similarly, if focus mode is set to INFINITY, there's no reason to + * bother the HAL. */ - if (l.mParameters.focusMode == Parameters::FOCUS_MODE_FIXED) { + if (l.mParameters.focusMode == Parameters::FOCUS_MODE_FIXED || + l.mParameters.focusMode == Parameters::FOCUS_MODE_INFINITY) { notifyImmediately = true; notifySuccess = true; } @@ -1068,6 +1072,11 @@ status_t Camera2Client::cancelAutoFocus() { int triggerId; { SharedParameters::Lock l(mParameters); + // Canceling does nothing in FIXED or INFINITY modes + if (l.mParameters.focusMode == Parameters::FOCUS_MODE_FIXED || + l.mParameters.focusMode == Parameters::FOCUS_MODE_INFINITY) { + return OK; + } triggerId = ++l.mParameters.afTriggerCounter; // When using triggerAfWithAuto quirk, may need to reset focus mode to -- cgit v1.1