From c296df781d9fa445bb4b1fcbb6f340e0d1db0c3a Mon Sep 17 00:00:00 2001 From: VaL Doroshchuk Date: Thu, 17 Jan 2019 09:24:50 +0100 Subject: Fix QCameraInfo to be invalid if camera failed to find device Since QCameraInfo uses deviceControl and infoControl to get info about camera, it needs to clear these controls if the camera failed to find a device by name. Change-Id: I1404f70234f978fa4568b6c883a5676f61e08145 Reviewed-by: Oliver Wolff (cherry picked from commit 42932e1a9dfd6699763b336f552e46f9b1ff30c9) --- src/multimedia/camera/qcamera.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/multimedia/camera/qcamera.cpp b/src/multimedia/camera/qcamera.cpp index c7d64155c..bd3f30739 100644 --- a/src/multimedia/camera/qcamera.cpp +++ b/src/multimedia/camera/qcamera.cpp @@ -362,9 +362,17 @@ QCamera::QCamera(const QByteArray& deviceName, QObject *parent): // The camera should not be used if device with requested name does not exist. if (!found) { - if (d->service && d->control) - d->service->releaseControl(d->control); + if (d->service) { + if (d->control) + d->service->releaseControl(d->control); + if (d->deviceControl) + d->service->releaseControl(d->deviceControl); + if (d->infoControl) + d->service->releaseControl(d->infoControl); + } d->control = nullptr; + d->deviceControl = nullptr; + d->infoControl = nullptr; d->error = QCamera::ServiceMissingError; d->errorString = QCamera::tr("The camera service is missing"); } -- cgit v1.2.1