From 07fddd31d7df2fa4a5f226b55e9cfd48543a47d0 Mon Sep 17 00:00:00 2001 From: adelikat <adelikat@expion.com> Date: Tue, 4 Aug 2015 20:24:49 -0400 Subject: [PATCH] Tastudio - tweak rerecord counting to what was probably intended, only increment rerecord count on Invalidate() if Invalidate() actually invalidated any states --- BizHawk.Client.Common/movie/tasproj/TasMovie.cs | 8 ++++++-- BizHawk.Client.Common/movie/tasproj/TasStateManager.cs | 9 ++++++++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/BizHawk.Client.Common/movie/tasproj/TasMovie.cs b/BizHawk.Client.Common/movie/tasproj/TasMovie.cs index a8abdf9ddb..464bf8451d 100644 --- a/BizHawk.Client.Common/movie/tasproj/TasMovie.cs +++ b/BizHawk.Client.Common/movie/tasproj/TasMovie.cs @@ -176,9 +176,13 @@ namespace BizHawk.Client.Common private void InvalidateAfter(int frame) { LagLog.RemoveFrom(frame); - StateManager.Invalidate(frame + 1); + var anyInvalidated = StateManager.Invalidate(frame + 1); Changes = true; // TODO check if this actually removed anything before flagging changes - base.Rerecords++; + + if (anyInvalidated) + { + base.Rerecords++; + } } /// <summary> diff --git a/BizHawk.Client.Common/movie/tasproj/TasStateManager.cs b/BizHawk.Client.Common/movie/tasproj/TasStateManager.cs index 8cac9f61e6..cf357adb9b 100644 --- a/BizHawk.Client.Common/movie/tasproj/TasStateManager.cs +++ b/BizHawk.Client.Common/movie/tasproj/TasStateManager.cs @@ -322,8 +322,10 @@ namespace BizHawk.Client.Common /// <summary> /// Clears out all savestates after the given frame number /// </summary> - public void Invalidate(int frame) + public bool Invalidate(int frame) { + bool anyInvalidated = false; + if (Any()) { if (!_movie.StartsFromSavestate && frame == 0) // Never invalidate frame 0 on a non-savestate-anchored movie @@ -334,6 +336,9 @@ namespace BizHawk.Client.Common var statesToRemove = States .Where(x => x.Key >= frame) .ToList(); + + anyInvalidated = statesToRemove.Any(); + foreach (var state in statesToRemove) { if (state.Value == null) @@ -346,6 +351,8 @@ namespace BizHawk.Client.Common CallInvalidateCallback(frame); } + + return anyInvalidated; } /// <summary>