summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2019-03-01 18:17:27 +0100
committerGitHub <noreply@github.com>2019-03-01 18:17:27 +0100
commite47915f7cd9336a37d08891a046a4bd778572a73 (patch)
tree878ab2dee0cbf6d7e8d675e35cc48e599a4d5cfd
parent994bdc9adca4ff96345c1e732f832ef7a6ea46c7 (diff)
parentf04bff349bbfb41a9f774edac3910689b9f10918 (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.cpp18
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 {