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_,