From 5120afc236c9d6425bc77ea03c93a7a5d5169a08 Mon Sep 17 00:00:00 2001 From: Eoin O'Neill Date: Fri, 9 Dec 2022 22:39:14 -0800 Subject: Fix crash caused by invalid mix_rate assignment due to bogus project settings. We'll default to a sensible value in the case that a user has somehow managed to modify the configuration file incorrectly. Closes 69819 (cherry picked from commit 5a08091168782a924cd3a23baf31c5cd4cd63906) --- servers/audio_server.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'servers/audio_server.cpp') diff --git a/servers/audio_server.cpp b/servers/audio_server.cpp index 0344bf322d..49991e41d3 100644 --- a/servers/audio_server.cpp +++ b/servers/audio_server.cpp @@ -115,6 +115,20 @@ void AudioDriver::input_buffer_write(int32_t sample) { } } +int AudioDriver::_get_configured_mix_rate() { + StringName audio_driver_setting = "audio/driver/mix_rate"; + int mix_rate = GLOBAL_GET(audio_driver_setting); + + // In the case of invalid mix rate, let's default to a sensible value.. + if (mix_rate <= 0) { + WARN_PRINT(vformat("Invalid mix rate of %d, consider reassigning setting \'%s\'. \nDefaulting mix rate to value %d.", + mix_rate, audio_driver_setting, AudioDriverManager::DEFAULT_MIX_RATE)); + mix_rate = AudioDriverManager::DEFAULT_MIX_RATE; + } + + return mix_rate; +} + AudioDriver::SpeakerMode AudioDriver::get_speaker_mode_by_total_channels(int p_channels) const { switch (p_channels) { case 4: -- cgit v1.2.3