Skip to content

Commit

Permalink
ResourceLoader: Optimize remap check by deferring until a non-mutex zone
Browse files Browse the repository at this point in the history
  • Loading branch information
RandomShaper committed Jul 11, 2024
1 parent c9b3913 commit d96ac8b
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 6 deletions.
9 changes: 5 additions & 4 deletions core/io/resource_loader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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<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();
}
Expand Down Expand Up @@ -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);
}
Expand Down Expand Up @@ -522,7 +524,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;
Expand Down
2 changes: 0 additions & 2 deletions core/io/resource_loader.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -183,7 +182,6 @@ class ResourceLoader {
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;
};
Expand Down

0 comments on commit d96ac8b

Please sign in to comment.