From 5e7d666548a26af7b1b3a284fb97790e894bba43 Mon Sep 17 00:00:00 2001 From: adelikat Date: Sun, 19 Apr 2020 13:54:30 -0500 Subject: [PATCH] Tastudio - speed up drawing a bit by caching input state while drawing a row of input --- BizHawk.Client.Common/movie/tasproj/TasMovie.cs | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/BizHawk.Client.Common/movie/tasproj/TasMovie.cs b/BizHawk.Client.Common/movie/tasproj/TasMovie.cs index 65c3436b40..a25e434d51 100644 --- a/BizHawk.Client.Common/movie/tasproj/TasMovie.cs +++ b/BizHawk.Client.Common/movie/tasproj/TasMovie.cs @@ -74,22 +74,29 @@ namespace BizHawk.Client.Common } } + + private (int Frame, IMovieController Controller) _displayCache = (-1, new Bk2Controller("", NullController.Instance.Definition)); + /// /// Returns the mnemonic value for boolean buttons, and actual value for floats, /// for a given frame and button. /// public string DisplayValue(int frame, string buttonName) { - var adapter = GetInputState(frame); - return CreateDisplayValueForButton(adapter, buttonName); + if (_displayCache.Frame != frame) + { + _displayCache = (frame, GetInputState(frame)); + } + + return CreateDisplayValueForButton(_displayCache.Controller, Global.Emulator.SystemId, buttonName); } - private string CreateDisplayValueForButton(IController adapter, string buttonName) + private static string CreateDisplayValueForButton(IController adapter, string systemId, string buttonName) { if (adapter.Definition.BoolButtons.Contains(buttonName)) { return adapter.IsPressed(buttonName) - ? Bk2MnemonicLookup.Lookup(buttonName, Global.Emulator.SystemId).ToString() + ? Bk2MnemonicLookup.Lookup(buttonName, systemId).ToString() : ""; }