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>
This commit is contained in:
Timur Pocheptsov
2014-12-09 20:10:08 +01:00
parent 4459561dd5
commit c31d8cddd0

View File

@@ -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();
}
}