29class QDarwinAudioDevices :
public QPlatformAudioDevices
32 QDarwinAudioDevices();
33 ~QDarwinAudioDevices() override;
35 QPlatformAudioSource *createAudioSource(
const QAudioDevice &,
const QAudioFormat &,
36 QObject *parent) override;
37 QPlatformAudioSink *createAudioSink(
const QAudioDevice &,
const QAudioFormat &,
38 QObject *parent) override;
40 using QPlatformAudioDevices::updateAudioInputsCache;
41 using QPlatformAudioDevices::updateAudioOutputsCache;
43 QLatin1String backendName()
const override {
return QLatin1String{
"CoreAudio" }; }
46 QList<QAudioDevice> findAudioInputs()
const override;
47 QList<QAudioDevice> findAudioOutputs()
const override;
49 struct DispatchQueueDeleter
51 void operator()(dispatch_queue_t queue)
const
54 dispatch_release(queue);
57 using UniqueDispatchQueue =
58 std::unique_ptr<std::remove_pointer_t<dispatch_queue_t>, DispatchQueueDeleter>;
60 std::unique_ptr<AudioObjectPropertyListenerBlock> m_deviceListenerBlock;
61 UniqueDispatchQueue m_listenerQueue;
62 std::shared_ptr<
bool> m_destroyed = std::make_shared<
bool>(
false);