summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/multimedia/android/qandroidmediadevices.cpp4
-rw-r--r--src/multimedia/darwin/qdarwinmediadevices.mm4
-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
-rw-r--r--src/multimedia/qmediadevices.cpp14
-rw-r--r--src/multimedia/windows/qwindowsmediadevices.cpp4
-rw-r--r--src/plugins/multimedia/darwin/camera/qavfcamerabase.mm2
-rw-r--r--src/plugins/multimedia/ffmpeg/qv4l2camera.cpp2
-rw-r--r--src/plugins/multimedia/gstreamer/qgstreamervideodevices.cpp4
-rw-r--r--src/plugins/multimedia/windows/qwindowsvideodevices.cpp2
11 files changed, 30 insertions, 60 deletions
diff --git a/src/multimedia/android/qandroidmediadevices.cpp b/src/multimedia/android/qandroidmediadevices.cpp
index 9e45479a5..022e758da 100644
--- a/src/multimedia/android/qandroidmediadevices.cpp
+++ b/src/multimedia/android/qandroidmediadevices.cpp
@@ -43,12 +43,12 @@ QPlatformAudioSink *QAndroidMediaDevices::createAudioSink(const QAudioDevice &de
void QAndroidMediaDevices::forwardAudioOutputsChanged()
{
- audioOutputsChanged();
+ emit audioOutputsChanged();
}
void QAndroidMediaDevices::forwardAudioInputsChanged()
{
- audioInputsChanged();
+ emit audioInputsChanged();
}
static void onAudioInputDevicesUpdated(JNIEnv */*env*/, jobject /*thiz*/)
diff --git a/src/multimedia/darwin/qdarwinmediadevices.mm b/src/multimedia/darwin/qdarwinmediadevices.mm
index 1a9dbe218..3ab7e6c05 100644
--- a/src/multimedia/darwin/qdarwinmediadevices.mm
+++ b/src/multimedia/darwin/qdarwinmediadevices.mm
@@ -238,7 +238,7 @@ void QDarwinMediaDevices::onInputsUpdated()
auto inputs = availableAudioDevices(QAudioDevice::Input);
if (m_cachedAudioInputs != inputs) {
m_cachedAudioInputs = inputs;
- audioInputsChanged();
+ emit audioInputsChanged();
}
}
@@ -247,7 +247,7 @@ void QDarwinMediaDevices::onOutputsUpdated()
auto outputs = availableAudioDevices(QAudioDevice::Output);
if (m_cachedAudioOutputs != outputs) {
m_cachedAudioOutputs = outputs;
- audioOutputsChanged();
+ emit audioOutputsChanged();
}
}
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
diff --git a/src/multimedia/qmediadevices.cpp b/src/multimedia/qmediadevices.cpp
index d8486e603..7302d3d98 100644
--- a/src/multimedia/qmediadevices.cpp
+++ b/src/multimedia/qmediadevices.cpp
@@ -247,17 +247,19 @@ QCameraDevice QMediaDevices::defaultVideoInput()
QMediaDevices::QMediaDevices(QObject *parent)
: QObject(parent)
{
- QPlatformMediaDevices::instance()->addMediaDevices(this);
+ auto platformDevices = QPlatformMediaDevices::instance();
+ connect(platformDevices, &QPlatformMediaDevices::videoInputsChanged, this,
+ &QMediaDevices::videoInputsChanged);
+ connect(platformDevices, &QPlatformMediaDevices::audioInputsChanged, this,
+ &QMediaDevices::audioInputsChanged);
+ connect(platformDevices, &QPlatformMediaDevices::audioOutputsChanged, this,
+ &QMediaDevices::audioOutputsChanged);
}
/*!
\internal
*/
-QMediaDevices::~QMediaDevices()
-{
- QPlatformMediaDevices::instance()->removeMediaDevices(this);
-}
-
+QMediaDevices::~QMediaDevices() = default;
QT_END_NAMESPACE
diff --git a/src/multimedia/windows/qwindowsmediadevices.cpp b/src/multimedia/windows/qwindowsmediadevices.cpp
index a7e54daf5..1358c317b 100644
--- a/src/multimedia/windows/qwindowsmediadevices.cpp
+++ b/src/multimedia/windows/qwindowsmediadevices.cpp
@@ -125,9 +125,9 @@ public:
{
// windowsMediaDevice may be deleted as we are executing the callback
if (flow == EDataFlow::eCapture) {
- m_windowsMediaDevices->audioInputsChanged();
+ emit m_windowsMediaDevices->audioInputsChanged();
} else if (flow == EDataFlow::eRender) {
- m_windowsMediaDevices->audioOutputsChanged();
+ emit m_windowsMediaDevices->audioOutputsChanged();
}
}
diff --git a/src/plugins/multimedia/darwin/camera/qavfcamerabase.mm b/src/plugins/multimedia/darwin/camera/qavfcamerabase.mm
index 9a8cd62e8..1cf7bb58c 100644
--- a/src/plugins/multimedia/darwin/camera/qavfcamerabase.mm
+++ b/src/plugins/multimedia/darwin/camera/qavfcamerabase.mm
@@ -218,7 +218,7 @@ void QAVFVideoDevices::updateCameraDevices()
if (cameras != m_cameraDevices) {
m_cameraDevices = cameras;
- videoInputsChanged();
+ emit videoInputsChanged();
}
}
diff --git a/src/plugins/multimedia/ffmpeg/qv4l2camera.cpp b/src/plugins/multimedia/ffmpeg/qv4l2camera.cpp
index fcab72faa..b635a7fce 100644
--- a/src/plugins/multimedia/ffmpeg/qv4l2camera.cpp
+++ b/src/plugins/multimedia/ffmpeg/qv4l2camera.cpp
@@ -54,7 +54,7 @@ QList<QCameraDevice> QV4L2CameraDevices::videoDevices() const
void QV4L2CameraDevices::checkCameras()
{
if (doCheckCameras())
- videoInputsChanged();
+ emit videoInputsChanged();
}
static const struct {
diff --git a/src/plugins/multimedia/gstreamer/qgstreamervideodevices.cpp b/src/plugins/multimedia/gstreamer/qgstreamervideodevices.cpp
index 3902d4e9e..510978880 100644
--- a/src/plugins/multimedia/gstreamer/qgstreamervideodevices.cpp
+++ b/src/plugins/multimedia/gstreamer/qgstreamervideodevices.cpp
@@ -122,7 +122,7 @@ void QGstreamerVideoDevices::addDevice(GstDevice *device)
if (gst_device_has_classes(device, "Video/Source")) {
gst_object_ref(device);
m_videoSources.push_back({device, QByteArray::number(m_idGenerator)});
- videoInputsChanged();
+ emit videoInputsChanged();
m_idGenerator++;
}
}
@@ -134,7 +134,7 @@ void QGstreamerVideoDevices::removeDevice(GstDevice *device)
if (it != m_videoSources.end()) {
m_videoSources.erase(it);
- videoInputsChanged();
+ emit videoInputsChanged();
}
gst_object_unref(device);
diff --git a/src/plugins/multimedia/windows/qwindowsvideodevices.cpp b/src/plugins/multimedia/windows/qwindowsvideodevices.cpp
index 305bb1227..2dae560b9 100644
--- a/src/plugins/multimedia/windows/qwindowsvideodevices.cpp
+++ b/src/plugins/multimedia/windows/qwindowsvideodevices.cpp
@@ -24,7 +24,7 @@ LRESULT QT_WIN_CALLBACK deviceNotificationWndProc(HWND hWnd, UINT message, WPARA
auto wmd = reinterpret_cast<QWindowsVideoDevices *>(GetWindowLongPtr(hWnd, GWLP_USERDATA));
if (wmd) {
if (wParam == DBT_DEVICEARRIVAL || wParam == DBT_DEVICEREMOVECOMPLETE) {
- wmd->videoInputsChanged();
+ emit wmd->videoInputsChanged();
}
}
}