diff options
| author | Sol Boucher <solb@google.com> | 2014-08-12 22:13:48 -0700 |
|---|---|---|
| committer | Sol Boucher <solb@google.com> | 2014-08-13 13:44:35 -0700 |
| commit | bc9c0e2cb071b085ecc5646751fb59f5145d51b1 (patch) | |
| tree | 2824b999dfc7a15cee6e6df939f8baf96a1156da | |
| parent | 47497bee8a3550af79f9a32c9362d7ee78364a71 (diff) | |
| download | android_frameworks_ex-bc9c0e2cb071b085ecc5646751fb59f5145d51b1.tar.gz android_frameworks_ex-bc9c0e2cb071b085ecc5646751fb59f5145d51b1.tar.bz2 android_frameworks_ex-bc9c0e2cb071b085ecc5646751fb59f5145d51b1.zip | |
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
| -rw-r--r-- | camera2/portability/src/com/android/ex/camera2/portability/AndroidCamera2Settings.java | 20 |
1 files changed, 14 insertions, 6 deletions
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; |
