From b8914c56c319d9f52bd9e94a67b3ecba56cb2f41 Mon Sep 17 00:00:00 2001 From: Sotonye Atemie Date: Sat, 1 Mar 2025 10:29:08 -0500 Subject: [PATCH] Refresh channel range when switching devices --- src/core/audio/AudioPortAudio.cpp | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/core/audio/AudioPortAudio.cpp b/src/core/audio/AudioPortAudio.cpp index 6eebb36776f..439b6dab3b7 100644 --- a/src/core/audio/AudioPortAudio.cpp +++ b/src/core/audio/AudioPortAudio.cpp @@ -268,6 +268,10 @@ class AudioPortAudioSetupWidget::DeviceSpecWidget : public QGroupBox m_channelSpinBox->setModel(&m_channelModel); layout->addRow(tr(rowHeader), m_deviceComboBox); layout->addRow(tr("Channels"), m_channelSpinBox); + + connect(m_deviceComboBox, qOverload(&QComboBox::currentIndexChanged), this, [&]{ + refreshChannelRange(); + }); } void refreshFromConfig(PaHostApiIndex backendIndex) @@ -291,18 +295,22 @@ class AudioPortAudioSetupWidget::DeviceSpecWidget : public QGroupBox const auto selectedDeviceName = ConfigManager::inst()->value(tag(), deviceNameAttribute(m_direction)); const auto selectedDeviceIndex = std::max(0, m_deviceComboBox->findText(selectedDeviceName)); m_deviceComboBox->setCurrentIndex(selectedDeviceIndex); + + refreshChannelRange(); const auto defaultNumChannels = QString::number(DEFAULT_CHANNELS); const auto selectedNumChannels - = ConfigManager::inst()->value(tag(), channelsAttribute(m_direction), defaultNumChannels); + = ConfigManager::inst()->value(tag(), channelsAttribute(m_direction), defaultNumChannels); m_channelModel.setValue(selectedNumChannels.toInt()); + } - const auto deviceIndex = m_deviceComboBox->currentData().toInt(); + void refreshChannelRange() + { + const auto deviceIndex = m_deviceComboBox->currentData().toInt(); const auto deviceSpec = DeviceSpec::loadFromIndex(deviceIndex, m_direction); - m_channelModel.setRange(1, deviceSpec.maxChannels()); m_channelSpinBox->setNumDigits(QString::number(deviceSpec.maxChannels()).length()); - } + } void saveToConfig() {