From 020dcc9d684f3ed59b60eb5b2d90f7d3385c33b2 Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Mon, 11 Jul 2022 16:24:37 -0700 Subject: [PATCH] UI: Reduce IO for texture ini on dev settings. --- UI/GameSettingsScreen.cpp | 16 +++++++++------- UI/GameSettingsScreen.h | 6 ++++++ 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/UI/GameSettingsScreen.cpp b/UI/GameSettingsScreen.cpp index b174072751..39ab8718a5 100644 --- a/UI/GameSettingsScreen.cpp +++ b/UI/GameSettingsScreen.cpp @@ -1826,18 +1826,20 @@ void DeveloperToolsScreen::CreateViews() { list->Add(new Choice(dev->T("Copy savestates to memstick root")))->OnClick.Handle(this, &DeveloperToolsScreen::OnCopyStatesToRoot); #endif + // Reconsider whenever recreating views. + hasTexturesIni_ = HasIni::MAYBE; + Choice *createTextureIni = list->Add(new Choice(dev->T("Create/Open textures.ini file for current game"))); createTextureIni->OnClick.Handle(this, &DeveloperToolsScreen::OnOpenTexturesIniFile); - createTextureIni->SetEnabledFunc([] { + createTextureIni->SetEnabledFunc([&] { if (!PSP_IsInited()) return false; // Disable the choice to Open/Create if the textures.ini file already exists, and we can't open it due to platform support limitations. if (!System_GetPropertyBool(SYSPROP_SUPPORTS_OPEN_FILE_IN_EDITOR)) { - std::string gameID = g_paramSFO.GetDiscID(); - if (TextureReplacer::IniExists(gameID)) { - return false; - } + if (hasTexturesIni_ == HasIni::MAYBE) + hasTexturesIni_ = TextureReplacer::IniExists(g_paramSFO.GetDiscID()) ? HasIni::YES : HasIni::NO; + return hasTexturesIni_ != HasIni::YES; } return true; }); @@ -1898,8 +1900,6 @@ UI::EventReturn DeveloperToolsScreen::OnOpenTexturesIniFile(UI::EventParams &e) std::string gameID = g_paramSFO.GetDiscID(); Path generatedFilename; - bool existedBefore = TextureReplacer::IniExists(gameID); - if (TextureReplacer::GenerateIni(gameID, generatedFilename)) { if (System_GetPropertyBool(SYSPROP_SUPPORTS_OPEN_FILE_IN_EDITOR)) { File::OpenFileInEditor(generatedFilename); @@ -1908,6 +1908,8 @@ UI::EventReturn DeveloperToolsScreen::OnOpenTexturesIniFile(UI::EventParams &e) auto dev = GetI18NCategory("Developer"); System_Toast((generatedFilename.ToVisualString() + ": " + dev->T("Texture ini file created")).c_str()); } + + hasTexturesIni_ = HasIni::YES; } return UI::EVENT_DONE; } diff --git a/UI/GameSettingsScreen.h b/UI/GameSettingsScreen.h index 3e00c26bda..087b05740e 100644 --- a/UI/GameSettingsScreen.h +++ b/UI/GameSettingsScreen.h @@ -181,6 +181,12 @@ private: bool allowDebugger_ = false; bool canAllowDebugger_ = true; + enum class HasIni { + NO, + YES, + MAYBE, + }; + HasIni hasTexturesIni_ = HasIni::MAYBE; }; class HostnameSelectScreen : public PopupScreen {