summaryrefslogtreecommitdiff
path: root/src/citra_qt/configure_audio.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/citra_qt/configure_audio.cpp')
-rw-r--r--src/citra_qt/configure_audio.cpp33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/citra_qt/configure_audio.cpp b/src/citra_qt/configure_audio.cpp
index 3cdd4c780..3ddcf9232 100644
--- a/src/citra_qt/configure_audio.cpp
+++ b/src/citra_qt/configure_audio.cpp
@@ -2,6 +2,9 @@
2// Licensed under GPLv2 or any later version 2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included. 3// Refer to the license.txt file included.
4 4
5#include <memory>
6#include "audio_core/audio_core.h"
7#include "audio_core/sink.h"
5#include "audio_core/sink_details.h" 8#include "audio_core/sink_details.h"
6#include "citra_qt/configure_audio.h" 9#include "citra_qt/configure_audio.h"
7#include "core/settings.h" 10#include "core/settings.h"
@@ -18,6 +21,8 @@ ConfigureAudio::ConfigureAudio(QWidget* parent)
18 } 21 }
19 22
20 this->setConfiguration(); 23 this->setConfiguration();
24 connect(ui->output_sink_combo_box, SIGNAL(currentIndexChanged(int)), this,
25 SLOT(updateAudioDevices(int)));
21} 26}
22 27
23ConfigureAudio::~ConfigureAudio() {} 28ConfigureAudio::~ConfigureAudio() {}
@@ -33,6 +38,19 @@ void ConfigureAudio::setConfiguration() {
33 ui->output_sink_combo_box->setCurrentIndex(new_sink_index); 38 ui->output_sink_combo_box->setCurrentIndex(new_sink_index);
34 39
35 ui->toggle_audio_stretching->setChecked(Settings::values.enable_audio_stretching); 40 ui->toggle_audio_stretching->setChecked(Settings::values.enable_audio_stretching);
41
42 // The device list cannot be pre-populated (nor listed) until the output sink is known.
43 updateAudioDevices(new_sink_index);
44
45 int new_device_index = -1;
46 for (int index = 0; index < ui->audio_device_combo_box->count(); index++) {
47 if (ui->audio_device_combo_box->itemText(index).toStdString() ==
48 Settings::values.audio_device_id) {
49 new_device_index = index;
50 break;
51 }
52 }
53 ui->audio_device_combo_box->setCurrentIndex(new_device_index);
36} 54}
37 55
38void ConfigureAudio::applyConfiguration() { 56void ConfigureAudio::applyConfiguration() {
@@ -40,5 +58,20 @@ void ConfigureAudio::applyConfiguration() {
40 ui->output_sink_combo_box->itemText(ui->output_sink_combo_box->currentIndex()) 58 ui->output_sink_combo_box->itemText(ui->output_sink_combo_box->currentIndex())
41 .toStdString(); 59 .toStdString();
42 Settings::values.enable_audio_stretching = ui->toggle_audio_stretching->isChecked(); 60 Settings::values.enable_audio_stretching = ui->toggle_audio_stretching->isChecked();
61 Settings::values.audio_device_id =
62 ui->audio_device_combo_box->itemText(ui->audio_device_combo_box->currentIndex())
63 .toStdString();
43 Settings::Apply(); 64 Settings::Apply();
44} 65}
66
67void ConfigureAudio::updateAudioDevices(int sink_index) {
68 ui->audio_device_combo_box->clear();
69 ui->audio_device_combo_box->addItem("auto");
70
71 std::string sink_id = ui->output_sink_combo_box->itemText(sink_index).toStdString();
72 std::vector<std::string> device_list =
73 AudioCore::GetSinkDetails(sink_id).factory()->GetDeviceList();
74 for (const auto& device : device_list) {
75 ui->audio_device_combo_box->addItem(device.c_str());
76 }
77}