diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2019-03-01 18:17:27 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-03-01 18:17:27 +0100 |
commit | e47915f7cd9336a37d08891a046a4bd778572a73 (patch) | |
tree | 878ab2dee0cbf6d7e8d675e35cc48e599a4d5cfd | |
parent | 994bdc9adca4ff96345c1e732f832ef7a6ea46c7 (diff) | |
parent | f04bff349bbfb41a9f774edac3910689b9f10918 (diff) |
Merge pull request #26449 from marcelofg55/audio_input_crash
Fix possible crash when AudioDriver::capture_start fails
-rw-r--r-- | servers/audio/audio_stream.cpp | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/servers/audio/audio_stream.cpp b/servers/audio/audio_stream.cpp index 12ee98595d..a6c262d10f 100644 --- a/servers/audio/audio_stream.cpp +++ b/servers/audio/audio_stream.cpp @@ -186,6 +186,10 @@ float AudioStreamPlaybackMicrophone::get_stream_sampling_rate() { void AudioStreamPlaybackMicrophone::start(float p_from_pos) { + if (active) { + return; + } + if (!GLOBAL_GET("audio/enable_audio_input")) { WARN_PRINTS("Need to enable Project settings > Audio > Enable Audio Input option to use capturing."); return; @@ -193,15 +197,17 @@ void AudioStreamPlaybackMicrophone::start(float p_from_pos) { input_ofs = 0; - AudioDriver::get_singleton()->capture_start(); - - active = true; - _begin_resample(); + if (AudioDriver::get_singleton()->capture_start() == OK) { + active = true; + _begin_resample(); + } } void AudioStreamPlaybackMicrophone::stop() { - AudioDriver::get_singleton()->capture_stop(); - active = false; + if (active) { + AudioDriver::get_singleton()->capture_stop(); + active = false; + } } bool AudioStreamPlaybackMicrophone::is_playing() const { |