From bc9c0e2cb071b085ecc5646751fb59f5145d51b1 Mon Sep 17 00:00:00 2001 From: Sol Boucher Date: Tue, 12 Aug 2014 22:13:48 -0700 Subject: camera2-portability: Improve capability conversions' null-safety This makes it harder for unexpected nulls in CaptureRequest templates to cause exceptions while unboxing Integer wrappers. Such crashes were observed on some devices while running on the legacy layer, especially with scene modes. Change-Id: I0cae95534f138e97f2c589d15e81f77b4f2141f7 --- .../camera2/portability/AndroidCamera2Settings.java | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) (limited to 'camera2/portability/src/com/android/ex') diff --git a/camera2/portability/src/com/android/ex/camera2/portability/AndroidCamera2Settings.java b/camera2/portability/src/com/android/ex/camera2/portability/AndroidCamera2Settings.java index 288ded7..efa68e8 100644 --- a/camera2/portability/src/com/android/ex/camera2/portability/AndroidCamera2Settings.java +++ b/camera2/portability/src/com/android/ex/camera2/portability/AndroidCamera2Settings.java @@ -84,13 +84,21 @@ public class AndroidCamera2Settings extends CameraSettings { // TODO: mCurrentZoomIndex mExposureCompensationIndex = queryTemplateDefaultOrMakeOneUp(CONTROL_AE_EXPOSURE_COMPENSATION, 0); + mCurrentFlashMode = flashModeFromRequest(); - mCurrentFocusMode = AndroidCamera2Capabilities.focusModeFromInt( - mTemplateSettings.get(CONTROL_AF_MODE)); - mCurrentSceneMode = AndroidCamera2Capabilities.sceneModeFromInt( - mTemplateSettings.get(CONTROL_SCENE_MODE)); - mWhiteBalance = AndroidCamera2Capabilities.whiteBalanceFromInt( - mTemplateSettings.get(CONTROL_AWB_MODE)); + Integer currentFocusMode = mTemplateSettings.get(CONTROL_AF_MODE); + if (currentFocusMode != null) { + mCurrentFocusMode = AndroidCamera2Capabilities.focusModeFromInt(currentFocusMode); + } + Integer currentSceneMode = mTemplateSettings.get(CONTROL_SCENE_MODE); + if (currentSceneMode != null) { + mCurrentSceneMode = AndroidCamera2Capabilities.sceneModeFromInt(currentSceneMode); + } + Integer whiteBalance = mTemplateSettings.get(CONTROL_AWB_MODE); + if (whiteBalance != null) { + mWhiteBalance = AndroidCamera2Capabilities.whiteBalanceFromInt(whiteBalance); + } + mVideoStabilizationEnabled = queryTemplateDefaultOrMakeOneUp( CONTROL_VIDEO_STABILIZATION_MODE, CONTROL_VIDEO_STABILIZATION_MODE_OFF) == CONTROL_VIDEO_STABILIZATION_MODE_ON; -- cgit v1.2.3