diff options
author | Samuel Mira <samuel.mira@qt.io> | 2023-01-09 11:58:33 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2023-01-11 12:52:30 +0000 |
commit | 4f3ed53de5b4d1448488c2fe74d407cf427a40ea (patch) | |
tree | ed26496c75374cf9d70d428801c1bac19b6e2fa5 | |
parent | 572d62de5ef66718285cb9d856bb0e899e9489ff (diff) | |
download | qtmultimedia-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>
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(); } |