InputCommon: When using dynamic input textures, only call force reload textures once for packs that have multiple configurations

This commit is contained in:
iwubcode 2021-02-02 23:04:33 -06:00
parent 0a9c764dc4
commit ce7db2e32b
3 changed files with 10 additions and 12 deletions

View File

@ -17,10 +17,8 @@
#include "Common/Logging/Log.h"
#include "Common/StringUtil.h"
#include "Core/ConfigManager.h"
#include "Core/Core.h"
#include "InputCommon/ControllerEmu/ControllerEmu.h"
#include "InputCommon/ImageOperations.h"
#include "VideoCommon/RenderBase.h"
namespace
{
@ -251,7 +249,7 @@ DynamicInputTextureConfiguration::DynamicInputTextureConfiguration(const std::st
DynamicInputTextureConfiguration::~DynamicInputTextureConfiguration() = default;
void DynamicInputTextureConfiguration::GenerateTextures(const IniFile::Section* sec,
bool DynamicInputTextureConfiguration::GenerateTextures(const IniFile::Section* sec,
const std::string& controller_name) const
{
bool any_dirty = false;
@ -260,13 +258,7 @@ void DynamicInputTextureConfiguration::GenerateTextures(const IniFile::Section*
any_dirty |= GenerateTexture(sec, controller_name, texture_data);
}
if (!any_dirty)
return;
if (Core::GetState() == Core::State::Starting)
return;
if (!g_renderer)
return;
g_renderer->ForceReloadTextures();
return any_dirty;
}
bool DynamicInputTextureConfiguration::GenerateTexture(

View File

@ -19,7 +19,7 @@ class DynamicInputTextureConfiguration
public:
explicit DynamicInputTextureConfiguration(const std::string& json_file);
~DynamicInputTextureConfiguration();
void GenerateTextures(const IniFile::Section* sec, const std::string& controller_name) const;
bool GenerateTextures(const IniFile::Section* sec, const std::string& controller_name) const;
private:
struct DynamicInputTextureData

View File

@ -10,9 +10,11 @@
#include "Common/FileSearch.h"
#include "Common/FileUtil.h"
#include "Core/ConfigManager.h"
#include "Core/Core.h"
#include "InputCommon/DynamicInputTextureConfiguration.h"
#include "VideoCommon/HiresTextures.h"
#include "VideoCommon/RenderBase.h"
namespace InputCommon
{
@ -41,9 +43,13 @@ void DynamicInputTextureManager::Load()
void DynamicInputTextureManager::GenerateTextures(const IniFile::Section* sec,
const std::string& controller_name)
{
bool any_dirty = false;
for (const auto& configuration : m_configuration)
{
configuration.GenerateTextures(sec, controller_name);
any_dirty |= configuration.GenerateTextures(sec, controller_name);
}
if (any_dirty && g_renderer && Core::GetState() != Core::State::Starting)
g_renderer->ForceReloadTextures();
}
} // namespace InputCommon