From ef6e6c74cf906cdae262bf2516d993e802e8b370 Mon Sep 17 00:00:00 2001 From: Souryo Date: Wed, 9 Aug 2017 17:44:52 -0400 Subject: [PATCH] HD Pack Builder: Fixed crash when using "Power Off" while recording --- Core/Console.cpp | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/Core/Console.cpp b/Core/Console.cpp index fb1f823c..ccb526fe 100644 --- a/Core/Console.cpp +++ b/Core/Console.cpp @@ -57,6 +57,7 @@ void Console::Release() bool Console::Initialize(VirtualFile &romFile, VirtualFile &patchFile) { SoundMixer::StopAudio(); + StopRecordingHdPack(); if(!_romFilepath.empty() && _mapper) { //Ensure we save any battery file before loading a new game @@ -442,6 +443,7 @@ void Console::Run() } _rewindManager.reset(); + StopRecordingHdPack(); SoundMixer::StopAudio(); MovieManager::Stop(); SoundMixer::StopRecording(); @@ -657,17 +659,19 @@ void Console::StartRecordingHdPack(string saveFolder, ScaleFilterType filterType void Console::StopRecordingHdPack() { - Console::Pause(); - std::stringstream saveState; - Instance->SaveState(saveState); - - Instance->_memoryManager->UnregisterIODevice(Instance->_ppu.get()); - Instance->_ppu.reset(); - Instance->_ppu.reset(new PPU(Instance->_mapper.get())); - Instance->_memoryManager->RegisterIODevice(Instance->_ppu.get()); + if(Instance->_hdPackBuilder) { + Console::Pause(); + std::stringstream saveState; + Instance->SaveState(saveState); - Instance->_hdPackBuilder.reset(); + Instance->_memoryManager->UnregisterIODevice(Instance->_ppu.get()); + Instance->_ppu.reset(); + Instance->_ppu.reset(new PPU(Instance->_mapper.get())); + Instance->_memoryManager->RegisterIODevice(Instance->_ppu.get()); - Instance->LoadState(saveState); - Console::Resume(); + Instance->_hdPackBuilder.reset(); + + Instance->LoadState(saveState); + Console::Resume(); + } } \ No newline at end of file