ResourceLoader: Optimize remap check by deferring until a non-mutex zone

This commit is contained in:
Pedro J. Estébanez 2024-07-10 13:51:02 +02:00
parent 28619e26cf
commit 5c970db2e4
2 changed files with 5 additions and 6 deletions

View file

@ -342,8 +342,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<Resource> 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<Resource> 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();
}
@ -402,14 +404,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);
}
@ -531,7 +533,6 @@ Ref<ResourceLoader::LoadToken> 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;

View file

@ -173,7 +173,6 @@ private:
bool need_wait = true;
LoadToken *load_token = nullptr;
String local_path;
String remapped_path;
String type_hint;
float progress = 0.0f;
float max_reported_progress = 0.0f;
@ -182,7 +181,6 @@ private:
ResourceFormatLoader::CacheMode cache_mode = ResourceFormatLoader::CACHE_MODE_REUSE;
Error error = OK;
Ref<Resource> resource;
bool xl_remapped = false;
bool use_sub_threads = false;
HashSet<String> sub_tasks;
};