From e1ccc1ebb8bdeea13c19865948dc6cf2ab2f8fb9 Mon Sep 17 00:00:00 2001 From: Dan Paulat Date: Mon, 27 Nov 2023 06:09:43 -0600 Subject: [PATCH] Audio should follow default device --- .../source/scwx/qt/manager/media_manager.cpp | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/scwx-qt/source/scwx/qt/manager/media_manager.cpp b/scwx-qt/source/scwx/qt/manager/media_manager.cpp index d5ad895b..53caba8c 100644 --- a/scwx-qt/source/scwx/qt/manager/media_manager.cpp +++ b/scwx-qt/source/scwx/qt/manager/media_manager.cpp @@ -3,6 +3,7 @@ #include #include +#include #include #include @@ -21,15 +22,15 @@ class MediaManager::Impl public: explicit Impl(MediaManager* self) : self_ {self}, + mediaDevices_ {new QMediaDevices(self)}, mediaPlayer_ {new QMediaPlayer(self)}, audioOutput_ {new QAudioOutput(self)} { - audioOutput_->setVolume(1.0f); - mediaPlayer_->setAudioOutput(audioOutput_); - logger_->debug("Audio device: {}", audioOutput_->device().description().toStdString()); + mediaPlayer_->setAudioOutput(audioOutput_); + ConnectSignals(); } @@ -39,8 +40,9 @@ public: MediaManager* self_; - QMediaPlayer* mediaPlayer_; - QAudioOutput* audioOutput_; + QMediaDevices* mediaDevices_; + QMediaPlayer* mediaPlayer_; + QAudioOutput* audioOutput_; }; MediaManager::MediaManager() : p(std::make_unique(this)) {} @@ -48,6 +50,13 @@ MediaManager::~MediaManager() = default; void MediaManager::Impl::ConnectSignals() { + QObject::connect( + mediaDevices_, + &QMediaDevices::audioOutputsChanged, + self_, + [this]() + { audioOutput_->setDevice(QMediaDevices::defaultAudioOutput()); }); + QObject::connect(audioOutput_, &QAudioOutput::deviceChanged, self_,