summaryrefslogtreecommitdiff
path: root/Source/Core/InputCommon/DynamicInputTextureManager.cpp
diff options
context:
space:
mode:
authorJMC47 <JMC4789@gmail.com>2025-03-23 15:12:28 -0400
committerGitHub <noreply@github.com>2025-03-23 15:12:28 -0400
commit2da255d8cdb2da67123296f5f091f808c696d021 (patch)
tree6cb532eb57ccc7565dac52beaa0901045c6f5c98 /Source/Core/InputCommon/DynamicInputTextureManager.cpp
parente93f0de8a4bcf9f201347fba21a12960ffa3c15f (diff)
parente18d98d4fc94830937f6011e15ad1a41a9eeb9dc (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.cpp28
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