From f18be9c59cb38fb3cc5046932c5587997af35cf5 Mon Sep 17 00:00:00 2001 From: Samuel Mira Date: Mon, 9 Jan 2023 11:58:33 +0200 Subject: 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 --- src/plugins/multimedia/android/mediacapture/qandroidcamera.cpp | 10 +++++++++- src/plugins/multimedia/android/mediacapture/qandroidcamera_p.h | 1 + .../android/mediacapture/qandroidmediacapturesession.cpp | 4 +--- 3 files changed, 11 insertions(+), 4 deletions(-) (limited to 'src/plugins') 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 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(); } -- cgit v1.2.3