QCamera2: Adds support for preview stop during video recording
- This change adds functionality to handle calls
'stopPreview()' while recording is enabled.
Video recording will first be disabled and then
the preview will get stopped.
Change-Id: I6618d7589ae994c9e8e28110b0b60ffdad945c2f
diff --git a/QCamera2/HAL/QCameraStateMachine.cpp b/QCamera2/HAL/QCameraStateMachine.cpp
index 78fa46e..7504ef8 100644
--- a/QCamera2/HAL/QCameraStateMachine.cpp
+++ b/QCamera2/HAL/QCameraStateMachine.cpp
@@ -1833,6 +1833,20 @@
m_parent->signalAPIResult(&result);
}
break;
+ case QCAMERA_SM_EVT_STOP_PREVIEW:
+ {
+ rc = m_parent->stopRecording();
+ m_state = QCAMERA_SM_STATE_PREVIEWING;
+
+ rc = m_parent->stopPreview();
+ 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_RELEASE_RECORIDNG_FRAME:
{
rc = m_parent->releaseRecordingFrame((const void *)payload);
@@ -1869,7 +1883,6 @@
case QCAMERA_SM_EVT_CANCEL_PICTURE:
case QCAMERA_SM_EVT_START_PREVIEW:
case QCAMERA_SM_EVT_START_NODISPLAY_PREVIEW:
- case QCAMERA_SM_EVT_STOP_PREVIEW:
case QCAMERA_SM_EVT_RELEASE:
{
ALOGE("%s: cannot handle evt(%d) in state(%d)", __func__, evt, m_state);
@@ -2155,10 +2168,26 @@
m_parent->signalAPIResult(&result);
}
break;
+ case QCAMERA_SM_EVT_STOP_PREVIEW:
+ {
+ rc = m_parent->cancelLiveSnapshot();
+ m_state = QCAMERA_SM_STATE_RECORDING;
+
+ rc = m_parent->stopRecording();
+ m_state = QCAMERA_SM_STATE_PREVIEWING;
+
+ rc = m_parent->stopPreview();
+ 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_START_RECORDING:
case QCAMERA_SM_EVT_START_PREVIEW:
case QCAMERA_SM_EVT_START_NODISPLAY_PREVIEW:
- case QCAMERA_SM_EVT_STOP_PREVIEW:
case QCAMERA_SM_EVT_TAKE_PICTURE:
case QCAMERA_SM_EVT_RELEASE:
{