diff options
author | Emilian Peev <epeev@mm-sol.com> | 2012-04-06 17:35:47 +0300 |
---|---|---|
committer | Wu-cheng Li <wuchengli@google.com> | 2012-05-08 18:14:52 +0800 |
commit | 1e67b5ff2e8016d506cb29900b476435f03cb3a3 (patch) | |
tree | 8193e461a82a4cd5d60b5e70343ca0a8933d46c2 /camera | |
parent | baed3f89bba1cbd3720656f7125f25705be38db7 (diff) | |
download | omap4xxx-omapzoom-1e67b5ff2e8016d506cb29900b476435f03cb3a3.tar.gz |
CameraHal: Remove lock queries from 'mParams' during 'getParameters()'
- A race condition with 'set3ALock()' is possible, which
can lead to a segfault during calls to 'getParameters()'.
Bug: 6255665
Change-Id: Id64cf3ccfa1e47501d7ba0fb892f2f72329a2ad6
Signed-off-by: Emilian Peev <epeev@mm-sol.com>
Diffstat (limited to 'camera')
-rwxr-xr-x | camera/OMXCameraAdapter/OMXCameraAdapter.cpp | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/camera/OMXCameraAdapter/OMXCameraAdapter.cpp b/camera/OMXCameraAdapter/OMXCameraAdapter.cpp index 180b4412..11ecf0ff 100755 --- a/camera/OMXCameraAdapter/OMXCameraAdapter.cpp +++ b/camera/OMXCameraAdapter/OMXCameraAdapter.cpp @@ -33,6 +33,8 @@ static int mDebugFps = 0; static int mDebugFcs = 0; +#undef TRUE +#undef FALSE #define HERE(Msg) {CAMHAL_LOGEB("--===line %d, %s===--\n", __LINE__, Msg);} @@ -739,17 +741,21 @@ void OMXCameraAdapter::getParameters(CameraParameters& params) } //Populate current lock status - if( (valstr = mParams.get(CameraParameters::KEY_AUTO_EXPOSURE_LOCK)) != NULL ) - { - CAMHAL_LOGDB("Auto Exposure Lock get %s", mParams.get(CameraParameters::KEY_AUTO_EXPOSURE_LOCK)); - params.set(CameraParameters::KEY_AUTO_EXPOSURE_LOCK, valstr); - } + if ( mParameters3A.ExposureLock ) { + params.set(CameraParameters::KEY_AUTO_EXPOSURE_LOCK, + CameraParameters::TRUE); + } else { + params.set(CameraParameters::KEY_AUTO_EXPOSURE_LOCK, + CameraParameters::FALSE); + } - if( (valstr = mParams.get(CameraParameters::KEY_AUTO_WHITEBALANCE_LOCK)) != NULL ) - { - CAMHAL_LOGDB("Auto WhiteBalance Lock get %s", mParams.get(CameraParameters::KEY_AUTO_WHITEBALANCE_LOCK)); - params.set(CameraParameters::KEY_AUTO_WHITEBALANCE_LOCK, valstr); - } + if ( mParameters3A.WhiteBalanceLock ) { + params.set(CameraParameters::KEY_AUTO_WHITEBALANCE_LOCK, + CameraParameters::TRUE); + } else { + params.set(CameraParameters::KEY_AUTO_WHITEBALANCE_LOCK, + CameraParameters::FALSE); + } LOG_FUNCTION_NAME_EXIT; } |