summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2019-01-11 09:13:58 +0100
committerLiang Qi <liang.qi@qt.io>2019-01-11 09:13:58 +0100
commite2275ade82540561ca026325ff945fdfa90f13fe (patch)
treec78e3e8cf574d0750eac7788f0182c1fadef69b7
parent89e4c8286d4f06239442ca0d8a9f89761cfc64da (diff)
parent80898b03be54e2855472987f60f4c2526344389b (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.cpp43
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;
- }
- }
- }
}
/*!