Use BinaryMutex instead of Mutex for StringName.
This commit is contained in:
parent
67c96c89cc
commit
e57427900f
4 changed files with 15 additions and 12 deletions
|
|
@ -2226,6 +2226,16 @@ void Object::detach_from_objectdb() {
|
|||
}
|
||||
}
|
||||
|
||||
void Object::assign_class_name_static(const Span<char> &p_name, StringName &r_target) {
|
||||
static BinaryMutex _mutex;
|
||||
MutexLock lock(_mutex);
|
||||
if (r_target) {
|
||||
// Already assigned while we were waiting for the mutex.
|
||||
return;
|
||||
}
|
||||
r_target = StringName(p_name.ptr(), true);
|
||||
}
|
||||
|
||||
Object::~Object() {
|
||||
if (script_instance) {
|
||||
memdelete(script_instance);
|
||||
|
|
|
|||
|
|
@ -425,7 +425,7 @@ public:
|
|||
static const StringName &get_class_static() { \
|
||||
static StringName _class_name_static; \
|
||||
if (unlikely(!_class_name_static)) { \
|
||||
StringName::assign_static_unique_class_name(&_class_name_static, #m_class); \
|
||||
assign_class_name_static(#m_class, _class_name_static); \
|
||||
} \
|
||||
return _class_name_static; \
|
||||
} \
|
||||
|
|
@ -811,10 +811,12 @@ public:
|
|||
};
|
||||
|
||||
/* TYPE API */
|
||||
static void assign_class_name_static(const Span<char> &p_name, StringName &r_target);
|
||||
|
||||
static const StringName &get_class_static() {
|
||||
static StringName _class_name_static;
|
||||
if (unlikely(!_class_name_static)) {
|
||||
StringName::assign_static_unique_class_name(&_class_name_static, "Object");
|
||||
assign_class_name_static("Object", _class_name_static);
|
||||
}
|
||||
return _class_name_static;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue