From 2243c7dcad8d1bc861a0b3f956d78a8bc13a422a Mon Sep 17 00:00:00 2001 From: kylethomson Date: Wed, 17 Aug 2011 02:06:50 +0000 Subject: [PATCH] Fixed Multitrack-load crash. Also, read-only can't be toggled while no movie active. Same for multitrack. --- BizHawk.MultiClient/MainForm.cs | 37 +++++++++++++++++++-------- BizHawk.MultiClient/movie/Movie.cs | 3 +-- BizHawk.MultiClient/movie/MovieLog.cs | 2 +- 3 files changed, 28 insertions(+), 14 deletions(-) diff --git a/BizHawk.MultiClient/MainForm.cs b/BizHawk.MultiClient/MainForm.cs index e1997366d0..64f9d49743 100644 --- a/BizHawk.MultiClient/MainForm.cs +++ b/BizHawk.MultiClient/MainForm.cs @@ -1394,16 +1394,23 @@ namespace BizHawk.MultiClient case "Toggle MultiTrack": { - Global.MovieSession.MultiTrack.IsActive = !Global.MovieSession.MultiTrack.IsActive; - if (Global.MovieSession.MultiTrack.IsActive) + if (Global.MainForm.UserMovie.Mode > MOVIEMODE.INACTIVE) { - Global.RenderPanel.AddMessage("MultiTrack Enabled"); - Global.RenderPanel.MT = "Recording None"; + Global.MovieSession.MultiTrack.IsActive = !Global.MovieSession.MultiTrack.IsActive; + if (Global.MovieSession.MultiTrack.IsActive) + { + Global.RenderPanel.AddMessage("MultiTrack Enabled"); + Global.RenderPanel.MT = "Recording None"; + } + else + Global.RenderPanel.AddMessage("MultiTrack Disabled"); + Global.MovieSession.MultiTrack.RecordAll = false; + Global.MovieSession.MultiTrack.CurrentPlayer = 0; } else - Global.RenderPanel.AddMessage("MultiTrack Disabled"); - Global.MovieSession.MultiTrack.RecordAll = false; - Global.MovieSession.MultiTrack.CurrentPlayer = 0; + { + Global.RenderPanel.AddMessage("MultiTrack cannot be enabled while not recording."); + } break; } case "Increment Player": @@ -2140,11 +2147,19 @@ namespace BizHawk.MultiClient public void ToggleReadOnly() { - ReadOnly ^= true; - if (ReadOnly) - Global.RenderPanel.AddMessage("Movie read-only mode"); + if (Global.MainForm.UserMovie.Mode > MOVIEMODE.INACTIVE) + { + ReadOnly ^= true; + if (ReadOnly) + Global.RenderPanel.AddMessage("Movie read-only mode"); + else + Global.RenderPanel.AddMessage("Movie read+write mode"); + } else - Global.RenderPanel.AddMessage("Movie read+write mode"); + { + Global.RenderPanel.AddMessage("No movie active"); + } + } public void SetReadOnly(bool read_only) diff --git a/BizHawk.MultiClient/movie/Movie.cs b/BizHawk.MultiClient/movie/Movie.cs index 8e5b83965d..02cfcfd418 100644 --- a/BizHawk.MultiClient/movie/Movie.cs +++ b/BizHawk.MultiClient/movie/Movie.cs @@ -326,8 +326,7 @@ namespace BizHawk.MultiClient public void LoadLogFromSavestateText(TextReader reader) { - //We are in record mode so replace the movie log with the one from the savestate - Global.MovieSession.MultiTrack.IsActive = false; //adelikat: Hack because this is causing crashes by being true when it shouldn't! + //We are in record mode so replace the movie log with the one from the savestate if (!Global.MovieSession.MultiTrack.IsActive) { if (Global.Config.EnableBackupMovies && MakeBackup && Log.Length() > 0) diff --git a/BizHawk.MultiClient/movie/MovieLog.cs b/BizHawk.MultiClient/movie/MovieLog.cs index 6866d8ed33..7321b8f79c 100644 --- a/BizHawk.MultiClient/movie/MovieLog.cs +++ b/BizHawk.MultiClient/movie/MovieLog.cs @@ -40,7 +40,7 @@ namespace BizHawk.MultiClient if (MovieRecords.Count > frameNum) MovieRecords[frameNum] = frame; else - MovieRecords.Insert(frameNum, frame); + MovieRecords.Add(frame); } public void AddFrameAt(string frame, int frameNum) {