summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2019-05-04 03:02:05 +0200
committerQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2019-05-04 03:02:05 +0200
commit268d78ca745bf7d54545e51a4f22e2fa24a8675c (patch)
tree4b4237a447d3704b28f5c1187c6e146ccf4aabff
parent95818e11936e8c85172b2675132a535d5a45015c (diff)
parent6e6871ad398318d61840705de9d057d8eb7726f5 (diff)
Merge remote-tracking branch 'origin/5.12' into 5.13
-rw-r--r--src/plugins/android/src/mediacapture/qandroidcamerasession.cpp40
-rw-r--r--src/plugins/android/src/mediacapture/qandroidcamerasession.h2
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;