Преглед изворни кода

Merge pull request #26449 from marcelofg55/audio_input_crash

Fix possible crash when AudioDriver::capture_start fails
Rémi Verschelde пре 6 година
родитељ
комит
e47915f7cd
1 измењених фајлова са 12 додато и 6 уклоњено
  1. 12 6
      servers/audio/audio_stream.cpp

+ 12 - 6
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 {