diff options
author | Sundar Raman <sunds@ti.com> | 2011-09-21 13:21:12 -0700 |
---|---|---|
committer | Iliyan Malchev <malchev@google.com> | 2011-09-21 16:49:41 -0700 |
commit | 2f15c6a9f1d24904705ddab6a6c005126e8846dd (patch) | |
tree | 5cb25791ebfdc18d318e63fe35e9f1a13e25ae0d /camera/OMXCameraAdapter/OMX3A.cpp | |
parent | 3f94f2f7a3999272d52653cd82714b7a7d3ae9b9 (diff) | |
download | omap4xxx-2f15c6a9f1d24904705ddab6a6c005126e8846dd.tar.gz |
CameraHAL: CTS fixes related to #testMeteringAreas
- The status of "parseAreas()" should always be checked
in order to return proper error code in case of invalid
input arguments.
- If the input metering areas are more than the supported
ones, then always return an error.
- 'parseAreas()' expects the buffer size, not the string
length.
- Refactors "parseFocusAreas()' to the more general
'parseAreas()'.
Change-Id: I4c70bcaa3c676f525b721916cc39c66db5e0fc17
Signed-off-by: Emilian Peev <epeev@mm-sol.com>
Signed-off-by: Sundar Raman <sunds@ti.com>
Diffstat (limited to 'camera/OMXCameraAdapter/OMX3A.cpp')
-rw-r--r-- | camera/OMXCameraAdapter/OMX3A.cpp | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/camera/OMXCameraAdapter/OMX3A.cpp b/camera/OMXCameraAdapter/OMX3A.cpp index ad82398..213bfcd 100644 --- a/camera/OMXCameraAdapter/OMX3A.cpp +++ b/camera/OMXCameraAdapter/OMX3A.cpp @@ -269,28 +269,27 @@ status_t OMXCameraAdapter::setParameters3A(const CameraParameters ¶ms, } str = params.get(CameraParameters::KEY_METERING_AREAS); - if ( (str != NULL) ) - { + if ( (str != NULL) ) { size_t MAX_METERING_AREAS; MAX_METERING_AREAS = atoi(params.get(CameraParameters::KEY_MAX_NUM_METERING_AREAS)); mMeteringAreas.clear(); - CameraArea::parseFocusArea(str, strlen(str), mMeteringAreas); + ret = CameraArea::parseAreas(str, ( strlen(str) + 1 ), mMeteringAreas); - if ( MAX_METERING_AREAS > mMeteringAreas.size() ) - { - CAMHAL_LOGDB("Setting Metering Areas %s", - params.get(CameraParameters::KEY_METERING_AREAS)); + if ( NO_ERROR == ret ) { + if ( MAX_METERING_AREAS >= mMeteringAreas.size() ) { + CAMHAL_LOGDB("Setting Metering Areas %s", + params.get(CameraParameters::KEY_METERING_AREAS)); - mPending3Asettings |= SetMeteringAreas; - } - else - { - CAMHAL_LOGEB("Metering areas supported %d, metering areas set %d", - MAX_METERING_AREAS, mMeteringAreas.size()); + mPending3Asettings |= SetMeteringAreas; + } else { + CAMHAL_LOGEB("Metering areas supported %d, metering areas set %d", + MAX_METERING_AREAS, mMeteringAreas.size()); + ret = -EINVAL; } } + } LOG_FUNCTION_NAME_EXIT; |