diff options
| author | David Snopek <dsnopek@gmail.com> | 2024-09-17 14:53:39 -0500 |
|---|---|---|
| committer | David Snopek <dsnopek@gmail.com> | 2024-10-17 09:06:27 -0500 |
| commit | 91833c852e47a83ed01deb26213b9d3184de736d (patch) | |
| tree | f5d03c2f87ef31f617d2f458b0b4c05bbead7632 /include/godot_cpp/core | |
| parent | a98d41f62bdb8b7aa903e8e37c1faa48fe8fdae8 (diff) | |
| download | redot-cpp-91833c852e47a83ed01deb26213b9d3184de736d.tar.gz | |
Avoid `thread_local` on MacOS to prevent issues with hot reload
Diffstat (limited to 'include/godot_cpp/core')
| -rw-r--r-- | include/godot_cpp/core/class_db.hpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/include/godot_cpp/core/class_db.hpp b/include/godot_cpp/core/class_db.hpp index 85bc0fb..d9dce79 100644 --- a/include/godot_cpp/core/class_db.hpp +++ b/include/godot_cpp/core/class_db.hpp @@ -129,6 +129,9 @@ private: static GDExtensionClassInstancePtr _recreate_instance_func(void *data, GDExtensionObjectPtr obj) { if constexpr (!std::is_abstract_v<T>) { #ifdef HOT_RELOAD_ENABLED +#ifdef _GODOT_CPP_AVOID_THREAD_LOCAL + std::lock_guard<std::recursive_mutex> lk(Wrapped::_constructing_mutex); +#endif Wrapped::_constructing_recreate_owner = obj; T *new_instance = (T *)memalloc(sizeof(T)); memnew_placement(new_instance, T); |
