QCamera3: Fix Easel HDR+ mode

Only enable Easel HDR+ mode for the first request that has
preview intent and does not disable HDR+.

This allows GCA to disable EASEL HDR+ when Easel HDR+ is enabled
be default.

Test: CTS
Bug: 65693945
Change-Id: I3f6ef41167fdbc219c20bf5baaf3bd3faa442fca
diff --git a/msm8998/QCamera2/HAL3/QCamera3HWI.cpp b/msm8998/QCamera2/HAL3/QCamera3HWI.cpp
index 7a6249e..044b60d 100644
--- a/msm8998/QCamera2/HAL3/QCamera3HWI.cpp
+++ b/msm8998/QCamera2/HAL3/QCamera3HWI.cpp
@@ -6084,14 +6084,16 @@
         }
     }
 
-    // Enable HDR+ mode for the first PREVIEW_INTENT request.
+    // Enable HDR+ mode for the first PREVIEW_INTENT request that doesn't disable HDR+.
     {
         std::unique_lock<std::mutex> l(gHdrPlusClientLock);
         if (gEaselManagerClient != nullptr && gEaselManagerClient->isEaselPresentOnDevice() &&
                 !gEaselBypassOnly && !mFirstPreviewIntentSeen &&
                 meta.exists(ANDROID_CONTROL_CAPTURE_INTENT) &&
                 meta.find(ANDROID_CONTROL_CAPTURE_INTENT).data.u8[0] ==
-                ANDROID_CONTROL_CAPTURE_INTENT_PREVIEW) {
+                ANDROID_CONTROL_CAPTURE_INTENT_PREVIEW &&
+                meta.exists(NEXUS_EXPERIMENTAL_2017_DISABLE_HDRPLUS) &&
+                meta.find(NEXUS_EXPERIMENTAL_2017_DISABLE_HDRPLUS).data.i32[0] == 0) {
 
             if (isSessionHdrPlusModeCompatible()) {
                 rc = enableHdrPlusModeLocked();
@@ -11612,8 +11614,10 @@
         settings.update(NEXUS_EXPERIMENTAL_2017_POSTVIEW, &postview, 1);
         int32_t continuousZslCapture = 0;
         settings.update(NEXUS_EXPERIMENTAL_2017_CONTINUOUS_ZSL_CAPTURE, &continuousZslCapture, 1);
-        // Disable HDR+ for templates other than CAMERA3_TEMPLATE_STILL_CAPTURE.
-        int32_t disableHdrplus = (type == CAMERA3_TEMPLATE_STILL_CAPTURE) ? 0 : 1;
+        // Disable HDR+ for templates other than CAMERA3_TEMPLATE_STILL_CAPTURE and
+        // CAMERA3_TEMPLATE_PREVIEW.
+        int32_t disableHdrplus = (type == CAMERA3_TEMPLATE_STILL_CAPTURE ||
+                                  type == CAMERA3_TEMPLATE_PREVIEW) ? 0 : 1;
         settings.update(NEXUS_EXPERIMENTAL_2017_DISABLE_HDRPLUS, &disableHdrplus, 1);
 
         // Set hybrid_ae tag in PREVIEW and STILL_CAPTURE templates to 1 so that