summaryrefslogtreecommitdiffstats
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
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
-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;