diff options
author | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2019-05-07 03:00:42 +0200 |
---|---|---|
committer | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2019-05-07 03:00:42 +0200 |
commit | 6e09ab1ef5b35b430270016895062d604729f658 (patch) | |
tree | ce0ad63fda91304ee9693773cfcbb8bea258853c | |
parent | 8c64cb8f7aef4b0830ea5e48bd76dde015484cff (diff) | |
parent | 268d78ca745bf7d54545e51a4f22e2fa24a8675c (diff) | |
download | qtmultimedia-6e09ab1ef5b35b430270016895062d604729f658.tar.gz |
Merge remote-tracking branch 'origin/5.13' into dev
Change-Id: I1a8712e983332580235448fd03679303610edd24
-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; |