summaryrefslogtreecommitdiffstats
path: root/core/string
diff options
context:
space:
mode:
Diffstat (limited to 'core/string')
-rw-r--r--core/string/string_name.cpp8
-rw-r--r--core/string/string_name.h2
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();