diff --git a/BizHawk.Client.EmuHawk/MainForm.Hotkey.cs b/BizHawk.Client.EmuHawk/MainForm.Hotkey.cs index 641d76714a..9e838d02f1 100644 --- a/BizHawk.Client.EmuHawk/MainForm.Hotkey.cs +++ b/BizHawk.Client.EmuHawk/MainForm.Hotkey.cs @@ -14,6 +14,10 @@ namespace BizHawk.Client.EmuHawk // General case "Pause": + // check this here since TogglePause() has no idea who triggered it + // and we need to treat pause hotkey specially in tastudio + if (GlobalWin.MainForm.EmulatorPaused) + GlobalWin.Tools.TAStudio.IgnoreSeekFrame = true; TogglePause(); break; case "Toggle Throttle": diff --git a/BizHawk.Client.EmuHawk/tools/TAStudio/PlaybackBox.cs b/BizHawk.Client.EmuHawk/tools/TAStudio/PlaybackBox.cs index c6aeadfe5b..9eff7e6ec9 100644 --- a/BizHawk.Client.EmuHawk/tools/TAStudio/PlaybackBox.cs +++ b/BizHawk.Client.EmuHawk/tools/TAStudio/PlaybackBox.cs @@ -97,6 +97,8 @@ namespace BizHawk.Client.EmuHawk private void PauseButton_Click(object sender, EventArgs e) { + if (GlobalWin.MainForm.EmulatorPaused) + Tastudio.IgnoreSeekFrame = true; Tastudio.TogglePause(); } diff --git a/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.ListView.cs b/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.ListView.cs index b182669ae4..7eec32cda3 100644 --- a/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.ListView.cs +++ b/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.ListView.cs @@ -92,6 +92,11 @@ namespace BizHawk.Client.EmuHawk public void StopSeeking() { _seekBackgroundWorker.CancelAsync(); + if (IgnoreSeekFrame) + { + GlobalWin.MainForm.UnpauseEmulator(); + IgnoreSeekFrame = false; + } } public bool FloatEditingMode @@ -393,6 +398,8 @@ namespace BizHawk.Client.EmuHawk if (e.Button == MouseButtons.Middle) { + if (GlobalWin.MainForm.EmulatorPaused) + IgnoreSeekFrame = false; TogglePause(); return; } diff --git a/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs b/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs index 4926017e63..b9959e8ca7 100644 --- a/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs +++ b/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs @@ -51,6 +51,7 @@ namespace BizHawk.Client.EmuHawk } public bool IsInMenuLoop { get; private set; } + public bool IgnoreSeekFrame { get; set; } [ConfigPersist] public TAStudioSettings Settings { get; set; } @@ -141,6 +142,7 @@ namespace BizHawk.Client.EmuHawk InitializeSeekWorker(); WantsToControlStopMovie = true; + WantsToControlRestartMovie = true; TasPlaybackBox.Tastudio = this; MarkerControl.Tastudio = this; BookMarkControl.Tastudio = this; @@ -153,7 +155,7 @@ namespace BizHawk.Client.EmuHawk TasView.PointedCellChanged += TasView_PointedCellChanged; TasView.MultiSelect = true; TasView.MaxCharactersInHorizontal = 1; - WantsToControlRestartMovie = true; + IgnoreSeekFrame = false; } private void AutosaveTimerEventProcessor(object sender, EventArgs e)