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:
