summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamuele Panzeri <samuele.panzeri@gmail.com>2023-04-27 18:34:30 +0200
committerSamuele Panzeri <samuele.panzeri@gmail.com>2023-04-27 20:28:22 +0200
commit4aaa2e6477c2536d55003f58a50b01a74b4af5e5 (patch)
tree7eba64423370776fa9dab607246b371217ae4f24
parent240ed28291ae87f06f7bcaa66e3d08530f210bf2 (diff)
downloadredot-engine-4aaa2e6477c2536d55003f58a50b01a74b4af5e5.tar.gz
Fix wait for thread not started
-rw-r--r--drivers/alsa/audio_driver_alsa.cpp4
-rw-r--r--drivers/alsamidi/midi_driver_alsamidi.cpp4
-rw-r--r--drivers/pulseaudio/audio_driver_pulseaudio.cpp4
-rw-r--r--drivers/wasapi/audio_driver_wasapi.cpp4
-rw-r--r--drivers/xaudio2/audio_driver_xaudio2.cpp4
-rw-r--r--editor/editor_file_system.cpp4
-rw-r--r--editor/editor_help.cpp3
-rw-r--r--modules/noise/noise_texture_2d.cpp4
-rw-r--r--modules/raycast/raycast_occlusion_cull.cpp4
-rw-r--r--platform/ios/export/export_plugin.cpp4
-rw-r--r--platform/web/export/export_plugin.cpp4
-rw-r--r--scene/3d/navigation_region_3d.cpp4
-rw-r--r--scene/main/http_request.cpp4
-rw-r--r--servers/audio/audio_driver_dummy.cpp4
-rw-r--r--servers/audio/effects/audio_effect_record.cpp4
-rw-r--r--servers/rendering/rendering_server_default.cpp4
16 files changed, 45 insertions, 18 deletions
diff --git a/drivers/alsa/audio_driver_alsa.cpp b/drivers/alsa/audio_driver_alsa.cpp
index e6e3af0928..966137920a 100644
--- a/drivers/alsa/audio_driver_alsa.cpp
+++ b/drivers/alsa/audio_driver_alsa.cpp
@@ -339,7 +339,9 @@ void AudioDriverALSA::finish_output_device() {
void AudioDriverALSA::finish() {
exit_thread.set();
- thread.wait_to_finish();
+ if (thread.is_started()) {
+ thread.wait_to_finish();
+ }
finish_output_device();
}
diff --git a/drivers/alsamidi/midi_driver_alsamidi.cpp b/drivers/alsamidi/midi_driver_alsamidi.cpp
index 81472fe70c..6b35987f70 100644
--- a/drivers/alsamidi/midi_driver_alsamidi.cpp
+++ b/drivers/alsamidi/midi_driver_alsamidi.cpp
@@ -207,7 +207,9 @@ Error MIDIDriverALSAMidi::open() {
void MIDIDriverALSAMidi::close() {
exit_thread.set();
- thread.wait_to_finish();
+ if (thread.is_started()) {
+ thread.wait_to_finish();
+ }
for (int i = 0; i < connected_inputs.size(); i++) {
snd_rawmidi_t *midi_in = connected_inputs[i].rawmidi_ptr;
diff --git a/drivers/pulseaudio/audio_driver_pulseaudio.cpp b/drivers/pulseaudio/audio_driver_pulseaudio.cpp
index 88fda35a3b..3114be9163 100644
--- a/drivers/pulseaudio/audio_driver_pulseaudio.cpp
+++ b/drivers/pulseaudio/audio_driver_pulseaudio.cpp
@@ -676,7 +676,9 @@ void AudioDriverPulseAudio::finish() {
}
exit_thread.set();
- thread.wait_to_finish();
+ if (thread.is_started()) {
+ thread.wait_to_finish();
+ }
finish_output_device();
diff --git a/drivers/wasapi/audio_driver_wasapi.cpp b/drivers/wasapi/audio_driver_wasapi.cpp
index 7d11293f9b..f877f78665 100644
--- a/drivers/wasapi/audio_driver_wasapi.cpp
+++ b/drivers/wasapi/audio_driver_wasapi.cpp
@@ -930,7 +930,9 @@ void AudioDriverWASAPI::unlock() {
void AudioDriverWASAPI::finish() {
exit_thread.set();
- thread.wait_to_finish();
+ if (thread.is_started()) {
+ thread.wait_to_finish();
+ }
finish_input_device();
finish_output_device();
diff --git a/drivers/xaudio2/audio_driver_xaudio2.cpp b/drivers/xaudio2/audio_driver_xaudio2.cpp
index 2b5f593a07..22063c52d9 100644
--- a/drivers/xaudio2/audio_driver_xaudio2.cpp
+++ b/drivers/xaudio2/audio_driver_xaudio2.cpp
@@ -151,7 +151,9 @@ void AudioDriverXAudio2::unlock() {
void AudioDriverXAudio2::finish() {
exit_thread.set();
- thread.wait_to_finish();
+ if (thread.is_started()) {
+ thread.wait_to_finish();
+ }
if (source_voice) {
source_voice->Stop(0);
diff --git a/editor/editor_file_system.cpp b/editor/editor_file_system.cpp
index 58080c08ae..0cdbddf4c4 100644
--- a/editor/editor_file_system.cpp
+++ b/editor/editor_file_system.cpp
@@ -1256,7 +1256,9 @@ void EditorFileSystem::_notification(int p_what) {
if (scanning_changes_done) {
set_process(false);
- thread_sources.wait_to_finish();
+ if (thread_sources.is_started()) {
+ thread_sources.wait_to_finish();
+ }
bool changed = _update_scan_actions();
_update_pending_script_classes();
if (changed) {
diff --git a/editor/editor_help.cpp b/editor/editor_help.cpp
index f2d852cc2b..76a3f58702 100644
--- a/editor/editor_help.cpp
+++ b/editor/editor_help.cpp
@@ -2371,9 +2371,6 @@ void EditorHelp::update_doc() {
void EditorHelp::cleanup_doc() {
_wait_for_thread();
- if (doc_gen_use_threads) {
- thread.wait_to_finish();
- }
memdelete(doc);
}
diff --git a/modules/noise/noise_texture_2d.cpp b/modules/noise/noise_texture_2d.cpp
index 0d5e778875..e4b2e0b4ac 100644
--- a/modules/noise/noise_texture_2d.cpp
+++ b/modules/noise/noise_texture_2d.cpp
@@ -44,7 +44,9 @@ NoiseTexture2D::~NoiseTexture2D() {
if (texture.is_valid()) {
RS::get_singleton()->free(texture);
}
- noise_thread.wait_to_finish();
+ if (noise_thread.is_started()) {
+ noise_thread.wait_to_finish();
+ }
}
void NoiseTexture2D::_bind_methods() {
diff --git a/modules/raycast/raycast_occlusion_cull.cpp b/modules/raycast/raycast_occlusion_cull.cpp
index 9394f71e40..8c03115f05 100644
--- a/modules/raycast/raycast_occlusion_cull.cpp
+++ b/modules/raycast/raycast_occlusion_cull.cpp
@@ -604,7 +604,9 @@ RaycastOcclusionCull::~RaycastOcclusionCull() {
for (KeyValue<RID, Scenario> &K : scenarios) {
Scenario &scenario = K.value;
if (scenario.commit_thread) {
- scenario.commit_thread->wait_to_finish();
+ if (scenario.commit_thread->is_started()) {
+ scenario.commit_thread->wait_to_finish();
+ }
memdelete(scenario.commit_thread);
}
diff --git a/platform/ios/export/export_plugin.cpp b/platform/ios/export/export_plugin.cpp
index 1b925ff3e3..9c0e4e39e8 100644
--- a/platform/ios/export/export_plugin.cpp
+++ b/platform/ios/export/export_plugin.cpp
@@ -1984,6 +1984,8 @@ EditorExportPlatformIOS::EditorExportPlatformIOS() {
EditorExportPlatformIOS::~EditorExportPlatformIOS() {
#ifndef ANDROID_ENABLED
quit_request.set();
- check_for_changes_thread.wait_to_finish();
+ if (check_for_changes_thread.is_started()) {
+ check_for_changes_thread.wait_to_finish();
+ }
#endif
}
diff --git a/platform/web/export/export_plugin.cpp b/platform/web/export/export_plugin.cpp
index 876efdf864..2fff628c85 100644
--- a/platform/web/export/export_plugin.cpp
+++ b/platform/web/export/export_plugin.cpp
@@ -687,5 +687,7 @@ EditorExportPlatformWeb::~EditorExportPlatformWeb() {
server->stop();
}
server_quit = true;
- server_thread.wait_to_finish();
+ if (server_thread.is_started()) {
+ server_thread.wait_to_finish();
+ }
}
diff --git a/scene/3d/navigation_region_3d.cpp b/scene/3d/navigation_region_3d.cpp
index 6af8999b89..aafc23193e 100644
--- a/scene/3d/navigation_region_3d.cpp
+++ b/scene/3d/navigation_region_3d.cpp
@@ -270,7 +270,9 @@ void NavigationRegion3D::bake_navigation_mesh(bool p_on_thread) {
void NavigationRegion3D::_bake_finished(Ref<NavigationMesh> p_nav_mesh) {
set_navigation_mesh(p_nav_mesh);
- bake_thread.wait_to_finish();
+ if (bake_thread.is_started()) {
+ bake_thread.wait_to_finish();
+ }
emit_signal(SNAME("bake_finished"));
}
diff --git a/scene/main/http_request.cpp b/scene/main/http_request.cpp
index 0d53f740db..ddc694f894 100644
--- a/scene/main/http_request.cpp
+++ b/scene/main/http_request.cpp
@@ -190,7 +190,9 @@ void HTTPRequest::cancel_request() {
set_process_internal(false);
} else {
thread_request_quit.set();
- thread.wait_to_finish();
+ if (thread.is_started()) {
+ thread.wait_to_finish();
+ }
}
file.unref();
diff --git a/servers/audio/audio_driver_dummy.cpp b/servers/audio/audio_driver_dummy.cpp
index 1d11c01b9a..e1bfcbaca1 100644
--- a/servers/audio/audio_driver_dummy.cpp
+++ b/servers/audio/audio_driver_dummy.cpp
@@ -136,7 +136,9 @@ void AudioDriverDummy::mix_audio(int p_frames, int32_t *p_buffer) {
void AudioDriverDummy::finish() {
if (use_threads) {
exit_thread.set();
- thread.wait_to_finish();
+ if (thread.is_started()) {
+ thread.wait_to_finish();
+ }
}
if (samples_in) {
diff --git a/servers/audio/effects/audio_effect_record.cpp b/servers/audio/effects/audio_effect_record.cpp
index e82f6e518e..cc6ac31d29 100644
--- a/servers/audio/effects/audio_effect_record.cpp
+++ b/servers/audio/effects/audio_effect_record.cpp
@@ -120,7 +120,9 @@ void AudioEffectRecordInstance::init() {
}
void AudioEffectRecordInstance::finish() {
- io_thread.wait_to_finish();
+ if (io_thread.is_started()) {
+ io_thread.wait_to_finish();
+ }
}
AudioEffectRecordInstance::~AudioEffectRecordInstance() {
diff --git a/servers/rendering/rendering_server_default.cpp b/servers/rendering/rendering_server_default.cpp
index 6017eff55e..5f14245307 100644
--- a/servers/rendering/rendering_server_default.cpp
+++ b/servers/rendering/rendering_server_default.cpp
@@ -237,7 +237,9 @@ void RenderingServerDefault::init() {
void RenderingServerDefault::finish() {
if (create_thread) {
command_queue.push(this, &RenderingServerDefault::_thread_exit);
- thread.wait_to_finish();
+ if (thread.is_started()) {
+ thread.wait_to_finish();
+ }
} else {
_finish();
}