fix exception popping up when Dispose()'ing DisplayManagerBase with OpenGL
This commit is contained in:
parent
12830bab4e
commit
e7f4ad8220
|
@ -27,7 +27,7 @@ namespace BizHawk.Client.Common
|
||||||
/// Its job is to receive OSD and emulator outputs, and produce one single buffer (BitmapBuffer? Texture2d?) for display by the PresentationPanel.
|
/// Its job is to receive OSD and emulator outputs, and produce one single buffer (BitmapBuffer? Texture2d?) for display by the PresentationPanel.
|
||||||
/// Details TBD
|
/// Details TBD
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class DisplayManagerBase : IDisposable
|
public abstract class DisplayManagerBase : IDisposable
|
||||||
{
|
{
|
||||||
private static DisplaySurface CreateDisplaySurface(int w, int h) => new(w, h);
|
private static DisplaySurface CreateDisplaySurface(int w, int h) => new(w, h);
|
||||||
|
|
||||||
|
@ -132,6 +132,10 @@ namespace BizHawk.Client.Common
|
||||||
{
|
{
|
||||||
if (Disposed) return;
|
if (Disposed) return;
|
||||||
Disposed = true;
|
Disposed = true;
|
||||||
|
|
||||||
|
// OpenGL context needs to be active when Dispose()'ing
|
||||||
|
ActivateOpenGLContext();
|
||||||
|
|
||||||
_videoTextureFrugalizer.Dispose();
|
_videoTextureFrugalizer.Dispose();
|
||||||
foreach (var f in _apiHawkSurfaceFrugalizers.Values)
|
foreach (var f in _apiHawkSurfaceFrugalizers.Values)
|
||||||
{
|
{
|
||||||
|
@ -197,9 +201,11 @@ namespace BizHawk.Client.Common
|
||||||
|
|
||||||
private RetroShaderChain _shaderChainUser;
|
private RetroShaderChain _shaderChainUser;
|
||||||
|
|
||||||
protected virtual void ActivateGraphicsControlContext() => throw new NotImplementedException();
|
public abstract void ActivateOpenGLContext();
|
||||||
|
|
||||||
protected virtual void SwapBuffersOfGraphicsControl() => throw new NotImplementedException();
|
protected abstract void ActivateGraphicsControlContext();
|
||||||
|
|
||||||
|
protected abstract void SwapBuffersOfGraphicsControl();
|
||||||
|
|
||||||
public void RefreshUserShader()
|
public void RefreshUserShader()
|
||||||
{
|
{
|
||||||
|
|
|
@ -36,7 +36,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
_getIsSecondaryThrottlingDisabled = getIsSecondaryThrottlingDisabled;
|
_getIsSecondaryThrottlingDisabled = getIsSecondaryThrottlingDisabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ActivateOpenGLContext()
|
public override void ActivateOpenGLContext()
|
||||||
{
|
{
|
||||||
if (_gl.DispMethodEnum == EDispMethod.OpenGL)
|
if (_gl.DispMethodEnum == EDispMethod.OpenGL)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue