From d96ac8b534833c68268256dc502f170fb674b18b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pedro=20J=2E=20Est=C3=A9banez?= Date: Wed, 10 Jul 2024 13:51:02 +0200 Subject: [PATCH] ResourceLoader: Optimize remap check by deferring until a non-mutex zone --- core/io/resource_loader.cpp | 9 +++++---- core/io/resource_loader.h | 2 -- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/core/io/resource_loader.cpp b/core/io/resource_loader.cpp index f761a4c110d2..b9f032ae5951 100644 --- a/core/io/resource_loader.cpp +++ b/core/io/resource_loader.cpp @@ -348,8 +348,10 @@ void ResourceLoader::_run_load_task(void *p_userdata) { } // -- + bool xl_remapped = false; + const String &remapped_path = _path_remap(load_task.local_path, &xl_remapped); Error load_err = OK; - Ref res = _load(load_task.remapped_path, load_task.remapped_path != load_task.local_path ? load_task.local_path : String(), load_task.type_hint, load_task.cache_mode, &load_err, load_task.use_sub_threads, &load_task.progress); + Ref res = _load(remapped_path, remapped_path != load_task.local_path ? load_task.local_path : String(), load_task.type_hint, load_task.cache_mode, &load_err, load_task.use_sub_threads, &load_task.progress); if (MessageQueue::get_singleton() != MessageQueue::get_main_singleton()) { MessageQueue::get_singleton()->flush(); } @@ -389,14 +391,14 @@ void ResourceLoader::_run_load_task(void *p_userdata) { load_task.resource->set_path_cache(load_task.local_path); } - if (load_task.xl_remapped) { + if (xl_remapped) { load_task.resource->set_as_translation_remapped(true); } #ifdef TOOLS_ENABLED load_task.resource->set_edited(false); if (timestamp_on_load) { - uint64_t mt = FileAccess::get_modified_time(load_task.remapped_path); + uint64_t mt = FileAccess::get_modified_time(remapped_path); //printf("mt %s: %lli\n",remapped_path.utf8().get_data(),mt); load_task.resource->set_last_modified_time(mt); } @@ -522,7 +524,6 @@ Ref ResourceLoader::_load_start(const String &p_path, { ThreadLoadTask load_task; - load_task.remapped_path = _path_remap(local_path, &load_task.xl_remapped); load_task.load_token = load_token.ptr(); load_task.local_path = local_path; load_task.type_hint = p_type_hint; diff --git a/core/io/resource_loader.h b/core/io/resource_loader.h index d1e82f0b34dd..15e4841349f3 100644 --- a/core/io/resource_loader.h +++ b/core/io/resource_loader.h @@ -174,7 +174,6 @@ class ResourceLoader { ConditionVariable *cond_var = nullptr; // In not in the worker pool or already awaiting, this is used as a secondary awaiting mechanism. LoadToken *load_token = nullptr; String local_path; - String remapped_path; String type_hint; float progress = 0.0f; float max_reported_progress = 0.0f; @@ -183,7 +182,6 @@ class ResourceLoader { ResourceFormatLoader::CacheMode cache_mode = ResourceFormatLoader::CACHE_MODE_REUSE; Error error = OK; Ref resource; - bool xl_remapped = false; bool use_sub_threads = false; HashSet sub_tasks; };