summaryrefslogtreecommitdiffstats
path: root/camera2
diff options
context:
space:
mode:
authorSol Boucher <solb@google.com>2014-08-12 22:13:48 -0700
committerSol Boucher <solb@google.com>2014-08-13 13:44:35 -0700
commitbc9c0e2cb071b085ecc5646751fb59f5145d51b1 (patch)
tree2824b999dfc7a15cee6e6df939f8baf96a1156da /camera2
parent47497bee8a3550af79f9a32c9362d7ee78364a71 (diff)
downloadandroid_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
Diffstat (limited to 'camera2')
-rw-r--r--camera2/portability/src/com/android/ex/camera2/portability/AndroidCamera2Settings.java20
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;