From 42659b0d9f29967a89d5055f23decacb81018509 Mon Sep 17 00:00:00 2001 From: Juan Linietsky Date: Fri, 1 Sep 2017 16:42:50 -0300 Subject: [PATCH] Fix freeze on exit on audiostreamplayers when setting invalid stream, closes #10093 --- scene/2d/audio_stream_player_2d.cpp | 4 +++- scene/3d/audio_stream_player_3d.cpp | 4 ++-- scene/audio/audio_player.cpp | 4 ++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/scene/2d/audio_stream_player_2d.cpp b/scene/2d/audio_stream_player_2d.cpp index eb186a8e1f1..39d3f2d6bf7 100644 --- a/scene/2d/audio_stream_player_2d.cpp +++ b/scene/2d/audio_stream_player_2d.cpp @@ -246,12 +246,14 @@ void AudioStreamPlayer2D::set_stream(Ref p_stream) { stream = p_stream; stream_playback = p_stream->instance_playback(); + AudioServer::get_singleton()->unlock(); + if (stream_playback.is_null()) { stream.unref(); ERR_FAIL_COND(stream_playback.is_null()); } - AudioServer::get_singleton()->unlock(); + } Ref AudioStreamPlayer2D::get_stream() const { diff --git a/scene/3d/audio_stream_player_3d.cpp b/scene/3d/audio_stream_player_3d.cpp index 6efdf25f0de..1ad36102ba2 100644 --- a/scene/3d/audio_stream_player_3d.cpp +++ b/scene/3d/audio_stream_player_3d.cpp @@ -555,12 +555,12 @@ void AudioStreamPlayer3D::set_stream(Ref p_stream) { stream = p_stream; stream_playback = p_stream->instance_playback(); + AudioServer::get_singleton()->unlock(); + if (stream_playback.is_null()) { stream.unref(); ERR_FAIL_COND(stream_playback.is_null()); } - - AudioServer::get_singleton()->unlock(); } Ref AudioStreamPlayer3D::get_stream() const { diff --git a/scene/audio/audio_player.cpp b/scene/audio/audio_player.cpp index 5d71f702dfb..8bd924e7ce6 100644 --- a/scene/audio/audio_player.cpp +++ b/scene/audio/audio_player.cpp @@ -139,12 +139,12 @@ void AudioStreamPlayer::set_stream(Ref p_stream) { stream = p_stream; stream_playback = p_stream->instance_playback(); + AudioServer::get_singleton()->unlock(); + if (stream_playback.is_null()) { stream.unref(); ERR_FAIL_COND(stream_playback.is_null()); } - - AudioServer::get_singleton()->unlock(); } Ref AudioStreamPlayer::get_stream() const {