From 8a1539f9487cff0b5785e2d341663e4d7136e2a3 Mon Sep 17 00:00:00 2001 From: iwubcode Date: Sun, 3 May 2020 12:49:46 -0500 Subject: VideoCommon: Make a reusable free function for getting top level directories that have a matching gameid text file underneath --- Source/Core/VideoCommon/HiresTextures.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'Source/Core/VideoCommon/HiresTextures.cpp') diff --git a/Source/Core/VideoCommon/HiresTextures.cpp b/Source/Core/VideoCommon/HiresTextures.cpp index bcc0cac4c9..92ba7ff9e6 100644 --- a/Source/Core/VideoCommon/HiresTextures.cpp +++ b/Source/Core/VideoCommon/HiresTextures.cpp @@ -87,7 +87,8 @@ void HiresTexture::Update() } const std::string& game_id = SConfig::GetInstance().GetGameID(); - const std::set texture_directories = GetTextureDirectories(game_id); + const std::set texture_directories = + GetTextureDirectoriesWithGameId(File::GetUserPath(D_HIRESTEXTURES_IDX), game_id); const std::vector extensions{".png", ".dds"}; for (const auto& texture_directory : texture_directories) @@ -454,10 +455,11 @@ bool HiresTexture::LoadTexture(Level& level, const std::vector& buffer) return true; } -std::set HiresTexture::GetTextureDirectories(const std::string& game_id) +std::set GetTextureDirectoriesWithGameId(const std::string& root_directory, + const std::string& game_id) { std::set result; - const std::string texture_directory = File::GetUserPath(D_HIRESTEXTURES_IDX) + game_id; + const std::string texture_directory = root_directory + game_id; if (File::Exists(texture_directory)) { @@ -466,8 +468,7 @@ std::set HiresTexture::GetTextureDirectories(const std::string& gam else { // If there's no directory with the region-specific ID, look for a 3-character region-free one - const std::string region_free_directory = - File::GetUserPath(D_HIRESTEXTURES_IDX) + game_id.substr(0, 3); + const std::string region_free_directory = root_directory + game_id.substr(0, 3); if (File::Exists(region_free_directory)) { @@ -482,7 +483,6 @@ std::set HiresTexture::GetTextureDirectories(const std::string& gam }; // Look for any other directories that might be specific to the given gameid - const auto root_directory = File::GetUserPath(D_HIRESTEXTURES_IDX); const auto files = Common::DoFileSearch({root_directory}, {".txt"}, true); for (const auto& file : files) { @@ -490,8 +490,8 @@ std::set HiresTexture::GetTextureDirectories(const std::string& gam { // The following code is used to calculate the top directory // of a found gameid.txt file - // ex: /Load/Textures/My folder/gameids/.txt - // would insert "/Load/Textures/My folder" + // ex: /My folder/gameids/.txt + // would insert "/My folder" const auto directory_path = file.substr(root_directory.size()); const std::size_t first_path_separator_position = directory_path.find_first_of(DIR_SEP_CHR); result.insert(root_directory + directory_path.substr(0, first_path_separator_position)); -- cgit v1.2.3 From fd3af4c5d32a34b27c45b478c74fa1127b6438b9 Mon Sep 17 00:00:00 2001 From: iwubcode Date: Sat, 17 Aug 2019 14:40:58 -0500 Subject: InputCommon: Introducing the "Dynamic Input Texture". Configuration links an emulated input action to an image based on what host key is defined for that emulated input. Specific regions are called out in configuration that mark where to replace an input button with a host key image. --- Source/Core/VideoCommon/HiresTextures.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'Source/Core/VideoCommon/HiresTextures.cpp') diff --git a/Source/Core/VideoCommon/HiresTextures.cpp b/Source/Core/VideoCommon/HiresTextures.cpp index 92ba7ff9e6..d1ced9e307 100644 --- a/Source/Core/VideoCommon/HiresTextures.cpp +++ b/Source/Core/VideoCommon/HiresTextures.cpp @@ -76,8 +76,7 @@ void HiresTexture::Update() if (!g_ActiveConfig.bHiresTextures) { - s_textureMap.clear(); - s_textureCache.clear(); + Clear(); return; } @@ -146,6 +145,12 @@ void HiresTexture::Update() } } +void HiresTexture::Clear() +{ + s_textureMap.clear(); + s_textureCache.clear(); +} + void HiresTexture::Prefetch() { Common::SetCurrentThreadName("Prefetcher"); -- cgit v1.2.3 From 4fff04db3ce16c72d8b3b95df2285a129605fde4 Mon Sep 17 00:00:00 2001 From: iwubcode Date: Fri, 1 Nov 2019 01:30:24 -0500 Subject: Core: Load custom textures after inputs has been loaded and avoid sending force texture reload during startup for dynamic textures. This ensures that custom texture loading only happens once and users don't see any weird flashes on startup --- Source/Core/VideoCommon/HiresTextures.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Source/Core/VideoCommon/HiresTextures.cpp') diff --git a/Source/Core/VideoCommon/HiresTextures.cpp b/Source/Core/VideoCommon/HiresTextures.cpp index d1ced9e307..039bc87c5e 100644 --- a/Source/Core/VideoCommon/HiresTextures.cpp +++ b/Source/Core/VideoCommon/HiresTextures.cpp @@ -51,7 +51,7 @@ static std::thread s_prefetcher; void HiresTexture::Init() { - Update(); + // Note: Update is not called here so that we handle dynamic textures on startup more gracefully } void HiresTexture::Shutdown() -- cgit v1.2.3