diff options
author | Pedro J. Estébanez <pedrojrulez@gmail.com> | 2024-05-27 13:20:45 +0200 |
---|---|---|
committer | Pedro J. Estébanez <pedrojrulez@gmail.com> | 2024-05-31 09:42:37 +0200 |
commit | f61c63e3a1d525ccc204f64ad813c4ba77077468 (patch) | |
tree | 9f438a95385b0ebc8e2e2141444e2a55fe1d83c7 | |
parent | e7dd6f11ed1ed4d72186d3a90d5f4ef42e79c4d0 (diff) | |
download | redot-engine-f61c63e3a1d525ccc204f64ad813c4ba77077468.tar.gz |
Avoid editor error reporting using resource loader thread's call queues
-rw-r--r-- | core/io/resource_loader.h | 4 | ||||
-rw-r--r-- | core/object/message_queue.h | 1 | ||||
-rw-r--r-- | editor/gui/editor_toaster.cpp | 2 |
3 files changed, 4 insertions, 3 deletions
diff --git a/core/io/resource_loader.h b/core/io/resource_loader.h index 486f7bbf37..11abb4dc18 100644 --- a/core/io/resource_loader.h +++ b/core/io/resource_loader.h @@ -226,7 +226,7 @@ public: // Loaders can safely use this regardless which thread they are running on. static void notify_load_error(const String &p_err) { if (err_notify) { - callable_mp_static(err_notify).call_deferred(p_err); + MessageQueue::get_main_singleton()->push_callable(callable_mp_static(err_notify).bind(p_err)); } } static void set_error_notify_func(ResourceLoadErrorNotify p_err_notify) { @@ -239,7 +239,7 @@ public: if (Thread::get_caller_id() == Thread::get_main_id()) { dep_err_notify(p_path, p_dependency, p_type); } else { - callable_mp_static(dep_err_notify).call_deferred(p_path, p_dependency, p_type); + MessageQueue::get_main_singleton()->push_callable(callable_mp_static(dep_err_notify).bind(p_path, p_dependency, p_type)); } } } diff --git a/core/object/message_queue.h b/core/object/message_queue.h index 9f567e4dd0..673eb3845b 100644 --- a/core/object/message_queue.h +++ b/core/object/message_queue.h @@ -164,6 +164,7 @@ class MessageQueue : public CallQueue { public: _FORCE_INLINE_ static CallQueue *get_singleton() { return thread_singleton ? thread_singleton : main_singleton; } + _FORCE_INLINE_ static CallQueue *get_main_singleton() { return main_singleton; } static void set_thread_singleton_override(CallQueue *p_thread_singleton); diff --git a/editor/gui/editor_toaster.cpp b/editor/gui/editor_toaster.cpp index df6c494392..a662ebbfaf 100644 --- a/editor/gui/editor_toaster.cpp +++ b/editor/gui/editor_toaster.cpp @@ -406,7 +406,7 @@ void EditorToaster::popup_str(const String &p_message, Severity p_severity, cons // Since "_popup_str" adds nodes to the tree, and since the "add_child" method is not // thread-safe, it's better to defer the call to the next cycle to be thread-safe. is_processing_error = true; - callable_mp(this, &EditorToaster::_popup_str).call_deferred(p_message, p_severity, p_tooltip); + MessageQueue::get_main_singleton()->push_callable(callable_mp(this, &EditorToaster::_popup_str).bind(p_message, p_severity, p_tooltip)); is_processing_error = false; } |