diff options
| author | iwubcode <iwubcode@users.noreply.github.com> | 2025-01-25 21:49:32 -0600 |
|---|---|---|
| committer | iwubcode <iwubcode@users.noreply.github.com> | 2025-03-22 14:53:02 -0500 |
| commit | d03f9032c129e440e4f07d319be8b52500798e07 (patch) | |
| tree | 8be51b82db6cde8050f55bbb35287d83b4de0c85 /Source/Core/InputCommon/DynamicInputTextureManager.cpp | |
| parent | 18979129f35f56de9f87e2a7919788679337abfa (diff) | |
Core / DolphinQt / InputCommon: reduce the number disk writes when using DynamicInputTextures
Diffstat (limited to 'Source/Core/InputCommon/DynamicInputTextureManager.cpp')
| -rw-r--r-- | Source/Core/InputCommon/DynamicInputTextureManager.cpp | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/Source/Core/InputCommon/DynamicInputTextureManager.cpp b/Source/Core/InputCommon/DynamicInputTextureManager.cpp index fade2c05d4..af5214bd37 100644 --- a/Source/Core/InputCommon/DynamicInputTextureManager.cpp +++ b/Source/Core/InputCommon/DynamicInputTextureManager.cpp @@ -12,6 +12,7 @@ #include "Core/Core.h" #include "InputCommon/DynamicInputTextures/DITConfiguration.h" +#include "InputCommon/ImageOperations.h" #include "VideoCommon/HiresTextures.h" #include "VideoCommon/TextureCacheBase.h" @@ -42,9 +43,34 @@ void DynamicInputTextureManager::Load() void DynamicInputTextureManager::GenerateTextures(const Common::IniFile& file, const std::vector<std::string>& controller_names) { + DynamicInputTextures::OutputDetails output; for (const auto& configuration : m_configuration) { - (void)configuration.GenerateTextures(file, controller_names); + configuration.GenerateTextures(file, controller_names, &output); + } + + const std::string& game_id = SConfig::GetInstance().GetGameID(); + for (const auto& [generated_folder_name, images] : output) + { + const auto hi_res_folder = File::GetUserPath(D_HIRESTEXTURES_IDX) + generated_folder_name; + + if (!File::IsDirectory(hi_res_folder)) + { + File::CreateDir(hi_res_folder); + } + + const auto game_id_folder = hi_res_folder + DIR_SEP + "gameids"; + if (!File::IsDirectory(game_id_folder)) + { + File::CreateDir(game_id_folder); + } + + File::CreateEmptyFile(game_id_folder + DIR_SEP + game_id + ".txt"); + + for (const auto& [image_name, image] : images) + { + WriteImage(hi_res_folder + DIR_SEP + image_name, image); + } } } } // namespace InputCommon |
