summaryrefslogtreecommitdiffstats
path: root/src/multimedia/platform/darwin/camera/avfimagecapture.mm
diff options
context:
space:
mode:
Diffstat (limited to 'src/multimedia/platform/darwin/camera/avfimagecapture.mm')
-rw-r--r--src/multimedia/platform/darwin/camera/avfimagecapture.mm34
1 files changed, 18 insertions, 16 deletions
diff --git a/src/multimedia/platform/darwin/camera/avfimagecapture.mm b/src/multimedia/platform/darwin/camera/avfimagecapture.mm
index a397fe418..999abab95 100644
--- a/src/multimedia/platform/darwin/camera/avfimagecapture.mm
+++ b/src/multimedia/platform/darwin/camera/avfimagecapture.mm
@@ -96,14 +96,14 @@ int AVFImageCapture::doCapture(const QString &actualFileName)
Q_ARG(int, m_lastCaptureId),
Q_ARG(int, QImageCapture::ResourceError),
Q_ARG(QString, QPlatformImageCapture::msgImageCaptureNotSet()));
- return m_lastCaptureId;
+ return -1;
}
if (!isReadyForCapture()) {
QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection,
Q_ARG(int, m_lastCaptureId),
Q_ARG(int, QImageCapture::NotReadyError),
Q_ARG(QString, QPlatformImageCapture::msgCameraNotReady()));
- return m_lastCaptureId;
+ return -1;
}
m_lastCaptureId++;
@@ -225,13 +225,16 @@ void AVFImageCapture::onNewViewfinderFrame(const QVideoFrame &frame)
void AVFImageCapture::onCameraChanged()
{
- if (m_service)
- m_cameraControl = static_cast<AVFCamera *>(m_service->camera());
- else
- m_cameraControl = nullptr;
+ auto camera = m_service ? static_cast<AVFCamera *>(m_service->camera()) : nullptr;
+
+ if (camera == m_cameraControl)
+ return;
+
+ m_cameraControl = camera;
if (m_cameraControl)
connect(m_cameraControl, SIGNAL(activeChanged(bool)), this, SLOT(updateReadyStatus()));
+ updateReadyStatus();
}
void AVFImageCapture::makeCapturePreview(CaptureRequest request,
@@ -385,20 +388,19 @@ void AVFImageCapture::setCaptureSession(QPlatformMediaCaptureSession *session)
m_session = nullptr;
m_cameraControl = nullptr;
m_videoConnection = nil;
- return;
+ } else {
+ m_session = m_service->session();
+ Q_ASSERT(m_session);
+
+ connect(m_service, &AVFCameraService::cameraChanged, this, &AVFImageCapture::onCameraChanged);
+ connect(m_session, SIGNAL(readyToConfigureConnections()), SLOT(updateCaptureConnection()));
+ connect(m_session, &AVFCameraSession::newViewfinderFrame,
+ this, &AVFImageCapture::onNewViewfinderFrame);
}
- m_session = m_service->session();
- Q_ASSERT(m_session);
-
- connect(m_service, &AVFCameraService::cameraChanged, this, &AVFImageCapture::onCameraChanged);
- connect(m_session, SIGNAL(readyToConfigureConnections()), SLOT(updateCaptureConnection()));
- connect(m_session, &AVFCameraSession::newViewfinderFrame,
- this, &AVFImageCapture::onNewViewfinderFrame);
-
updateCaptureConnection();
- updateReadyStatus();
onCameraChanged();
+ updateReadyStatus();
}
bool AVFImageCapture::videoCaptureDeviceIsValid() const