Pārlūkot izejas kodu

Merge pull request #96261 from jitspoe/3.x.audio_random_pitch_crash_fix

[3.x] Fix random multithreaded crash that happens when setting the audio stream on a AudioStreamRandomPitch stream.
lawnjelly 11 mēneši atpakaļ
vecāks
revīzija
147f032936
1 mainītis faili ar 2 papildinājumiem un 0 dzēšanām
  1. 2 0
      servers/audio/audio_stream.cpp

+ 2 - 0
servers/audio/audio_stream.cpp

@@ -231,12 +231,14 @@ AudioStreamPlaybackMicrophone::AudioStreamPlaybackMicrophone() {
 ////////////////////////////////
 ////////////////////////////////
 
 
 void AudioStreamRandomPitch::set_audio_stream(const Ref<AudioStream> &p_audio_stream) {
 void AudioStreamRandomPitch::set_audio_stream(const Ref<AudioStream> &p_audio_stream) {
+	AudioServer::get_singleton()->lock();
 	audio_stream = p_audio_stream;
 	audio_stream = p_audio_stream;
 	if (audio_stream.is_valid()) {
 	if (audio_stream.is_valid()) {
 		for (Set<AudioStreamPlaybackRandomPitch *>::Element *E = playbacks.front(); E; E = E->next()) {
 		for (Set<AudioStreamPlaybackRandomPitch *>::Element *E = playbacks.front(); E; E = E->next()) {
 			E->get()->playback = audio_stream->instance_playback();
 			E->get()->playback = audio_stream->instance_playback();
 		}
 		}
 	}
 	}
+	AudioServer::get_singleton()->unlock();
 }
 }
 
 
 Ref<AudioStream> AudioStreamRandomPitch::get_audio_stream() const {
 Ref<AudioStream> AudioStreamRandomPitch::get_audio_stream() const {