diff --git a/Core/Console.cpp b/Core/Console.cpp index 4b2dd320..60fb5d2e 100644 --- a/Core/Console.cpp +++ b/Core/Console.cpp @@ -406,6 +406,8 @@ bool Console::Initialize(VirtualFile &romFile, VirtualFile &patchFile, bool forP if(!forPowerCycle) { _rewindManager.reset(new RewindManager(shared_from_this())); _notificationManager->RegisterNotificationListener(_rewindManager); + } else { + _rewindManager->Initialize(); } //Poll controller input after creating rewind manager, to make sure it catches the first frame's input diff --git a/Core/RewindManager.cpp b/Core/RewindManager.cpp index 5825d69f..55af2c4c 100644 --- a/Core/RewindManager.cpp +++ b/Core/RewindManager.cpp @@ -16,8 +16,7 @@ RewindManager::RewindManager(shared_ptr console) _hasHistory = false; AddHistoryBlock(); - _console->GetControlManager()->RegisterInputProvider(this); - _console->GetControlManager()->RegisterInputRecorder(this); + Initialize(); } RewindManager::~RewindManager() @@ -26,6 +25,12 @@ RewindManager::~RewindManager() _console->GetControlManager()->UnregisterInputRecorder(this); } +void RewindManager::Initialize() +{ + _console->GetControlManager()->RegisterInputProvider(this); + _console->GetControlManager()->RegisterInputRecorder(this); +} + void RewindManager::ClearBuffer() { _hasHistory = false; diff --git a/Core/RewindManager.h b/Core/RewindManager.h index c09ea5f0..23519353 100644 --- a/Core/RewindManager.h +++ b/Core/RewindManager.h @@ -56,6 +56,8 @@ public: RewindManager(shared_ptr console); virtual ~RewindManager(); + void Initialize(); + void ProcessNotification(ConsoleNotificationType type, void* parameter) override; void ProcessEndOfFrame();