Remove message_queue.h include from object.h.

This commit is contained in:
Lukas Tenbrink 2025-10-14 11:56:37 +02:00
parent 897172fa25
commit a6adb12240
10 changed files with 38 additions and 25 deletions

View file

@ -38,6 +38,7 @@
#include "core/io/file_access_pack.h"
#include "core/io/marshalls.h"
#include "core/io/resource_uid.h"
#include "core/object/message_queue.h"
#include "core/object/script_language.h"
#include "core/templates/rb_set.h"
#include "core/variant/typed_array.h"

View file

@ -35,6 +35,7 @@
#include "core/io/dir_access.h"
#include "core/io/file_access.h"
#include "core/io/resource_importer.h"
#include "core/object/message_queue.h"
#include "core/object/script_language.h"
#include "core/os/condition_variable.h"
#include "core/os/os.h"
@ -815,6 +816,22 @@ void ResourceLoader::set_is_import_thread(bool p_import_thread) {
import_thread = p_import_thread;
}
void ResourceLoader::notify_load_error(const String &p_err) {
if (err_notify) {
MessageQueue::get_main_singleton()->push_callable(callable_mp_static(err_notify).bind(p_err));
}
}
void ResourceLoader::notify_dependency_error(const String &p_path, const String &p_dependency, const String &p_type) {
if (dep_err_notify) {
if (Thread::get_caller_id() == Thread::get_main_id()) {
dep_err_notify(p_path, p_dependency, p_type);
} else {
MessageQueue::get_main_singleton()->push_callable(callable_mp_static(dep_err_notify).bind(p_path, p_dependency, p_type));
}
}
}
Ref<Resource> ResourceLoader::_load_complete_inner(LoadToken &p_load_token, Error *r_error, MutexLock<SafeBinaryMutex<BINARY_MUTEX_TAG>> &p_thread_load_lock) {
if (r_error) {
*r_error = OK;

View file

@ -264,25 +264,15 @@ public:
static bool get_timestamp_on_load() { return timestamp_on_load; }
// Loaders can safely use this regardless which thread they are running on.
static void notify_load_error(const String &p_err) {
if (err_notify) {
MessageQueue::get_main_singleton()->push_callable(callable_mp_static(err_notify).bind(p_err));
}
}
static void notify_load_error(const String &p_err);
static void set_error_notify_func(ResourceLoadErrorNotify p_err_notify) {
err_notify = p_err_notify;
}
// Loaders can safely use this regardless which thread they are running on.
static void notify_dependency_error(const String &p_path, const String &p_dependency, const String &p_type) {
if (dep_err_notify) {
if (Thread::get_caller_id() == Thread::get_main_id()) {
dep_err_notify(p_path, p_dependency, p_type);
} else {
MessageQueue::get_main_singleton()->push_callable(callable_mp_static(dep_err_notify).bind(p_path, p_dependency, p_type));
}
}
}
static void notify_dependency_error(const String &p_path, const String &p_dependency, const String &p_type);
static void set_dependency_error_notify_func(DependencyErrorNotify p_err_notify) {
dep_err_notify = p_err_notify;
}

View file

@ -130,15 +130,6 @@ public:
}
Error push_callp(Object *p_object, const StringName &p_method, const Variant **p_args, int p_argcount, bool p_show_error = false);
template <typename... VarArgs>
Error push_call(Object *p_object, const StringName &p_method, VarArgs... p_args) {
Variant args[sizeof...(p_args) + 1] = { p_args..., Variant() }; // +1 makes sure zero sized arrays are also supported.
const Variant *argptrs[sizeof...(p_args) + 1];
for (uint32_t i = 0; i < sizeof...(p_args); i++) {
argptrs[i] = &args[i];
}
return push_callp(p_object, p_method, sizeof...(p_args) == 0 ? nullptr : (const Variant **)argptrs, sizeof...(p_args));
}
Error push_notification(Object *p_object, int p_notification);
Error push_set(Object *p_object, const StringName &p_prop, const Variant &p_value);

View file

@ -2079,6 +2079,10 @@ void Object::_bind_methods() {
BIND_ENUM_CONSTANT(CONNECT_APPEND_SOURCE_OBJECT);
}
void Object::call_deferredp(const StringName &p_method, const Variant **p_args, int p_argcount, bool p_show_error) {
MessageQueue::get_singleton()->push_callp(this, p_method, p_args, p_argcount);
}
void Object::set_deferred(const StringName &p_property, const Variant &p_value) {
MessageQueue::get_singleton()->push_set(this, p_property, p_value);
}

View file

@ -32,9 +32,9 @@
#include "core/extension/gdextension_interface.gen.h"
#include "core/object/gdtype.h"
#include "core/object/message_queue.h"
#include "core/object/object_id.h"
#include "core/os/spin_lock.h"
#include "core/os/thread_safe.h"
#include "core/templates/hash_map.h"
#include "core/templates/hash_set.h"
#include "core/templates/list.h"
@ -991,9 +991,15 @@ public:
DEBUG_VIRTUAL bool is_connected(const StringName &p_signal, const Callable &p_callable) const;
DEBUG_VIRTUAL bool has_connections(const StringName &p_signal) const;
void call_deferredp(const StringName &p_method, const Variant **p_args, int p_argcount, bool p_show_error = false);
template <typename... VarArgs>
void call_deferred(const StringName &p_name, VarArgs... p_args) {
MessageQueue::get_singleton()->push_call(this, p_name, p_args...);
Variant args[sizeof...(p_args) + 1] = { p_args..., Variant() }; // +1 makes sure zero sized arrays are also supported.
const Variant *argptrs[sizeof...(p_args) + 1];
for (uint32_t i = 0; i < sizeof...(p_args); i++) {
argptrs[i] = &args[i];
}
return call_deferredp(p_name, sizeof...(p_args) == 0 ? nullptr : (const Variant **)argptrs, sizeof...(p_args));
}
void set_deferred(const StringName &p_property, const Variant &p_value);

View file

@ -30,6 +30,7 @@
#include "worker_thread_pool.h"
#include "core/object/message_queue.h"
#include "core/object/script_language.h"
#include "core/os/os.h"
#include "core/os/safe_binary_mutex.h"

View file

@ -30,6 +30,7 @@
#include "callable.h"
#include "core/object/message_queue.h"
#include "core/object/object.h"
#include "core/object/ref_counted.h"
#include "core/object/script_language.h"

View file

@ -30,6 +30,7 @@
#pragma once
#include "core/object/message_queue.h"
#include "core/object/ref_counted.h"
#include "core/os/main_loop.h"
#include "core/os/thread_safe.h"

View file

@ -30,6 +30,7 @@
#include "animated_texture.h"
#include "core/object/message_queue.h"
#include "core/os/os.h"
#include "servers/rendering/rendering_server.h"