diff --git a/Source/Core/Core/Core.cpp b/Source/Core/Core/Core.cpp index e92c01ab08..25cbd5955b 100644 --- a/Source/Core/Core/Core.cpp +++ b/Source/Core/Core/Core.cpp @@ -79,6 +79,7 @@ #include "VideoCommon/AsyncRequests.h" #include "VideoCommon/Fifo.h" +#include "VideoCommon/HiresTextures.h" #include "VideoCommon/OnScreenDisplay.h" #include "VideoCommon/RenderBase.h" #include "VideoCommon/VideoBackendBase.h" @@ -542,6 +543,10 @@ static void EmuThread(std::unique_ptr boot, WindowSystemInfo wsi return; } + // Inputs loading may have generated custom dynamic textures + // it's now ok to initialize any custom textures + HiresTexture::Update(); + AudioCommon::InitSoundStream(); Common::ScopeGuard audio_guard{&AudioCommon::ShutdownSoundStream}; diff --git a/Source/Core/InputCommon/DynamicInputTextureConfiguration.cpp b/Source/Core/InputCommon/DynamicInputTextureConfiguration.cpp index ad200e70a4..58c2c84d18 100644 --- a/Source/Core/InputCommon/DynamicInputTextureConfiguration.cpp +++ b/Source/Core/InputCommon/DynamicInputTextureConfiguration.cpp @@ -17,6 +17,7 @@ #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" @@ -259,6 +260,8 @@ void DynamicInputTextureConfiguration::GenerateTextures(const IniFile::Section* if (!any_dirty) return; + if (Core::GetState() == Core::State::Starting) + return; if (!g_renderer) return; g_renderer->ForceReloadTextures(); 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()