summaryrefslogtreecommitdiffstats
path: root/src/multimedia/platform
diff options
context:
space:
mode:
authorArtem Dyomin <artem.dyomin@qt.io>2023-06-12 09:56:16 +0200
committerArtem Dyomin <artem.dyomin@qt.io>2023-06-12 12:48:23 +0000
commita9471cbff3bf9d978620e6e962ea196acdd8dc0b (patch)
treeb59d2cea2f8cdfd15b32947fa9ef04422a7892f7 /src/multimedia/platform
parenta8553a1f7f6e434688c162487e60d6a65e28b728 (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.cpp23
-rw-r--r--src/multimedia/platform/qplatformmediadevices_p.h29
-rw-r--r--src/multimedia/platform/qplatformvideodevices.cpp2
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