diff options
author | Artem Dyomin <artem.dyomin@qt.io> | 2023-06-12 09:56:16 +0200 |
---|---|---|
committer | Artem Dyomin <artem.dyomin@qt.io> | 2023-06-12 12:48:23 +0000 |
commit | a9471cbff3bf9d978620e6e962ea196acdd8dc0b (patch) | |
tree | b59d2cea2f8cdfd15b32947fa9ef04422a7892f7 /src/multimedia/platform | |
parent | a8553a1f7f6e434688c162487e60d6a65e28b728 (diff) |
Prettify calling of QMediaDevice signals
The idea is inheriting QPlatformMediaDevices from QObject and
connect it to QMediaDevice instances instead of manual collecting
and managing pointers.
Advantages:
- avoid UB behavior with static object destruction order in case
a user makes any QMediaDevices static.
- align the signals parent: send singals from the QMediaDevice instance
Pick-to: 6.5 6.6
Task-number: QTBUG-110071
Change-Id: I7c30694210864ff8c6c90c7299abdbf383f398fa
Reviewed-by: Pavel Dubsky <pavel.dubsky@qt.io>
Reviewed-by: Lars Knoll <lars@knoll.priv.no>
Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io>
Diffstat (limited to 'src/multimedia/platform')
-rw-r--r-- | src/multimedia/platform/qplatformmediadevices.cpp | 23 | ||||
-rw-r--r-- | src/multimedia/platform/qplatformmediadevices_p.h | 29 | ||||
-rw-r--r-- | src/multimedia/platform/qplatformvideodevices.cpp | 2 |
3 files changed, 11 insertions, 43 deletions
diff --git a/src/multimedia/platform/qplatformmediadevices.cpp b/src/multimedia/platform/qplatformmediadevices.cpp index 95cf3b7a0..09c26a670 100644 --- a/src/multimedia/platform/qplatformmediadevices.cpp +++ b/src/multimedia/platform/qplatformmediadevices.cpp @@ -132,27 +132,8 @@ QPlatformAudioSink *QPlatformMediaDevices::audioOutputDevice(const QAudioFormat return p; } -void QPlatformMediaDevices::audioInputsChanged() const -{ - const auto devices = allMediaDevices(); - for (auto m : devices) - emit m->audioInputsChanged(); -} - -void QPlatformMediaDevices::audioOutputsChanged() const -{ - const auto devices = allMediaDevices(); - for (auto m : devices) - emit m->audioOutputsChanged(); -} - -void QPlatformMediaDevices::videoInputsChanged() const -{ - const auto devices = allMediaDevices(); - for (auto m : devices) - emit m->videoInputsChanged(); -} - void QPlatformMediaDevices::prepareAudio() { } QT_END_NAMESPACE + +#include "moc_qplatformmediadevices_p.cpp" diff --git a/src/multimedia/platform/qplatformmediadevices_p.h b/src/multimedia/platform/qplatformmediadevices_p.h index 9b8d0d5e7..d475495d1 100644 --- a/src/multimedia/platform/qplatformmediadevices_p.h +++ b/src/multimedia/platform/qplatformmediadevices_p.h @@ -17,10 +17,10 @@ #include <private/qtmultimediaglobal_p.h> #include <qlist.h> +#include <qobject.h> QT_BEGIN_NAMESPACE -class QObject; class QMediaDevices; class QAudioDevice; class QCameraDevice; @@ -29,11 +29,12 @@ class QPlatformAudioSink; class QAudioFormat; class QPlatformMediaIntegration; -class Q_MULTIMEDIA_EXPORT QPlatformMediaDevices +class Q_MULTIMEDIA_EXPORT QPlatformMediaDevices : public QObject { + Q_OBJECT public: QPlatformMediaDevices(); - virtual ~QPlatformMediaDevices(); + ~QPlatformMediaDevices() override; static void setDevices(QPlatformMediaDevices *); static QPlatformMediaDevices *instance(); @@ -49,26 +50,12 @@ public: QPlatformAudioSink *audioOutputDevice(const QAudioFormat &format, const QAudioDevice &deviceInfo, QObject *parent); - void addMediaDevices(QMediaDevices *m) - { - m_devices.append(m); - } - void removeMediaDevices(QMediaDevices *m) - { - m_devices.removeAll(m); - } - - QList<QMediaDevices *> allMediaDevices() const { return m_devices; } - - void videoInputsChanged() const; - virtual void prepareAudio(); -protected: - void audioInputsChanged() const; - void audioOutputsChanged() const; - - QList<QMediaDevices *> m_devices; +Q_SIGNALS: + void audioInputsChanged(); + void audioOutputsChanged(); + void videoInputsChanged(); }; QT_END_NAMESPACE diff --git a/src/multimedia/platform/qplatformvideodevices.cpp b/src/multimedia/platform/qplatformvideodevices.cpp index 9d2fc3c31..e556bb899 100644 --- a/src/multimedia/platform/qplatformvideodevices.cpp +++ b/src/multimedia/platform/qplatformvideodevices.cpp @@ -13,7 +13,7 @@ QPlatformVideoDevices::~QPlatformVideoDevices() void QPlatformVideoDevices::videoInputsChanged() { - QPlatformMediaDevices::instance()->videoInputsChanged(); + emit QPlatformMediaDevices::instance()->videoInputsChanged(); } QT_END_NAMESPACE |