QCamera2: Don't initialize preview channel in ready state
Flash torch configuration shouldn't trigger
preview channel initialization/release once
we are in preview ready state. At this point
the client has already called 'startPreview'
and the flash configuration will get applied
once a valid preview window starts preview.
Change-Id: Ib44af3af593daabc7f1b901cd0b74eee773d20ad
diff --git a/QCamera2/HAL/QCamera2HWI.cpp b/QCamera2/HAL/QCamera2HWI.cpp
index 5ae33a8..524da8d 100644
--- a/QCamera2/HAL/QCamera2HWI.cpp
+++ b/QCamera2/HAL/QCamera2HWI.cpp
@@ -1401,7 +1401,8 @@
int rc = NO_ERROR;
if ( ( !m_stateMachine.isPreviewRunning() ) &&
- ( m_channels[QCAMERA_CH_TYPE_PREVIEW] == NULL ) ) {
+ !m_stateMachine.isPreviewReady() &&
+ ( m_channels[QCAMERA_CH_TYPE_PREVIEW] == NULL ) ) {
rc = addChannel(QCAMERA_CH_TYPE_PREVIEW);
}
@@ -1423,7 +1424,8 @@
int QCamera2HardwareInterface::releaseTorchCamera()
{
if ( !m_stateMachine.isPreviewRunning() &&
- ( m_channels[QCAMERA_CH_TYPE_PREVIEW] != NULL ) ) {
+ !m_stateMachine.isPreviewReady() &&
+ ( m_channels[QCAMERA_CH_TYPE_PREVIEW] != NULL ) ) {
delete m_channels[QCAMERA_CH_TYPE_PREVIEW];
m_channels[QCAMERA_CH_TYPE_PREVIEW] = NULL;
}
diff --git a/QCamera2/HAL/QCameraStateMachine.cpp b/QCamera2/HAL/QCameraStateMachine.cpp
index 9dc67e9..65054ae 100644
--- a/QCamera2/HAL/QCameraStateMachine.cpp
+++ b/QCamera2/HAL/QCameraStateMachine.cpp
@@ -2912,6 +2912,26 @@
}
/*===========================================================================
+ * FUNCTION : isPreviewReady
+ *
+ * DESCRIPTION: check if preview is in ready state.
+ *
+ * PARAMETERS : None
+ *
+ * RETURN : true -- preview is in ready state
+ * false -- preview is stopped
+ *==========================================================================*/
+bool QCameraStateMachine::isPreviewReady()
+{
+ switch (m_state) {
+ case QCAMERA_SM_STATE_PREVIEW_READY:
+ return true;
+ default:
+ return false;
+ }
+}
+
+/*===========================================================================
* FUNCTION : isCaptureRunning
*
* DESCRIPTION: check if image capture is in process.
diff --git a/QCamera2/HAL/QCameraStateMachine.h b/QCamera2/HAL/QCameraStateMachine.h
index 5da517e..da21433 100644
--- a/QCamera2/HAL/QCameraStateMachine.h
+++ b/QCamera2/HAL/QCameraStateMachine.h
@@ -169,6 +169,7 @@
int32_t procEvt(qcamera_sm_evt_enum_t evt, void *evt_payload);
bool isPreviewRunning(); // check if preview is running
+ bool isPreviewReady(); // check if preview is ready
bool isCaptureRunning(); // check if image capture is running
bool isNonZSLCaptureRunning(); // check if image capture is running in non ZSL mode