From 7edf3b36adaec74a4023e1688d57cea1822662b8 Mon Sep 17 00:00:00 2001 From: YoshiRulz Date: Tue, 29 Dec 2020 15:42:05 +1000 Subject: [PATCH] Extract a tiny interface from DisplayManager for ApiHawk --- .../DisplayManager/IDisplayManagerForApi.cs | 20 +++++++++++++++++++ src/BizHawk.Client.EmuHawk/Api/ApiManager.cs | 8 ++++---- .../Api/Libraries/GuiApi.cs | 4 ++-- .../DisplayManager/DisplayManager.cs | 6 +++--- .../tools/Lua/Win32LuaLibraries.cs | 4 ++-- 5 files changed, 31 insertions(+), 11 deletions(-) create mode 100644 src/BizHawk.Client.Common/DisplayManager/IDisplayManagerForApi.cs diff --git a/src/BizHawk.Client.Common/DisplayManager/IDisplayManagerForApi.cs b/src/BizHawk.Client.Common/DisplayManager/IDisplayManagerForApi.cs new file mode 100644 index 0000000000..fb0f8a7dda --- /dev/null +++ b/src/BizHawk.Client.Common/DisplayManager/IDisplayManagerForApi.cs @@ -0,0 +1,20 @@ +using System; +using System.Drawing.Text; + +namespace BizHawk.Client.Common +{ + public interface IDisplayManagerForApi + { + PrivateFontCollection CustomFonts { get; } + + OSDManager OSD { get; } + + /// locks the lua surface called + /// already locked, or unknown surface + DisplaySurface LockLuaSurface(string name, bool clear = true); + + /// unlocks this DisplaySurface which had better have been locked as a lua surface + /// already unlocked + void UnlockLuaSurface(DisplaySurface surface); + } +} diff --git a/src/BizHawk.Client.EmuHawk/Api/ApiManager.cs b/src/BizHawk.Client.EmuHawk/Api/ApiManager.cs index 1c1968e2d0..beae1623c7 100644 --- a/src/BizHawk.Client.EmuHawk/Api/ApiManager.cs +++ b/src/BizHawk.Client.EmuHawk/Api/ApiManager.cs @@ -37,7 +37,7 @@ namespace BizHawk.Client.EmuHawk IEmulatorServiceProvider serviceProvider, Action logCallback, IMainFormForApi mainForm, - DisplayManager displayManager, + IDisplayManagerForApi displayManager, InputManager inputManager, IMovieSession movieSession, ToolManager toolManager, @@ -49,7 +49,7 @@ namespace BizHawk.Client.EmuHawk { [typeof(Action)] = logCallback, [typeof(IMainFormForApi)] = mainForm, - [typeof(DisplayManager)] = displayManager, + [typeof(IDisplayManagerForApi)] = displayManager, [typeof(IWindowCoordsTransformer)] = displayManager, [typeof(InputManager)] = inputManager, [typeof(IMovieSession)] = movieSession, @@ -72,7 +72,7 @@ namespace BizHawk.Client.EmuHawk public static IExternalApiProvider Restart( IEmulatorServiceProvider serviceProvider, IMainFormForApi mainForm, - DisplayManager displayManager, + IDisplayManagerForApi displayManager, InputManager inputManager, IMovieSession movieSession, ToolManager toolManager, @@ -89,7 +89,7 @@ namespace BizHawk.Client.EmuHawk IEmulatorServiceProvider serviceProvider, Action logCallback, IMainFormForApi mainForm, - DisplayManager displayManager, + IDisplayManagerForApi displayManager, InputManager inputManager, IMovieSession movieSession, ToolManager toolManager, diff --git a/src/BizHawk.Client.EmuHawk/Api/Libraries/GuiApi.cs b/src/BizHawk.Client.EmuHawk/Api/Libraries/GuiApi.cs index 583e203f5d..2e88d8fcf1 100644 --- a/src/BizHawk.Client.EmuHawk/Api/Libraries/GuiApi.cs +++ b/src/BizHawk.Client.EmuHawk/Api/Libraries/GuiApi.cs @@ -18,7 +18,7 @@ namespace BizHawk.Client.EmuHawk private readonly Action LogCallback; - private readonly DisplayManager _displayManager; + private readonly IDisplayManagerForApi _displayManager; private readonly Dictionary _imageCache = new Dictionary(); @@ -46,7 +46,7 @@ namespace BizHawk.Client.EmuHawk public bool HasGUISurface => _GUISurface != null; - public GuiApi(Action logCallback, DisplayManager displayManager) + public GuiApi(Action logCallback, IDisplayManagerForApi displayManager) { LogCallback = logCallback; _displayManager = displayManager; diff --git a/src/BizHawk.Client.EmuHawk/DisplayManager/DisplayManager.cs b/src/BizHawk.Client.EmuHawk/DisplayManager/DisplayManager.cs index 4994a24594..706993d6ad 100644 --- a/src/BizHawk.Client.EmuHawk/DisplayManager/DisplayManager.cs +++ b/src/BizHawk.Client.EmuHawk/DisplayManager/DisplayManager.cs @@ -30,7 +30,7 @@ namespace BizHawk.Client.EmuHawk /// Its job is to receive OSD and emulator outputs, and produce one single buffer (BitmapBuffer? Texture2d?) for display by the PresentationPanel. /// Details TBD /// - public class DisplayManager : IWindowCoordsTransformer, IDisposable + public class DisplayManager : IDisplayManagerForApi, IWindowCoordsTransformer, IDisposable { private class DisplayManagerRenderTargetProvider : IRenderTargetProvider { @@ -49,7 +49,7 @@ namespace BizHawk.Client.EmuHawk private readonly Func _getIsSecondaryThrottlingDisabled; - public readonly OSDManager OSD; + public OSDManager OSD { get; } private Config GlobalConfig; @@ -214,7 +214,7 @@ namespace BizHawk.Client.EmuHawk /// /// custom fonts that don't need to be installed on the user side /// - public PrivateFontCollection CustomFonts = new PrivateFontCollection(); + public PrivateFontCollection CustomFonts { get; } = new PrivateFontCollection(); private readonly TextureFrugalizer _videoTextureFrugalizer; private readonly Dictionary _luaSurfaceFrugalizers = new Dictionary(); diff --git a/src/BizHawk.Client.EmuHawk/tools/Lua/Win32LuaLibraries.cs b/src/BizHawk.Client.EmuHawk/tools/Lua/Win32LuaLibraries.cs index 8d0057fa6f..91dbab46ec 100644 --- a/src/BizHawk.Client.EmuHawk/tools/Lua/Win32LuaLibraries.cs +++ b/src/BizHawk.Client.EmuHawk/tools/Lua/Win32LuaLibraries.cs @@ -18,7 +18,7 @@ namespace BizHawk.Client.EmuHawk public Win32LuaLibraries( IEmulatorServiceProvider serviceProvider, MainForm mainForm, - DisplayManager displayManager, + IDisplayManagerForApi displayManager, InputManager inputManager, Config config, IEmulator emulator, @@ -104,7 +104,7 @@ namespace BizHawk.Client.EmuHawk EnumerateLuaFunctions(nameof(LuaCanvas), typeof(LuaCanvas), null); // add LuaCanvas to Lua function reference table } - private readonly DisplayManager _displayManager; + private readonly IDisplayManagerForApi _displayManager; private readonly InputManager _inputManager;