Fixed lockup when rom is no longer on disk and power cycle is pressed while debugger tools are opened

This commit is contained in:
Sour 2019-11-16 22:56:01 -05:00
parent 27d512e02f
commit 5f7b2319ce

View file

@ -257,13 +257,13 @@ bool Console::Initialize(VirtualFile &romFile)
bool Console::Initialize(VirtualFile &romFile, VirtualFile &patchFile) bool Console::Initialize(VirtualFile &romFile, VirtualFile &patchFile)
{ {
if(romFile.IsValid()) {
Pause(); Pause();
if(!_romFilepath.empty() && _mapper) { if(!_romFilepath.empty() && _mapper) {
//Ensure we save any battery file before loading a new game //Ensure we save any battery file before loading a new game
SaveBatteries(); SaveBatteries();
} }
if(romFile.IsValid()) {
_videoDecoder->StopThread(); _videoDecoder->StopThread();
shared_ptr<HdPackData> originalHdPackData = _hdData; shared_ptr<HdPackData> originalHdPackData = _hdData;
@ -431,17 +431,22 @@ bool Console::Initialize(VirtualFile &romFile, VirtualFile &patchFile)
return true; return true;
} else { } else {
_hdData = originalHdPackData; _hdData = originalHdPackData;
}
}
//Reset battery source to current game if new game failed to load //Reset battery source to current game if new game failed to load
_batteryManager->Initialize(FolderUtilities::GetFilename(GetRomInfo().RomName, false)); _batteryManager->Initialize(FolderUtilities::GetFilename(GetRomInfo().RomName, false));
if(_mapper) { if(_mapper) {
_videoDecoder->StartThread(); _videoDecoder->StartThread();
} }
Resume();
}
}
shared_ptr<Debugger> debugger = _debugger;
if(debugger) {
debugger->Resume();
}
MessageManager::DisplayMessage("Error", "CouldNotLoadFile", romFile.GetFileName()); MessageManager::DisplayMessage("Error", "CouldNotLoadFile", romFile.GetFileName());
Resume();
return false; return false;
} }