diff --git a/Source/Core/AudioCommon/AudioCommon.cpp b/Source/Core/AudioCommon/AudioCommon.cpp index dd0b31b916..642051f166 100644 --- a/Source/Core/AudioCommon/AudioCommon.cpp +++ b/Source/Core/AudioCommon/AudioCommon.cpp @@ -117,6 +117,30 @@ std::vector GetSoundBackends() return backends; } +bool SupportsDPL2Decoder(const std::string& backend) +{ +#ifndef __APPLE__ + if (backend == BACKEND_OPENAL) + return true; +#endif + if (backend == BACKEND_PULSEAUDIO) + return true; + return false; +} + +bool SupportsLatencyControl(const std::string& backend) +{ + return backend == BACKEND_OPENAL; +} + +bool SupportsVolumeChanges(const std::string& backend) +{ + // FIXME: this one should ask the backend whether it supports it. + // but getting the backend from string etc. is probably + // too much just to enable/disable a stupid slider... + return backend == BACKEND_COREAUDIO || backend == BACKEND_OPENAL || backend == BACKEND_XAUDIO2; +} + void UpdateSoundStream() { if (g_sound_stream) diff --git a/Source/Core/AudioCommon/AudioCommon.h b/Source/Core/AudioCommon/AudioCommon.h index 9b70a3ce4b..1d6bf5fc56 100644 --- a/Source/Core/AudioCommon/AudioCommon.h +++ b/Source/Core/AudioCommon/AudioCommon.h @@ -18,6 +18,9 @@ namespace AudioCommon void InitSoundStream(); void ShutdownSoundStream(); std::vector GetSoundBackends(); +bool SupportsDPL2Decoder(const std::string& backend); +bool SupportsLatencyControl(const std::string& backend); +bool SupportsVolumeChanges(const std::string& backend); void UpdateSoundStream(); void ClearAudioBuffer(bool mute); void SendAIBuffer(const short* samples, unsigned int num_samples); diff --git a/Source/Core/DolphinWX/Config/AudioConfigPane.cpp b/Source/Core/DolphinWX/Config/AudioConfigPane.cpp index bd626e437c..ceb344cf0c 100644 --- a/Source/Core/DolphinWX/Config/AudioConfigPane.cpp +++ b/Source/Core/DolphinWX/Config/AudioConfigPane.cpp @@ -55,14 +55,9 @@ void AudioConfigPane::InitializeGUI() m_audio_backend_choice->SetToolTip( _("Changing this will have no effect while the emulator is running.")); m_audio_latency_spinctrl->SetToolTip(_( - "Sets the latency (in ms). Higher values may reduce audio crackling. OpenAL backend only.")); -#if defined(__APPLE__) + "Sets the latency (in ms). Higher values may reduce audio crackling. Certain backends only.")); m_dpl2_decoder_checkbox->SetToolTip( - _("Enables Dolby Pro Logic II emulation using 5.1 surround. Not available on OS X.")); -#else - m_dpl2_decoder_checkbox->SetToolTip( - _("Enables Dolby Pro Logic II emulation using 5.1 surround. OpenAL or Pulse backends only.")); -#endif + _("Enables Dolby Pro Logic II emulation using 5.1 surround. Certain backends only.")); const int space5 = FromDIP(5); @@ -133,14 +128,9 @@ void AudioConfigPane::LoadGUIValues() void AudioConfigPane::ToggleBackendSpecificControls(const std::string& backend) { - m_dpl2_decoder_checkbox->Enable(backend == BACKEND_OPENAL || backend == BACKEND_PULSEAUDIO); - m_audio_latency_spinctrl->Enable(backend == BACKEND_OPENAL); - - // FIXME: this one should ask the backend whether it supports it. - // but getting the backend from string etc. is probably - // too much just to enable/disable a stupid slider... - m_volume_slider->Enable(backend == BACKEND_COREAUDIO || backend == BACKEND_OPENAL || - backend == BACKEND_XAUDIO2); + m_dpl2_decoder_checkbox->Enable(AudioCommon::SupportsDPL2Decoder(backend)); + m_audio_latency_spinctrl->Enable(AudioCommon::SupportsLatencyControl(backend)); + m_volume_slider->Enable(AudioCommon::SupportsVolumeChanges(backend)); } void AudioConfigPane::RefreshGUI()