reduce memory fragmentation. fixes out of memory crashes (eg: after many save state loads)

This commit is contained in:
dborth 2009-10-27 06:01:20 +00:00
parent 62c005ed34
commit ad8d0e3472

View File

@ -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
***************************************************************************/