Do not refresh image when texture is not in use

This commit is contained in:
Attila Uygun 2023-06-11 01:08:37 +02:00
parent 05b86a38c1
commit 325b07d844
1 changed files with 8 additions and 6 deletions

View File

@ -293,12 +293,14 @@ void Engine::RefreshImage(const std::string& asset_name) {
return; return;
} }
if (it->second.persistent || it->second.use_count > 0) {
auto image = it->second.create_image(); auto image = it->second.create_image();
if (image) if (image)
it->second.texture->Update(std::move(image)); it->second.texture->Update(std::move(image));
else else
it->second.texture->Destroy(); it->second.texture->Destroy();
} }
}
Texture* Engine::AcquireTexture(const std::string& asset_name) { Texture* Engine::AcquireTexture(const std::string& asset_name) {
auto it = textures_.find(asset_name); auto it = textures_.find(asset_name);
@ -307,9 +309,9 @@ Texture* Engine::AcquireTexture(const std::string& asset_name) {
return nullptr; return nullptr;
} }
it->second.use_count++;
if (!it->second.texture->IsValid()) if (!it->second.texture->IsValid())
RefreshImage(it->first); RefreshImage(it->first);
it->second.use_count++;
return it->second.texture.get(); return it->second.texture.get();
} }