summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTimur Pocheptsov <Timur.Pocheptsov@digia.com>2014-12-09 20:10:08 +0100
committerTimur Pocheptsov <Timur.Pocheptsov@digia.com>2015-01-08 17:48:12 +0100
commitc31d8cddd0a2e1f1ee622bc9ea07d038191ceea2 (patch)
treefcf8fcf43fb780a7170f4917b092d45fd36dde7b /src
parent4459561dd5513b6ee2e291068f7870928fdaf08c (diff)
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')
-rw-r--r--src/plugins/avfoundation/camera/avfimagecapturecontrol.mm25
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();
}
}