diff options
author | Timur Pocheptsov <Timur.Pocheptsov@digia.com> | 2014-12-09 20:10:08 +0100 |
---|---|---|
committer | Timur Pocheptsov <Timur.Pocheptsov@digia.com> | 2015-01-08 17:48:12 +0100 |
commit | c31d8cddd0a2e1f1ee622bc9ea07d038191ceea2 (patch) | |
tree | fcf8fcf43fb780a7170f4917b092d45fd36dde7b /src/plugins/avfoundation | |
parent | 4459561dd5513b6ee2e291068f7870928fdaf08c (diff) | |
download | qtmultimedia-c31d8cddd0a2e1f1ee622bc9ea07d038191ceea2.tar.gz |
AVFImageCaptureControl - invalid connection
AVCaptureConnection from AVCaptureStillImageOutput becomes invalid
as we remove/add AVCaptureDevice.
Change-Id: I698ffcc0b91b76cd5d7c25e4b244eaa0aa459159
Task-number: QTBUG-42035
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
Diffstat (limited to 'src/plugins/avfoundation')
-rw-r--r-- | src/plugins/avfoundation/camera/avfimagecapturecontrol.mm | 25 |
1 files changed, 8 insertions, 17 deletions
diff --git a/src/plugins/avfoundation/camera/avfimagecapturecontrol.mm b/src/plugins/avfoundation/camera/avfimagecapturecontrol.mm index 2da2f1834..6dbc49c2e 100644 --- a/src/plugins/avfoundation/camera/avfimagecapturecontrol.mm +++ b/src/plugins/avfoundation/camera/avfimagecapturecontrol.mm @@ -194,28 +194,19 @@ void AVFImageCaptureControl::cancelCapture() void AVFImageCaptureControl::updateCaptureConnection() { - if (!m_videoConnection && - m_cameraControl->captureMode().testFlag(QCamera::CaptureStillImage)) { + if (m_cameraControl->captureMode().testFlag(QCamera::CaptureStillImage)) { qDebugCamera() << Q_FUNC_INFO; AVCaptureSession *captureSession = m_session->captureSession(); - if ([captureSession canAddOutput:m_stillImageOutput]) { - [captureSession addOutput:m_stillImageOutput]; - - for (AVCaptureConnection *connection in m_stillImageOutput.connections) { - for (AVCaptureInputPort *port in [connection inputPorts]) { - if ([[port mediaType] isEqual:AVMediaTypeVideo] ) { - m_videoConnection = connection; - break; - } - } - - if (m_videoConnection) - break; + if (![captureSession.outputs containsObject:m_stillImageOutput]) { + if ([captureSession canAddOutput:m_stillImageOutput]) { + [captureSession addOutput:m_stillImageOutput]; + m_videoConnection = [m_stillImageOutput connectionWithMediaType:AVMediaTypeVideo]; + updateReadyStatus(); } + } else { + m_videoConnection = [m_stillImageOutput connectionWithMediaType:AVMediaTypeVideo]; } - - updateReadyStatus(); } } |