summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2024-09-16 13:35:21 +0200
committerRémi Verschelde <rverschelde@gmail.com>2024-09-16 13:35:21 +0200
commit46d9db565bc8c8d9d14a51570ea788443afd5d1c (patch)
tree8be1ff1582b5db175b27be38f802f58f50c9ebf0
parent86b40fe637a8a48973480757d2812751de1a2fd1 (diff)
parentf31867d2b9e7b916e24683c024764bcc3d326a83 (diff)
downloadredot-engine-46d9db565bc8c8d9d14a51570ea788443afd5d1c.tar.gz
Merge pull request #96904 from RandomShaper/fix_previewer_deadlock
ResourceLoader: Fix deadlocks caused by the resource changed feature
-rw-r--r--core/io/resource_loader.cpp2
-rw-r--r--editor/editor_resource_preview.cpp4
2 files changed, 4 insertions, 2 deletions
diff --git a/core/io/resource_loader.cpp b/core/io/resource_loader.cpp
index f29f9eef98..94f6caf6eb 100644
--- a/core/io/resource_loader.cpp
+++ b/core/io/resource_loader.cpp
@@ -860,7 +860,7 @@ Ref<Resource> ResourceLoader::_load_complete_inner(LoadToken &p_load_token, Erro
}
}
core_bind::Semaphore done;
- MessageQueue::get_main_singleton()->push_callable(callable_mp(&done, &core_bind::Semaphore::post));
+ MessageQueue::get_main_singleton()->push_callable(callable_mp(&done, &core_bind::Semaphore::post).bind(1));
done.wait();
}
}
diff --git a/editor/editor_resource_preview.cpp b/editor/editor_resource_preview.cpp
index 956fdc5cfa..a50b2f3dcc 100644
--- a/editor/editor_resource_preview.cpp
+++ b/editor/editor_resource_preview.cpp
@@ -533,8 +533,10 @@ void EditorResourcePreview::stop() {
}
while (!exited.is_set()) {
+ // Sync pending work.
OS::get_singleton()->delay_usec(10000);
- RenderingServer::get_singleton()->sync(); //sync pending stuff, as thread may be blocked on rendering server
+ RenderingServer::get_singleton()->sync();
+ MessageQueue::get_singleton()->flush();
}
thread.wait_to_finish();