From ad8d0e3472047243ca61f524691090abef5238d7 Mon Sep 17 00:00:00 2001 From: dborth Date: Tue, 27 Oct 2009 06:01:20 +0000 Subject: [PATCH] reduce memory fragmentation. fixes out of memory crashes (eg: after many save state loads) --- source/ngc/menu.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/source/ngc/menu.cpp b/source/ngc/menu.cpp index 2e50b51..34ef0af 100644 --- a/source/ngc/menu.cpp +++ b/source/ngc/menu.cpp @@ -972,7 +972,7 @@ static int MenuGameSelection() // populate initial directory listing OpenGameList(); - + gameBrowser.ResetState(); gameBrowser.fileList[0]->SetState(STATE_SELECTED); gameBrowser.TriggerUpdate(); @@ -1030,6 +1030,7 @@ static int MenuGameSelection() HaltParseThread(); // halt parsing HaltGui(); + ResetBrowser(); mainWindow->Remove(&titleTxt); mainWindow->Remove(&buttonWindow); mainWindow->Remove(&gameBrowser); @@ -1623,6 +1624,8 @@ static int MenuGameSaves(int action) len = strlen(romFilename); // find matching files + AllocSaveBuffer(); + for(i=0; i < browser.numEntries; i++) { len2 = strlen(browserList[i].filename); @@ -1653,7 +1656,7 @@ static int MenuGameSaves(int action) { sprintf(scrfile, "%s%s/%s.png", pathPrefix[GCSettings.SaveMethod], GCSettings.SaveFolder, tmp); - AllocSaveBuffer(); + memset(savebuffer, 0, SAVEBUFFERSIZE); if(LoadFile(scrfile, SILENT)) saves.previewImg[j] = new GuiImageData(savebuffer); FreeSaveBuffer(); @@ -1670,6 +1673,7 @@ static int MenuGameSaves(int action) } } + FreeSaveBuffer(); saves.length = j; if(saves.length == 0 && action == 0) @@ -1789,10 +1793,10 @@ static int MenuGameSaves(int action) mainWindow->Remove(&saveBrowser); mainWindow->Remove(&w); mainWindow->Remove(&titleTxt); + ResetBrowser(); return menu; } - /**************************************************************************** * MenuGameSettings ***************************************************************************/