diff options
author | Mat M <mathew1800@gmail.com> | 2017-04-04 19:14:08 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-04-04 19:14:08 +0200 |
commit | b29239506f81576ecab6f46688274ec031139c70 (patch) | |
tree | 523eade6ec8d6779a4a55a46f1471079b88bf4f9 /src/citra_qt/configuration/configure_audio.cpp | |
parent | Merge pull request #2622 from jfmherokiller/socufix (diff) | |
parent | citra-qt: Move config dialog code to its own directory (diff) | |
download | yuzu-b29239506f81576ecab6f46688274ec031139c70.tar yuzu-b29239506f81576ecab6f46688274ec031139c70.tar.gz yuzu-b29239506f81576ecab6f46688274ec031139c70.tar.bz2 yuzu-b29239506f81576ecab6f46688274ec031139c70.tar.lz yuzu-b29239506f81576ecab6f46688274ec031139c70.tar.xz yuzu-b29239506f81576ecab6f46688274ec031139c70.tar.zst yuzu-b29239506f81576ecab6f46688274ec031139c70.zip |
Diffstat (limited to 'src/citra_qt/configuration/configure_audio.cpp')
-rw-r--r-- | src/citra_qt/configuration/configure_audio.cpp | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/src/citra_qt/configuration/configure_audio.cpp b/src/citra_qt/configuration/configure_audio.cpp new file mode 100644 index 000000000..3fd1d127a --- /dev/null +++ b/src/citra_qt/configuration/configure_audio.cpp @@ -0,0 +1,77 @@ +// Copyright 2016 Citra Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#include <memory> +#include "audio_core/audio_core.h" +#include "audio_core/sink.h" +#include "audio_core/sink_details.h" +#include "citra_qt/configuration/configure_audio.h" +#include "core/settings.h" +#include "ui_configure_audio.h" + +ConfigureAudio::ConfigureAudio(QWidget* parent) + : QWidget(parent), ui(std::make_unique<Ui::ConfigureAudio>()) { + ui->setupUi(this); + + ui->output_sink_combo_box->clear(); + ui->output_sink_combo_box->addItem("auto"); + for (const auto& sink_detail : AudioCore::g_sink_details) { + ui->output_sink_combo_box->addItem(sink_detail.id); + } + + this->setConfiguration(); + connect(ui->output_sink_combo_box, SIGNAL(currentIndexChanged(int)), this, + SLOT(updateAudioDevices(int))); +} + +ConfigureAudio::~ConfigureAudio() {} + +void ConfigureAudio::setConfiguration() { + int new_sink_index = 0; + for (int index = 0; index < ui->output_sink_combo_box->count(); index++) { + if (ui->output_sink_combo_box->itemText(index).toStdString() == Settings::values.sink_id) { + new_sink_index = index; + break; + } + } + ui->output_sink_combo_box->setCurrentIndex(new_sink_index); + + ui->toggle_audio_stretching->setChecked(Settings::values.enable_audio_stretching); + + // The device list cannot be pre-populated (nor listed) until the output sink is known. + updateAudioDevices(new_sink_index); + + int new_device_index = -1; + for (int index = 0; index < ui->audio_device_combo_box->count(); index++) { + if (ui->audio_device_combo_box->itemText(index).toStdString() == + Settings::values.audio_device_id) { + new_device_index = index; + break; + } + } + ui->audio_device_combo_box->setCurrentIndex(new_device_index); +} + +void ConfigureAudio::applyConfiguration() { + Settings::values.sink_id = + ui->output_sink_combo_box->itemText(ui->output_sink_combo_box->currentIndex()) + .toStdString(); + Settings::values.enable_audio_stretching = ui->toggle_audio_stretching->isChecked(); + Settings::values.audio_device_id = + ui->audio_device_combo_box->itemText(ui->audio_device_combo_box->currentIndex()) + .toStdString(); + Settings::Apply(); +} + +void ConfigureAudio::updateAudioDevices(int sink_index) { + ui->audio_device_combo_box->clear(); + ui->audio_device_combo_box->addItem("auto"); + + std::string sink_id = ui->output_sink_combo_box->itemText(sink_index).toStdString(); + std::vector<std::string> device_list = + AudioCore::GetSinkDetails(sink_id).factory()->GetDeviceList(); + for (const auto& device : device_list) { + ui->audio_device_combo_box->addItem(device.c_str()); + } +} |