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>
diff --git a/camera/OMXCameraAdapter/OMXCameraAdapter.cpp b/camera/OMXCameraAdapter/OMXCameraAdapter.cpp
index 180b441..11ecf0f 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 @@
}
//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;
}