@@ -74,12 +74,16 @@ SaveLoadMenuGUI::SaveLoadMenuGUI(AllegroScreen* guiScreen, GUIInputWrapper* guiI
7474 m_ConfirmationButton = dynamic_cast <GUIButton*>(m_GUIControlManager->GetControl (" ConfirmButton" ));
7575 m_CancelButton = dynamic_cast <GUIButton*>(m_GUIControlManager->GetControl (" CancelButton" ));
7676
77+ m_SaveGamesFetched = false ;
78+
7779 SwitchToConfirmDialogMode (ConfirmDialogMode::None);
7880}
7981
8082void SaveLoadMenuGUI::PopulateSaveGamesList () {
81- g_ActivityMan.WaitForSaveGameTask ();
82-
83+ if (g_ActivityMan.IsCurrentlySaving () || m_SaveGamesFetched) {
84+ return ;
85+ }
86+
8387 m_SaveGames.clear ();
8488 m_SaveGameName->SetText (" " );
8589
@@ -143,6 +147,7 @@ void SaveLoadMenuGUI::PopulateSaveGamesList() {
143147 });
144148
145149 UpdateSaveGamesGUIList ();
150+ m_SaveGamesFetched = true ;
146151}
147152
148153void SaveLoadMenuGUI::UpdateSaveGamesGUIList () {
@@ -209,7 +214,7 @@ void SaveLoadMenuGUI::CreateSave() {
209214 g_GUISound.UserErrorSound ()->Play ();
210215 }
211216
212- PopulateSaveGamesList () ;
217+ m_SaveGamesFetched = false ;
213218}
214219
215220void SaveLoadMenuGUI::DeleteSave () {
@@ -218,7 +223,7 @@ void SaveLoadMenuGUI::DeleteSave() {
218223 std::filesystem::remove (saveFilePath);
219224 g_GUISound.ConfirmSound ()->Play ();
220225
221- PopulateSaveGamesList () ;
226+ m_SaveGamesFetched = false ;
222227}
223228
224229void SaveLoadMenuGUI::UpdateButtonEnabledStates () {
@@ -271,6 +276,8 @@ void SaveLoadMenuGUI::SwitchToConfirmDialogMode(ConfirmDialogMode mode) {
271276}
272277
273278bool SaveLoadMenuGUI::HandleInputEvents (PauseMenuGUI* pauseMenu) {
279+ PopulateSaveGamesList ();
280+
274281 m_GUIControlManager->Update ();
275282
276283 GUIEvent guiEvent;
@@ -324,7 +331,7 @@ bool SaveLoadMenuGUI::HandleInputEvents(PauseMenuGUI* pauseMenu) {
324331}
325332
326333void SaveLoadMenuGUI::Refresh () {
327- PopulateSaveGamesList () ;
334+ m_SaveGamesFetched = false ;
328335 UpdateButtonEnabledStates ();
329336}
330337
0 commit comments