mirror of
https://github.com/godotengine/godot.git
synced 2025-12-07 22:00:10 +00:00
Make Variant::get_type_by_name HashMap initialization thread-safe
Updated Variant::get_type_by_name to call separate function for static HashMap initialization, which includes adding the initial key/value pairs.
This commit is contained in:
parent
9dd6c4dbac
commit
8ac43f4733
1 changed files with 9 additions and 6 deletions
|
|
@ -174,13 +174,16 @@ String Variant::get_type_name(Variant::Type p_type) {
|
|||
return "";
|
||||
}
|
||||
|
||||
Variant::Type Variant::get_type_by_name(const String &p_type_name) {
|
||||
static HashMap<String, Type> type_names;
|
||||
if (unlikely(type_names.is_empty())) {
|
||||
for (int i = 0; i < VARIANT_MAX; i++) {
|
||||
type_names[get_type_name((Type)i)] = (Type)i;
|
||||
}
|
||||
static HashMap<String, Variant::Type> _init_type_name_map() {
|
||||
HashMap<String, Variant::Type> type_names;
|
||||
for (int i = 0; i < Variant::VARIANT_MAX; i++) {
|
||||
type_names[Variant::get_type_name((Variant::Type)i)] = (Variant::Type)i;
|
||||
}
|
||||
return type_names;
|
||||
}
|
||||
|
||||
Variant::Type Variant::get_type_by_name(const String &p_type_name) {
|
||||
static HashMap<String, Type> type_names = _init_type_name_map();
|
||||
|
||||
const Type *ptr = type_names.getptr(p_type_name);
|
||||
return (ptr == nullptr) ? VARIANT_MAX : *ptr;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue