void BbCameraSession::setState(QCamera::State state) { if (m_state == state) return; const QCamera::State previousState = m_state; if (previousState == QCamera::UnloadedState) { if (state == QCamera::LoadedState) { if (openCamera()) { m_state = state; } } else if (state == QCamera::ActiveState) { if (openCamera()) { QMetaObject::invokeMethod(this, "applyConfiguration", Qt::QueuedConnection); m_state = state; } } } else if (previousState == QCamera::LoadedState) { if (state == QCamera::UnloadedState) { closeCamera(); m_state = state; } else if (state == QCamera::ActiveState) { QMetaObject::invokeMethod(this, "applyConfiguration", Qt::QueuedConnection); m_state = state; } } else if (previousState == QCamera::ActiveState) { if (state == QCamera::LoadedState) { stopViewFinder(); m_state = state; } else if (state == QCamera::UnloadedState) { stopViewFinder(); closeCamera(); m_state = state; } } if (m_state != previousState) emit stateChanged(m_state); }
void ViewFinderWrapper::stopCamera() { Q_ASSERT(m_camera); // Stop processing thread m_processor->stop(); m_processor->deleteLater(); m_processor = 0; // Stop viewfinder stopViewFinder(); // Stop camera m_cameraActive = false; m_camera->stop(); delete m_camera; m_camera = 0; }
ViewFinderWrapper::~ViewFinderWrapper() { m_processor->deleteLater(); stopViewFinder(); stopCamera(); }
BbCameraSession::~BbCameraSession() { stopViewFinder(); closeCamera(); }