summaryrefslogtreecommitdiffstats
path: root/src/plugins/android/src/mediacapture/qandroidcapturesession.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/android/src/mediacapture/qandroidcapturesession.cpp')
-rw-r--r--src/plugins/android/src/mediacapture/qandroidcapturesession.cpp79
1 files changed, 35 insertions, 44 deletions
diff --git a/src/plugins/android/src/mediacapture/qandroidcapturesession.cpp b/src/plugins/android/src/mediacapture/qandroidcapturesession.cpp
index bdc7ed403..bc9bc983e 100644
--- a/src/plugins/android/src/mediacapture/qandroidcapturesession.cpp
+++ b/src/plugins/android/src/mediacapture/qandroidcapturesession.cpp
@@ -73,16 +73,41 @@ QAndroidCaptureSession::QAndroidCaptureSession(QAndroidCameraSession *cameraSess
QMediaStorageLocation::Sounds,
AndroidMultimediaUtils::getDefaultMediaDirectory(AndroidMultimediaUtils::Sounds));
- connect(this, SIGNAL(stateChanged(QMediaRecorder::State)), this, SLOT(updateStatus()));
-
if (cameraSession) {
connect(cameraSession, SIGNAL(opened()), this, SLOT(onCameraOpened()));
- connect(cameraSession, SIGNAL(statusChanged(QCamera::Status)), this, SLOT(updateStatus()));
- connect(cameraSession, SIGNAL(captureModeChanged(QCamera::CaptureModes)),
- this, SLOT(updateStatus()));
- connect(cameraSession, SIGNAL(readyForCaptureChanged(bool)), this, SLOT(updateStatus()));
+ connect(cameraSession, &QAndroidCameraSession::statusChanged, this,
+ [this](QCamera::Status status) {
+ if (status == QCamera::UnavailableStatus) {
+ setState(QMediaRecorder::StoppedState);
+ setStatus(QMediaRecorder::UnavailableStatus);
+ return;
+ }
+
+ // Stop recording when stopping the camera.
+ if (status == QCamera::StoppingStatus) {
+ setState(QMediaRecorder::StoppedState);
+ setStatus(QMediaRecorder::UnloadedStatus);
+ return;
+ }
+
+ if (status == QCamera::LoadingStatus)
+ setStatus(QMediaRecorder::LoadingStatus);
+ });
+ connect(cameraSession, &QAndroidCameraSession::captureModeChanged, this,
+ [this](QCamera::CaptureModes mode) {
+ if (!mode.testFlag(QCamera::CaptureVideo)) {
+ setState(QMediaRecorder::StoppedState);
+ setStatus(QMediaRecorder::UnloadedStatus);
+ }
+ });
+ connect(cameraSession, &QAndroidCameraSession::readyForCaptureChanged, this,
+ [this](bool ready) {
+ if (ready)
+ setStatus(QMediaRecorder::LoadedStatus);
+ });
} else {
- updateStatus();
+ // Audio-only recording.
+ setStatus(QMediaRecorder::LoadedStatus);
}
m_notifyTimer.setInterval(1000);
@@ -277,6 +302,7 @@ void QAndroidCaptureSession::start()
m_state = QMediaRecorder::RecordingState;
emit stateChanged(m_state);
+ setStatus(QMediaRecorder::RecordingStatus);
}
void QAndroidCaptureSession::stop(bool error)
@@ -315,6 +341,8 @@ void QAndroidCaptureSession::stop(bool error)
m_state = QMediaRecorder::StoppedState;
emit stateChanged(m_state);
+ if (!m_cameraSession)
+ setStatus(QMediaRecorder::LoadedStatus);
}
void QAndroidCaptureSession::setStatus(QMediaRecorder::Status status)
@@ -539,43 +567,6 @@ QAndroidCaptureSession::CaptureProfile QAndroidCaptureSession::getProfile(int id
return profile;
}
-void QAndroidCaptureSession::updateStatus()
-{
- if (m_cameraSession) {
- // Video recording
-
- // stop recording when stopping the camera
- if (m_cameraSession->status() == QCamera::StoppingStatus
- || !m_cameraSession->captureMode().testFlag(QCamera::CaptureVideo)) {
- setState(QMediaRecorder::StoppedState);
- return;
- }
-
- if (m_state == QMediaRecorder::RecordingState) {
- setStatus(QMediaRecorder::RecordingStatus);
- } else if (m_cameraSession->status() == QCamera::UnavailableStatus) {
- setStatus(QMediaRecorder::UnavailableStatus);
- } else if (m_cameraSession->captureMode().testFlag(QCamera::CaptureVideo)
- && m_cameraSession->isReadyForCapture()) {
- if (m_cameraSession->status() == QCamera::StartingStatus)
- setStatus(QMediaRecorder::LoadingStatus);
- else if (m_cameraSession->status() == QCamera::ActiveStatus)
- setStatus(QMediaRecorder::LoadedStatus);
- else
- setStatus(QMediaRecorder::UnloadedStatus);
- } else {
- setStatus(QMediaRecorder::UnloadedStatus);
- }
-
- } else {
- // Audio-only recording
- if (m_state == QMediaRecorder::RecordingState)
- setStatus(QMediaRecorder::RecordingStatus);
- else
- setStatus(QMediaRecorder::LoadedStatus);
- }
-}
-
void QAndroidCaptureSession::onError(int what, int extra)
{
Q_UNUSED(what)