From 32f5ece894c13a10a51648be7971dc23a0dce02c Mon Sep 17 00:00:00 2001 From: Sour Date: Mon, 23 Dec 2019 16:39:06 -0500 Subject: [PATCH] Rewind: Fixed rewind no longer processing inputs after a power cycle --- Core/Console.cpp | 2 ++ Core/RewindManager.cpp | 9 +++++++-- Core/RewindManager.h | 2 ++ 3 files changed, 11 insertions(+), 2 deletions(-) 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();