diff options
author | Liang Qi <liang.qi@qt.io> | 2019-01-11 09:13:58 +0100 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2019-01-11 09:13:58 +0100 |
commit | e2275ade82540561ca026325ff945fdfa90f13fe (patch) | |
tree | c78e3e8cf574d0750eac7788f0182c1fadef69b7 | |
parent | 89e4c8286d4f06239442ca0d8a9f89761cfc64da (diff) | |
parent | 80898b03be54e2855472987f60f4c2526344389b (diff) |
Merge remote-tracking branch 'origin/5.12' into dev
Conflicts:
.qmake.conf
src/multimedia/camera/qcamera.cpp
Change-Id: If06a4c6a7dde35d5b95abcc5213ff281dca9374e
-rw-r--r-- | src/multimedia/camera/qcamera.cpp | 43 |
1 files changed, 19 insertions, 24 deletions
diff --git a/src/multimedia/camera/qcamera.cpp b/src/multimedia/camera/qcamera.cpp index 75f42db6e..dba761a0a 100644 --- a/src/multimedia/camera/qcamera.cpp +++ b/src/multimedia/camera/qcamera.cpp @@ -347,18 +347,27 @@ QCamera::QCamera(const QByteArray& deviceName, QObject *parent): Q_D(QCamera); d->init(); - if (d->service != nullptr) { - //pass device name to service - if (d->deviceControl) { - const QString name = QString::fromLatin1(deviceName); - for (int i = 0; i < d->deviceControl->deviceCount(); i++) { - if (d->deviceControl->deviceName(i) == name) { - d->deviceControl->setSelectedDevice(i); - break; - } + bool found = false; + // Pass device name to service. + if (d->deviceControl) { + const QString name = QString::fromLatin1(deviceName); + for (int i = 0; i < d->deviceControl->deviceCount(); i++) { + if (d->deviceControl->deviceName(i) == name) { + d->deviceControl->setSelectedDevice(i); + found = true; + break; } } } + + // 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); + d->control = nullptr; + d->error = QCamera::ServiceMissingError; + d->errorString = QCamera::tr("The camera service is missing"); + } } /*! @@ -368,22 +377,8 @@ QCamera::QCamera(const QByteArray& deviceName, QObject *parent): */ QCamera::QCamera(const QCameraInfo &cameraInfo, QObject *parent) - : QMediaObject(*new QCameraPrivate, - parent, - QMediaServiceProvider::defaultServiceProvider()->requestService(Q_MEDIASERVICE_CAMERA, - QMediaServiceProviderHint(cameraInfo.deviceName().toLatin1()))) + : QCamera(cameraInfo.deviceName().toLatin1(), parent) { - Q_D(QCamera); - d->init(); - - if (d->service != nullptr && d->deviceControl) { - for (int i = 0; i < d->deviceControl->deviceCount(); i++) { - if (d->deviceControl->deviceName(i) == cameraInfo.deviceName()) { - d->deviceControl->setSelectedDevice(i); - break; - } - } - } } /*! |