From 8fbd45b03fc00f15fdb3ff70108ffe1d7c3e5b65 Mon Sep 17 00:00:00 2001 From: zeromus Date: Mon, 10 Aug 2020 03:46:48 -0400 Subject: [PATCH] rewinder was being disabled as an approximation for clearing it when loading state while in a movie session. change it to actually just clear it (by recreating it). I decided this was safer than making the rewinder learn how to clear itself. Should fix #2280 --- src/BizHawk.Client.EmuHawk/MainForm.cs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/BizHawk.Client.EmuHawk/MainForm.cs b/src/BizHawk.Client.EmuHawk/MainForm.cs index 7e9a797140..222a8a8d27 100644 --- a/src/BizHawk.Client.EmuHawk/MainForm.cs +++ b/src/BizHawk.Client.EmuHawk/MainForm.cs @@ -887,13 +887,17 @@ namespace BizHawk.Client.EmuHawk public IRewinder Rewinder { get; private set; } public void CreateRewinder() + { + RecreateRewinder(); + AddOnScreenMessage(Rewinder?.Active == true ? "Rewind started" : "Rewind disabled"); + } + + void RecreateRewinder() { Rewinder?.Dispose(); Rewinder = Emulator.HasSavestates() && Config.Rewind.Enabled ? new Zwinder(Emulator.AsStatable(), Config.Rewind) : null; - - AddOnScreenMessage(Rewinder?.Active == true ? "Rewind started" : "Rewind disabled"); } private FirmwareManager FirmwareManager => GlobalWin.FirmwareManager; @@ -3984,9 +3988,11 @@ namespace BizHawk.Client.EmuHawk UpdateToolsLoadstate(); InputManager.AutoFireController.ClearStarts(); + //we don't want to analyze how to intermix movies, rewinding, and states + //so purge rewind history when loading a state while doing a movie if (!IsRewindSlave && MovieSession.Movie.IsActive()) { - DisableRewind(); + RecreateRewinder(); } if (!suppressOSD)