From 4fff04db3ce16c72d8b3b95df2285a129605fde4 Mon Sep 17 00:00:00 2001 From: iwubcode Date: Fri, 1 Nov 2019 01:30:24 -0500 Subject: [PATCH] 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/Core/Core.cpp | 5 +++++ Source/Core/InputCommon/DynamicInputTextureConfiguration.cpp | 3 +++ Source/Core/VideoCommon/HiresTextures.cpp | 2 +- 3 files changed, 9 insertions(+), 1 deletion(-) 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()