summaryrefslogtreecommitdiffstats
path: root/camera/OMXCameraAdapter/OMXFocus.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'camera/OMXCameraAdapter/OMXFocus.cpp')
-rw-r--r--camera/OMXCameraAdapter/OMXFocus.cpp33
1 files changed, 11 insertions, 22 deletions
diff --git a/camera/OMXCameraAdapter/OMXFocus.cpp b/camera/OMXCameraAdapter/OMXFocus.cpp
index 102daeb..7655d90 100644
--- a/camera/OMXCameraAdapter/OMXFocus.cpp
+++ b/camera/OMXCameraAdapter/OMXFocus.cpp
@@ -149,9 +149,10 @@ status_t OMXCameraAdapter::doAutoFocus()
}
}
- if ( ( focusControl.eFocusControl != OMX_IMAGE_FocusControlAuto ) &&
- ( focusControl.eFocusControl != ( OMX_IMAGE_FOCUSCONTROLTYPE )
- OMX_IMAGE_FocusControlAutoInfinity ) ) {
+ if ( (focusControl.eFocusControl == OMX_IMAGE_FocusControlAuto
+ && focusStatus.eFocusStatus == OMX_FocusStatusRequest) ||
+ (mParameters3A.Focus != (OMX_IMAGE_FOCUSCONTROLTYPE)OMX_IMAGE_FocusControlAuto) )
+ {
ret = RegisterForEvent(mCameraAdapterParameters.mHandleComp,
(OMX_EVENTTYPE) OMX_EventIndexSettingChanged,
@@ -159,13 +160,12 @@ status_t OMXCameraAdapter::doAutoFocus()
OMX_IndexConfigCommonFocusStatus,
mDoAFSem);
- if ( NO_ERROR == ret ) {
- ret = setFocusCallback(true);
- }
-
- eError = OMX_SetConfig(mCameraAdapterParameters.mHandleComp,
- OMX_IndexConfigFocusControl,
- &focusControl);
+ if ( focusControl.eFocusControl != OMX_IMAGE_FocusControlAuto )
+ {
+ eError = OMX_SetConfig(mCameraAdapterParameters.mHandleComp,
+ OMX_IndexConfigFocusControl,
+ &focusControl);
+ }
if ( OMX_ErrorNone != eError ) {
CAMHAL_LOGEB("Error while starting focus 0x%x", eError);
@@ -181,9 +181,6 @@ status_t OMXCameraAdapter::doAutoFocus()
return EINVAL;
}
- //Disable auto focus callback from Ducati
- setFocusCallback(false);
- CAMHAL_LOGEA("Autofocus callback timeout expired");
RemoveEvent(mCameraAdapterParameters.mHandleComp,
(OMX_EVENTTYPE) OMX_EventIndexSettingChanged,
OMX_ALL,
@@ -191,9 +188,7 @@ status_t OMXCameraAdapter::doAutoFocus()
NULL );
returnFocusStatus(true);
} else {
- CAMHAL_LOGDA("Autofocus callback received");
- //Disable auto focus callback from Ducati
- setFocusCallback(false);
+
ret = returnFocusStatus(false);
}
} else { // Focus mode in continuous
@@ -235,12 +230,6 @@ status_t OMXCameraAdapter::stopAutoFocus()
}
if ( NO_ERROR == ret )
- {
- //Disable the callback first
- ret = setFocusCallback(false);
- }
-
- if ( NO_ERROR == ret )
{
OMX_INIT_STRUCT_PTR (&focusControl, OMX_IMAGE_CONFIG_FOCUSCONTROLTYPE);
focusControl.eFocusControl = OMX_IMAGE_FocusControlOff;