Skip to content
Merged
Prev Previous commit
Next Next commit
Apply some more changes
Apply some more changes that have been made to `AudioSdl` in the
recording branch.
  • Loading branch information
michaelgregorius committed Aug 4, 2024
commit 2f1736a9f567ff0d53c33baaaac89970c7f9d025
2 changes: 1 addition & 1 deletion include/AudioSdl.h
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ class AudioSdl : public AudioDevice
void saveSettings() override;

private:
QComboBox* m_playbackDeviceComboBox;
QComboBox* m_playbackDeviceComboBox = nullptr;
QComboBox* m_inputDeviceComboBox = nullptr;

static QString s_systemDefaultDevice;
Expand Down
39 changes: 16 additions & 23 deletions src/core/audio/AudioSdl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,9 @@
namespace lmms
{

constexpr char const* const c_sectionSDL = "audiosdl";
constexpr char const* const c_playbackDeviceSDL = "device";
constexpr char const* const c_inputDeviceSDL = "inputdevice";
constexpr char const* const SectionSDL = "audiosdl";
constexpr char const* const PlaybackDeviceSDL = "device";
constexpr char const* const InputDeviceSDL = "inputdevice";

AudioSdl::AudioSdl( bool & _success_ful, AudioEngine* _audioEngine ) :
AudioDevice( DEFAULT_CHANNELS, _audioEngine ),
Expand Down Expand Up @@ -83,11 +83,11 @@ AudioSdl::AudioSdl( bool & _success_ful, AudioEngine* _audioEngine ) :
SDL_AudioSpec actual;

#ifdef LMMS_HAVE_SDL2
const QString playbackDevice = ConfigManager::inst()->value(c_sectionSDL, c_playbackDeviceSDL);
const bool isDefaultPlayback = playbackDevice.isEmpty();
const auto playbackDevice = ConfigManager::inst()->value(SectionSDL, PlaybackDeviceSDL).toStdString();
const bool isDefaultPlayback = playbackDevice.empty();

// Try with the configured device
const auto playbackDeviceCStr = isDefaultPlayback ? nullptr : playbackDevice.toLocal8Bit().data();
const auto playbackDeviceCStr = isDefaultPlayback ? nullptr : playbackDevice.c_str();
m_outputDevice = SDL_OpenAudioDevice(playbackDeviceCStr, 0, &m_audioHandle, &actual, 0);

// If we did not get a device ID try again with the default device if we did not try that before
Expand Down Expand Up @@ -121,11 +121,11 @@ AudioSdl::AudioSdl( bool & _success_ful, AudioEngine* _audioEngine ) :
m_inputAudioHandle = m_audioHandle;
m_inputAudioHandle.callback = sdlInputAudioCallback;

const QString inputDevice = ConfigManager::inst()->value(c_sectionSDL, c_inputDeviceSDL);
const bool isDefaultInput = inputDevice.isEmpty();
const auto inputDevice = ConfigManager::inst()->value(SectionSDL, InputDeviceSDL).toStdString();
const bool isDefaultInput = inputDevice.empty();

// Try with the configured device
const auto inputDeviceCStr = isDefaultInput ? nullptr : inputDevice.toLocal8Bit().data();
const auto inputDeviceCStr = isDefaultInput ? nullptr : inputDevice.c_str();
m_inputDevice = SDL_OpenAudioDevice (inputDeviceCStr, 1, &m_inputAudioHandle, &actual, 0);

// If we did not get a device ID try again with the default device if we did not try that before
Expand Down Expand Up @@ -324,15 +324,8 @@ AudioSdl::setupWidget::setupWidget( QWidget * _parent ) :
m_playbackDeviceComboBox->addItem(deviceName);
}

QString playbackDevice = ConfigManager::inst()->value(c_sectionSDL, c_playbackDeviceSDL);
if (playbackDevice.isEmpty())
{
m_playbackDeviceComboBox->setCurrentText(s_systemDefaultDevice);
}
else
{
m_playbackDeviceComboBox->setCurrentText(playbackDevice);
}
const auto playbackDevice = ConfigManager::inst()->value(SectionSDL, PlaybackDeviceSDL);
m_playbackDeviceComboBox->setCurrentText(playbackDevice.isEmpty() ? s_systemDefaultDevice : playbackDevice);
#endif

form->addRow(tr("Playback device"), m_playbackDeviceComboBox);
Expand All @@ -350,7 +343,7 @@ AudioSdl::setupWidget::setupWidget( QWidget * _parent ) :
}

// Set the current device to the one in the configuration
const auto inputDevice = ConfigManager::inst()->value(c_sectionSDL, c_inputDeviceSDL);
const auto inputDevice = ConfigManager::inst()->value(SectionSDL, InputDeviceSDL);
if (inputDevice.isEmpty())
{
m_inputDeviceComboBox->setCurrentText(s_systemDefaultDevice);
Expand All @@ -373,22 +366,22 @@ void AudioSdl::setupWidget::saveSettings()
if (currentPlaybackDevice == s_systemDefaultDevice)
{
// Represent the default input device with an empty string
ConfigManager::inst()->setValue(c_sectionSDL, c_playbackDeviceSDL, "");
ConfigManager::inst()->setValue(SectionSDL, PlaybackDeviceSDL, "");
}
else if (!currentPlaybackDevice.isEmpty())
{
ConfigManager::inst()->setValue(c_sectionSDL, c_playbackDeviceSDL, currentPlaybackDevice);
ConfigManager::inst()->setValue(SectionSDL, PlaybackDeviceSDL, currentPlaybackDevice);
}

const auto currentInputDevice = m_inputDeviceComboBox->currentText();
if (currentInputDevice == s_systemDefaultDevice)
{
// Represent the default input device with an empty string
ConfigManager::inst()->setValue(c_sectionSDL, c_inputDeviceSDL, "");
ConfigManager::inst()->setValue(SectionSDL, InputDeviceSDL, "");
}
else if (!currentInputDevice.isEmpty())
{
ConfigManager::inst()->setValue(c_sectionSDL, c_inputDeviceSDL, currentInputDevice);
ConfigManager::inst()->setValue(SectionSDL, InputDeviceSDL, currentInputDevice);
}
}

Expand Down