summaryrefslogtreecommitdiff
path: root/Source/Core/InputCommon
diff options
context:
space:
mode:
authorLéo Lam <leo@leolam.fr>2021-02-12 02:41:11 +0100
committerGitHub <noreply@github.com>2021-02-12 02:41:11 +0100
commit38935f2e4e93a91acebd08c51e4811e0bc487670 (patch)
treef7b1050e259f2a4a6f6d07b0a1986a3ea439aa54 /Source/Core/InputCommon
parent0f29e36440f0c1fc14e104577345779687593da1 (diff)
parentce7db2e32bb60d4ef5f107dc913ff19f9ad39057 (diff)
Merge pull request #9488 from iwubcode/dynamic-input-tex-optimizations
InputCommon: fix potential dynamic input texture crash and an optimization
Diffstat (limited to 'Source/Core/InputCommon')
-rw-r--r--Source/Core/InputCommon/DynamicInputTextureConfiguration.cpp12
-rw-r--r--Source/Core/InputCommon/DynamicInputTextureConfiguration.h2
-rw-r--r--Source/Core/InputCommon/DynamicInputTextureManager.cpp8
3 files changed, 10 insertions, 12 deletions
diff --git a/Source/Core/InputCommon/DynamicInputTextureConfiguration.cpp b/Source/Core/InputCommon/DynamicInputTextureConfiguration.cpp
index 171b74f3d2..d55099e856 100644
--- a/Source/Core/InputCommon/DynamicInputTextureConfiguration.cpp
+++ b/Source/Core/InputCommon/DynamicInputTextureConfiguration.cpp
@@ -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(
diff --git a/Source/Core/InputCommon/DynamicInputTextureConfiguration.h b/Source/Core/InputCommon/DynamicInputTextureConfiguration.h
index 15e4d37129..e5a4e722bf 100644
--- a/Source/Core/InputCommon/DynamicInputTextureConfiguration.h
+++ b/Source/Core/InputCommon/DynamicInputTextureConfiguration.h
@@ -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
diff --git a/Source/Core/InputCommon/DynamicInputTextureManager.cpp b/Source/Core/InputCommon/DynamicInputTextureManager.cpp
index 437d083ee9..31d0ee2aeb 100644
--- a/Source/Core/InputCommon/DynamicInputTextureManager.cpp
+++ b/Source/Core/InputCommon/DynamicInputTextureManager.cpp
@@ -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