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>