summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Mira <samuel.mira@qt.io>2023-01-09 11:58:33 +0200
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2023-01-11 12:52:30 +0000
commit4f3ed53de5b4d1448488c2fe74d407cf427a40ea (patch)
treeed26496c75374cf9d70d428801c1bac19b6e2fa5
parent572d62de5ef66718285cb9d856bb0e899e9489ff (diff)
downloadqtmultimedia-4f3ed53de5b4d1448488c2fe74d407cf427a40ea.tar.gz
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 Change-Id: I88342e9db068bec05404f5bfd91f73ea5015bb96 Reviewed-by: Lars Knoll <lars@knoll.priv.no> (cherry picked from commit f18be9c59cb38fb3cc5046932c5587997af35cf5) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-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();
}