summaryrefslogtreecommitdiffstats
path: root/src/multimedia/platform
diff options
context:
space:
mode:
authorJøger Hansegård <joger.hansegard@qt.io>2024-01-29 17:00:39 +0100
committerJøger Hansegård <joger.hansegard@qt.io>2024-02-25 22:41:38 +0100
commit76d5703291b4d7264333f3effc5f8114d5d9dc44 (patch)
treeefb559db24286b942bcf2874eebaf01a6ec11d8d /src/multimedia/platform
parentf84fe0247c10b3fcb886b71c2cd4dc14e8817958 (diff)
Simplify setup of media devices by using unique connection
Testing QMediaDevices was a bit tricky because we we needed to pump messages to get everything set up for connecting cameras. This patch removes the need for pumping messages by calling target function directly. This way, video devices connections will be initialized synchronously. By using UniqueConnection, we make sure this only happens once, because we only need to create the connection if it was not already created. Amends 3d23c26565f087c2be2bb13cb511536ab05ab4d6. Pick-to: 6.7 6.6 6.5 Change-Id: Icac571cbc1ccfc756a2e9a245752b7db4309fbfd Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
Diffstat (limited to 'src/multimedia/platform')
-rw-r--r--src/multimedia/platform/qplatformmediadevices.cpp15
-rw-r--r--src/multimedia/platform/qplatformmediadevices_p.h3
2 files changed, 6 insertions, 12 deletions
diff --git a/src/multimedia/platform/qplatformmediadevices.cpp b/src/multimedia/platform/qplatformmediadevices.cpp
index 61b6515e6..069b3012b 100644
--- a/src/multimedia/platform/qplatformmediadevices.cpp
+++ b/src/multimedia/platform/qplatformmediadevices.cpp
@@ -98,15 +98,12 @@ QPlatformMediaDevices *QPlatformMediaDevices::instance()
QPlatformMediaDevices::QPlatformMediaDevices() = default;
-void QPlatformMediaDevices::initVideoDevicesConnection() {
- std::call_once(m_videoDevicesConnectionFlag, [this]() {
- QMetaObject::invokeMethod(this, [this]() {
- auto videoDevices = QPlatformMediaIntegration::instance()->videoDevices();
- if (videoDevices)
- connect(videoDevices, &QPlatformVideoDevices::videoInputsChanged, this,
- &QPlatformMediaDevices::videoInputsChanged);
- }, Qt::QueuedConnection);
- });
+void QPlatformMediaDevices::initVideoDevicesConnection()
+{
+ // Make sure we are notified if video inputs changed
+ if (const auto videoDevices = QPlatformMediaIntegration::instance()->videoDevices())
+ connect(videoDevices, &QPlatformVideoDevices::videoInputsChanged, this,
+ &QPlatformMediaDevices::videoInputsChanged, Qt::UniqueConnection);
}
void QPlatformMediaDevices::setDevices(QPlatformMediaDevices *devices)
diff --git a/src/multimedia/platform/qplatformmediadevices_p.h b/src/multimedia/platform/qplatformmediadevices_p.h
index 0d7ba9306..555e269c8 100644
--- a/src/multimedia/platform/qplatformmediadevices_p.h
+++ b/src/multimedia/platform/qplatformmediadevices_p.h
@@ -59,9 +59,6 @@ Q_SIGNALS:
void audioInputsChanged();
void audioOutputsChanged();
void videoInputsChanged();
-
-private:
- std::once_flag m_videoDevicesConnectionFlag;
};
QT_END_NAMESPACE