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.
This commit is contained in:
Morilli 2024-08-27 23:47:11 +02:00
parent 532dc06e64
commit 8956657a34
1 changed files with 2 additions and 7 deletions

View File

@ -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);