diff options
author | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2019-05-04 03:02:05 +0200 |
---|---|---|
committer | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2019-05-04 03:02:05 +0200 |
commit | 268d78ca745bf7d54545e51a4f22e2fa24a8675c (patch) | |
tree | 4b4237a447d3704b28f5c1187c6e146ccf4aabff | |
parent | 95818e11936e8c85172b2675132a535d5a45015c (diff) | |
parent | 6e6871ad398318d61840705de9d057d8eb7726f5 (diff) |
Merge remote-tracking branch 'origin/5.12' into 5.13
Change-Id: Iedfcb12f51d26843d062d443d11eef5959d1c4bd
-rw-r--r-- | src/plugins/android/src/mediacapture/qandroidcamerasession.cpp | 40 | ||||
-rw-r--r-- | src/plugins/android/src/mediacapture/qandroidcamerasession.h | 2 |
2 files changed, 23 insertions, 19 deletions
diff --git a/src/plugins/android/src/mediacapture/qandroidcamerasession.cpp b/src/plugins/android/src/mediacapture/qandroidcamerasession.cpp index 8ba3ed12c..efcd56580 100644 --- a/src/plugins/android/src/mediacapture/qandroidcamerasession.cpp +++ b/src/plugins/android/src/mediacapture/qandroidcamerasession.cpp @@ -114,16 +114,22 @@ bool QAndroidCameraSession::isCaptureModeSupported(QCamera::CaptureModes mode) c void QAndroidCameraSession::setState(QCamera::State state) { + if (m_state == state) + return; + + m_state = state; + emit stateChanged(m_state); + // If the application is inactive, the camera shouldn't be started. Save the desired state // instead and it will be set when the application becomes active. - if (qApp->applicationState() != Qt::ApplicationActive) { + if (qApp->applicationState() == Qt::ApplicationActive) + setStateHelper(state); + else m_savedState = state; - return; - } - - if (m_state == state) - return; +} +void QAndroidCameraSession::setStateHelper(QCamera::State state) +{ switch (state) { case QCamera::UnloadedState: close(); @@ -131,20 +137,19 @@ void QAndroidCameraSession::setState(QCamera::State state) case QCamera::LoadedState: case QCamera::ActiveState: if (!m_camera && !open()) { + m_state = QCamera::UnloadedState; + emit stateChanged(m_state); emit error(QCamera::CameraError, QStringLiteral("Failed to open camera")); + m_status = QCamera::UnloadedStatus; + emit statusChanged(m_status); return; } - if (state == QCamera::ActiveState) { - if (!startPreview()) - return; - } else if (state == QCamera::LoadedState) { + if (state == QCamera::ActiveState) + startPreview(); + else if (state == QCamera::LoadedState) stopPreview(); - } break; } - - m_state = state; - emit stateChanged(m_state); } void QAndroidCameraSession::updateAvailableCameras() @@ -202,12 +207,9 @@ bool QAndroidCameraSession::open() m_camera->notifyNewFrames(m_videoProbes.count() || m_previewCallback); emit opened(); - } else { - m_status = QCamera::UnavailableStatus; + emit statusChanged(m_status); } - emit statusChanged(m_status); - return m_camera != 0; } @@ -899,7 +901,7 @@ void QAndroidCameraSession::onApplicationStateChanged(Qt::ApplicationState state break; case Qt::ApplicationActive: if (m_savedState != -1) { - setState(QCamera::State(m_savedState)); + setStateHelper(QCamera::State(m_savedState)); m_savedState = -1; } break; diff --git a/src/plugins/android/src/mediacapture/qandroidcamerasession.h b/src/plugins/android/src/mediacapture/qandroidcamerasession.h index d08f2f6ac..b51dcc628 100644 --- a/src/plugins/android/src/mediacapture/qandroidcamerasession.h +++ b/src/plugins/android/src/mediacapture/qandroidcamerasession.h @@ -165,6 +165,8 @@ private: static QVideoFrame::PixelFormat QtPixelFormatFromAndroidImageFormat(AndroidCamera::ImageFormat); static AndroidCamera::ImageFormat AndroidImageFormatFromQtPixelFormat(QVideoFrame::PixelFormat); + void setStateHelper(QCamera::State state); + int m_selectedCamera; AndroidCamera *m_camera; int m_nativeOrientation; |