From 50083a3c0c75d8224a55757b8626d33713149b9f Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Tue, 1 Mar 2016 18:19:18 -0800 Subject: [PATCH] Avoid reloading save info on move/resize. We don't really need to do this all the time, we can just do it on exit of the entire screen. Also fixes a crash on close. Fixes #8619. --- UI/SavedataScreen.cpp | 12 +++++++----- UI/SavedataScreen.h | 2 +- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/UI/SavedataScreen.cpp b/UI/SavedataScreen.cpp index 3d8283c2e9..6d674cc8c5 100644 --- a/UI/SavedataScreen.cpp +++ b/UI/SavedataScreen.cpp @@ -273,11 +273,6 @@ SavedataBrowser::SavedataBrowser(std::string path, UI::LayoutParams *layoutParam Refresh(); } -SavedataBrowser::~SavedataBrowser() { - g_gameInfoCache->PurgeType(FILETYPE_PPSSPP_SAVESTATE); - g_gameInfoCache->PurgeType(FILETYPE_PSP_SAVEDATA_DIRECTORY); -} - void SavedataBrowser::Refresh() { using namespace UI; @@ -338,6 +333,13 @@ UI::EventReturn SavedataBrowser::SavedataButtonClick(UI::EventParams &e) { SavedataScreen::SavedataScreen(std::string gamePath) : UIDialogScreenWithGameBackground(gamePath) { } +SavedataScreen::~SavedataScreen() { + if (g_gameInfoCache) { + g_gameInfoCache->PurgeType(FILETYPE_PPSSPP_SAVESTATE); + g_gameInfoCache->PurgeType(FILETYPE_PSP_SAVEDATA_DIRECTORY); + } +} + void SavedataScreen::CreateViews() { using namespace UI; I18NCategory *sa = GetI18NCategory("Savedata"); diff --git a/UI/SavedataScreen.h b/UI/SavedataScreen.h index 44cb0a1c80..14e4afe4c0 100644 --- a/UI/SavedataScreen.h +++ b/UI/SavedataScreen.h @@ -29,7 +29,6 @@ class SavedataBrowser : public UI::LinearLayout { public: SavedataBrowser(std::string path, UI::LayoutParams *layoutParams = 0); - ~SavedataBrowser(); UI::Event OnChoice; @@ -45,6 +44,7 @@ class SavedataScreen : public UIDialogScreenWithGameBackground { public: // gamePath can be empty, in that case this screen will show all savedata in the save directory. SavedataScreen(std::string gamePath); + ~SavedataScreen(); void dialogFinished(const Screen *dialog, DialogResult result) override;