FP2-1751: Fix the camera issue for CTS test case failed

Fix the "android.hardware.camera2.cts.RecordingTest#testBurstVideoSnapshot fail" issue
Illegal state encountered in camera service.

Change-Id: I7888ada0a266a41095eedd3616ba5ba393b71ded
diff --git a/QCamera2/HAL/QCameraStateMachine.cpp b/QCamera2/HAL/QCameraStateMachine.cpp
index f803524..79961e3 100644
--- a/QCamera2/HAL/QCameraStateMachine.cpp
+++ b/QCamera2/HAL/QCameraStateMachine.cpp
@@ -1128,39 +1128,74 @@
         }
         break;
     case QCAMERA_SM_EVT_TAKE_PICTURE:
-       {
-           if ( m_parent->mParameters.getRecordingHintValue() == false) {
-               if (m_parent->isZSLMode() || m_parent->isLongshotEnabled()) {
-                   m_state = QCAMERA_SM_STATE_PREVIEW_PIC_TAKING;
-                   rc = m_parent->takePicture();
-                   if (rc != NO_ERROR) {
-                       // move state to previewing state
-                       m_state = QCAMERA_SM_STATE_PREVIEWING;
-                   }
-               } else {
-                   m_state = QCAMERA_SM_STATE_PIC_TAKING;
-                   rc = m_parent->takePicture();
-                   if (rc != NO_ERROR) {
-                       // move state to preview stopped state
-                       m_state = QCAMERA_SM_STATE_PREVIEW_STOPPED;
-                   }
-               }
+    //   {
+    //       if ( m_parent->mParameters.getRecordingHintValue() == false) {
+    //           if (m_parent->isZSLMode() || m_parent->isLongshotEnabled()) {
+    //               m_state = QCAMERA_SM_STATE_PREVIEW_PIC_TAKING;
+    //               rc = m_parent->takePicture();
+    //               if (rc != NO_ERROR) {
+    //                   // move state to previewing state
+    //                   m_state = QCAMERA_SM_STATE_PREVIEWING;
+    //               }
+    //           } else {
+    //               m_state = QCAMERA_SM_STATE_PIC_TAKING;
+    //               rc = m_parent->takePicture();
+    //               if (rc != NO_ERROR) {
+    //                   // move state to preview stopped state
+    //                   m_state = QCAMERA_SM_STATE_PREVIEW_STOPPED;
+    //               }
+    //           }
 
-               result.status = rc;
-               result.request_api = evt;
-               result.result_type = QCAMERA_API_RESULT_TYPE_DEF;
-               m_parent->signalAPIResult(&result);
-           } else {
+    //           result.status = rc;
+    //           result.request_api = evt;
+    //           result.result_type = QCAMERA_API_RESULT_TYPE_DEF;
+    //           m_parent->signalAPIResult(&result);
+    //       } else {
+    //           m_state = QCAMERA_SM_STATE_PREVIEW_PIC_TAKING;
+    //           rc = m_parent->takeLiveSnapshot();
+    //           if (rc != NO_ERROR ) {
+    //               m_state = QCAMERA_SM_STATE_PREVIEWING;
+    //           }
+    //           result.status = rc;
+    //           result.request_api = evt;
+    //           result.result_type = QCAMERA_API_RESULT_TYPE_DEF;
+    //           m_parent->signalAPIResult(&result);
+    //       }
+    //    }
+    //    break;
+	{
+           if ( m_parent->mParameters.getRecordingHintValue() == true) {
+                m_parent->stopPreview();
+                m_parent->mParameters.updateRecordingHintValue(FALSE);
+                // start preview again
+                rc = m_parent->preparePreview();
+                if (rc == NO_ERROR) {
+                    rc = m_parent->startPreview();
+                    if (rc != NO_ERROR) {
+                        m_parent->unpreparePreview();
+                    }
+                }
+           }
+           if (m_parent->isZSLMode() || m_parent->isLongshotEnabled()) {
                m_state = QCAMERA_SM_STATE_PREVIEW_PIC_TAKING;
-               rc = m_parent->takeLiveSnapshot();
-               if (rc != NO_ERROR ) {
+               rc = m_parent->takePicture();
+               if (rc != NO_ERROR) {
+                   // move state to previewing state
                    m_state = QCAMERA_SM_STATE_PREVIEWING;
                }
-               result.status = rc;
-               result.request_api = evt;
-               result.result_type = QCAMERA_API_RESULT_TYPE_DEF;
-               m_parent->signalAPIResult(&result);
+           } else {
+               m_state = QCAMERA_SM_STATE_PIC_TAKING;
+               rc = m_parent->takePicture();
+               if (rc != NO_ERROR) {
+                   // move state to preview stopped state
+                   m_state = QCAMERA_SM_STATE_PREVIEW_STOPPED;
+               }
            }
+
+           result.status = rc;
+           result.request_api = evt;
+           result.result_type = QCAMERA_API_RESULT_TYPE_DEF;
+           m_parent->signalAPIResult(&result);
         }
         break;
     case QCAMERA_SM_EVT_SEND_COMMAND: