diff options
author | Rémi Verschelde <remi@verschelde.fr> | 2023-04-08 20:29:59 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-08 20:29:59 +0200 |
commit | cfab3d2f57976913a03a891b30eaa0a5da4ff64f (patch) | |
tree | 2f301b4aa9d284ed620ac07c658453771f0728a6 /core/string | |
parent | 61630d4e1e279278d29576b979b710b9025f473e (diff) | |
parent | 8950943356b43d08e10df5b13ff03a68ad181324 (diff) | |
download | redot-engine-cfab3d2f57976913a03a891b30eaa0a5da4ff64f.tar.gz |
Merge pull request #75797 from reduz/optimize-object-get-class-name
Optimize Object::get_class_name
Diffstat (limited to 'core/string')
-rw-r--r-- | core/string/string_name.cpp | 8 | ||||
-rw-r--r-- | core/string/string_name.h | 2 |
2 files changed, 10 insertions, 0 deletions
diff --git a/core/string/string_name.cpp b/core/string/string_name.cpp index df9b6b3f1a..6099fea13f 100644 --- a/core/string/string_name.cpp +++ b/core/string/string_name.cpp @@ -201,6 +201,14 @@ StringName::StringName(const StringName &p_name) { } } +void StringName::assign_static_unique_class_name(StringName *ptr, const char *p_name) { + mutex.lock(); + if (*ptr == StringName()) { + *ptr = StringName(p_name, true); + } + mutex.unlock(); +} + StringName::StringName(const char *p_name, bool p_static) { _data = nullptr; diff --git a/core/string/string_name.h b/core/string/string_name.h index 177e82896d..07abc781a2 100644 --- a/core/string/string_name.h +++ b/core/string/string_name.h @@ -177,6 +177,8 @@ public: StringName(const String &p_name, bool p_static = false); StringName(const StaticCString &p_static_string, bool p_static = false); StringName() {} + + static void assign_static_unique_class_name(StringName *ptr, const char *p_name); _FORCE_INLINE_ ~StringName() { if (likely(configured) && _data) { //only free if configured unref(); |