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;