diff options
| author | JMC47 <JMC4789@gmail.com> | 2025-03-23 15:12:28 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-03-23 15:12:28 -0400 |
| commit | 2da255d8cdb2da67123296f5f091f808c696d021 (patch) | |
| tree | 6cb532eb57ccc7565dac52beaa0901045c6f5c98 /Source/Core/InputCommon/DynamicInputTextureManager.cpp | |
| parent | e93f0de8a4bcf9f201347fba21a12960ffa3c15f (diff) | |
| parent | e18d98d4fc94830937f6011e15ad1a41a9eeb9dc (diff) | |
Merge pull request #13311 from iwubcode/dynamic_input_textures_reduce_image_writes
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 |
