From 8956657a34c575e3cdb59d38c6cf9a24dbfe1317 Mon Sep 17 00:00:00 2001 From: Morilli <35152647+Morilli@users.noreply.github.com> Date: Tue, 27 Aug 2024 23:47:11 +0200 Subject: [PATCH] lazy-initialize TasStateManager and markers This is a bit of a dangerous change. Ideally this will fix the TasStateManager being initialized twice for loaded movies and have no other noticable effect. --- src/BizHawk.Client.Common/movie/tasproj/TasMovie.cs | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/BizHawk.Client.Common/movie/tasproj/TasMovie.cs b/src/BizHawk.Client.Common/movie/tasproj/TasMovie.cs index 3f5115f841..3cce7799e8 100644 --- a/src/BizHawk.Client.Common/movie/tasproj/TasMovie.cs +++ b/src/BizHawk.Client.Common/movie/tasproj/TasMovie.cs @@ -25,10 +25,6 @@ namespace BizHawk.Client.Common Header[HeaderKeys.MovieVersion] = $"BizHawk v2.0 Tasproj v{CurrentVersion.ToString(CultureInfo.InvariantCulture)}"; Markers = new TasMovieMarkerList(this); Markers.CollectionChanged += Markers_CollectionChanged; - Markers.Add(0, "Power on"); - TasStateManager = new ZwinderStateManager( - session.Settings.DefaultTasStateManagerSettings, - IsReserved); } public override void Attach(IEmulator emulator) @@ -45,19 +41,18 @@ namespace BizHawk.Client.Common _inputPollable = emulator.AsInputPollable(); + TasStateManager ??= new ZwinderStateManager(Session.Settings.DefaultTasStateManagerSettings, IsReserved); if (StartsFromSavestate) { TasStateManager.Engage(BinarySavestate); } else { - var ms = new MemoryStream(); if (StartsFromSaveRam && emulator.HasSaveRam()) { emulator.AsSaveRam().StoreSaveRam(SaveRam!); } - emulator.AsStatable().SaveStateBinary(new BinaryWriter(ms)); - TasStateManager.Engage(ms.ToArray()); + TasStateManager.Engage(emulator.AsStatable().CloneSavestate()); } base.Attach(emulator);