summaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
authorSamuel Mira <samuel.mira@qt.io>2023-01-09 11:58:33 +0200
committerSamuel Mira <samuel.mira@qt.io>2023-01-11 14:28:45 +0200
commitf18be9c59cb38fb3cc5046932c5587997af35cf5 (patch)
treefcc13a3f17284f72029bf3c2e95d39610b16760e /src/plugins
parent1e8653062d6d23e4dc026661c485e74750c9d4c2 (diff)
Android: Prevent Camera set automatically active
The Android backend was different from the rest of the backends and it automatically started the camera when it was attached to media capture session. This patch changes to set it as the rest of the backends. Fixes: QTBUG-109415 Pick-to: 6.5 6.4 6.2 Change-Id: I88342e9db068bec05404f5bfd91f73ea5015bb96 Reviewed-by: Lars Knoll <lars@knoll.priv.no>
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/multimedia/android/mediacapture/qandroidcamera.cpp10
-rw-r--r--src/plugins/multimedia/android/mediacapture/qandroidcamera_p.h1
-rw-r--r--src/plugins/multimedia/android/mediacapture/qandroidmediacapturesession.cpp4
3 files changed, 11 insertions, 4 deletions
diff --git a/src/plugins/multimedia/android/mediacapture/qandroidcamera.cpp b/src/plugins/multimedia/android/mediacapture/qandroidcamera.cpp
index cd4ff6843..cadd72fb6 100644
--- a/src/plugins/multimedia/android/mediacapture/qandroidcamera.cpp
+++ b/src/plugins/multimedia/android/mediacapture/qandroidcamera.cpp
@@ -24,8 +24,11 @@ QAndroidCamera::~QAndroidCamera()
void QAndroidCamera::setActive(bool active)
{
- if (m_cameraSession)
+ if (m_cameraSession) {
m_cameraSession->setActive(active);
+ } else {
+ isPendingSetActive = active;
+ }
}
bool QAndroidCamera::isActive() const
@@ -99,6 +102,11 @@ void QAndroidCamera::setCaptureSession(QPlatformMediaCaptureSession *session)
connect(m_cameraSession, &QAndroidCameraSession::activeChanged, this, &QAndroidCamera::activeChanged);
connect(m_cameraSession, &QAndroidCameraSession::error, this, &QAndroidCamera::error);
connect(m_cameraSession, &QAndroidCameraSession::opened, this, &QAndroidCamera::onCameraOpened);
+
+ if (isPendingSetActive) {
+ setActive(true);
+ isPendingSetActive = false;
+ }
}
void QAndroidCamera::setFocusMode(QCamera::FocusMode mode)
diff --git a/src/plugins/multimedia/android/mediacapture/qandroidcamera_p.h b/src/plugins/multimedia/android/mediacapture/qandroidcamera_p.h
index de12d202f..15ea9bf0e 100644
--- a/src/plugins/multimedia/android/mediacapture/qandroidcamera_p.h
+++ b/src/plugins/multimedia/android/mediacapture/qandroidcamera_p.h
@@ -87,6 +87,7 @@ private:
bool isFlashSupported = false;
bool isFlashAutoSupported = false;
bool isTorchSupported = false;
+ bool isPendingSetActive = false;
QCameraDevice m_cameraDev;
QMap<QCamera::WhiteBalanceMode, QString> m_supportedWhiteBalanceModes;
diff --git a/src/plugins/multimedia/android/mediacapture/qandroidmediacapturesession.cpp b/src/plugins/multimedia/android/mediacapture/qandroidmediacapturesession.cpp
index 0a1fde54f..e2b551d35 100644
--- a/src/plugins/multimedia/android/mediacapture/qandroidmediacapturesession.cpp
+++ b/src/plugins/multimedia/android/mediacapture/qandroidmediacapturesession.cpp
@@ -47,10 +47,8 @@ void QAndroidMediaCaptureSession::setCamera(QPlatformCamera *camera)
m_cameraControl->setCaptureSession(nullptr);
m_cameraControl = control;
- if (m_cameraControl) {
+ if (m_cameraControl)
m_cameraControl->setCaptureSession(this);
- m_cameraControl->setActive(true);
- }
emit cameraChanged();
}