From 3a76a2e916cd5c99b2d9d6e2ecf33d7bb6c27058 Mon Sep 17 00:00:00 2001
From: jinwu <jinwu@codeaurora.org>
Date: Wed, 8 Aug 2018 15:35:08 +0800
Subject: [PATCH] Fix two monkey issues

1. check session is null before stopRepeating
2. catch IndexOutOfBoundsException of getSupportedWhiteBalanceModes

Change-Id: I3096b120d201026644793da8f0214534d2ac8be1
---
 src/com/android/camera/CaptureModule.java   |  4 ++--
 src/com/android/camera/SettingsManager.java | 16 ++++++++++------
 2 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/src/com/android/camera/CaptureModule.java b/src/com/android/camera/CaptureModule.java
index ad9ece77d..ff26cda06 100755
--- a/src/com/android/camera/CaptureModule.java
+++ b/src/com/android/camera/CaptureModule.java
@@ -4605,7 +4605,7 @@ public class CaptureModule implements CameraModule, PhotoController,
                 }
             } else {
                 // is pause or stopRecord
-                if (!(mMediaRecorderPausing && mStopRecPending)) {
+                if (!(mMediaRecorderPausing && mStopRecPending) && (mCurrentSession != null)) {
                     mCurrentSession.stopRepeating();
                     try {
                         mVideoRequestBuilder.set(CaptureModule.recording_end_stream, (byte) 0x01);
@@ -4629,7 +4629,7 @@ public class CaptureModule implements CameraModule, PhotoController,
             }
 
             // set preview
-            if (captureRequestBuilder != null) {
+            if (captureRequestBuilder != null && (mCurrentSession != null)) {
                 if (mCurrentSession instanceof CameraConstrainedHighSpeedCaptureSession) {
                     List requestList = CameraUtil.createHighSpeedRequestList(captureRequestBuilder.build());
                     mCurrentSession.setRepeatingBurst(requestList,
diff --git a/src/com/android/camera/SettingsManager.java b/src/com/android/camera/SettingsManager.java
index 525709e33..fa34b5734 100755
--- a/src/com/android/camera/SettingsManager.java
+++ b/src/com/android/camera/SettingsManager.java
@@ -1380,13 +1380,17 @@ public class SettingsManager implements ListMenu.SettingsListener {
     }
 
     private List<String> getSupportedWhiteBalanceModes(int cameraId) {
-        int[] whiteBalanceModes = mCharacteristics.get(cameraId).get(CameraCharacteristics
-                .CONTROL_AWB_AVAILABLE_MODES);
-        List<String> modes = new ArrayList<>();
-        for (int mode : whiteBalanceModes) {
-            modes.add("" + mode);
+        try {
+            int[] whiteBalanceModes = mCharacteristics.get(cameraId).get(CameraCharacteristics
+                    .CONTROL_AWB_AVAILABLE_MODES);
+            List<String> modes = new ArrayList<>();
+            for (int mode : whiteBalanceModes) {
+                modes.add("" + mode);
+            }
+            return modes;
+        } catch (IndexOutOfBoundsException e) {
+            return null;
         }
-        return modes;
     }
 
     private List<String> getSupportedSceneModes(int cameraId) {
-- 
GitLab