diff options
author | Samuel Mira <samuel.mira@qt.io> | 2023-01-09 11:58:33 +0200 |
---|---|---|
committer | Samuel Mira <samuel.mira@qt.io> | 2023-01-11 14:28:45 +0200 |
commit | f18be9c59cb38fb3cc5046932c5587997af35cf5 (patch) | |
tree | fcc13a3f17284f72029bf3c2e95d39610b16760e | |
parent | 1e8653062d6d23e4dc026661c485e74750c9d4c2 (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>
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(); } |