Ensure Window Close does not fire from Dispose on Clyde.

This commit is contained in:
Pieter-Jan Briers
2019-05-08 21:27:30 +02:00
parent 4c02a2c059
commit dc6e186a26
+16 -1
View File
@@ -96,6 +96,8 @@ namespace Robust.Client.Graphics.Clyde
private bool _quartResLights = true;
private bool _disposing;
public override void SetWindowTitle(string title)
{
_window.Title = title;
@@ -183,7 +185,7 @@ namespace Robust.Client.Graphics.Clyde
};
_window.KeyUp += (sender, eventArgs) => { _gameController.GameController.KeyUp((KeyEventArgs) eventArgs); };
_window.Closed += (sender, eventArgs) => { _gameController.GameController.Shutdown("Window closed"); };
_window.Closed += _onWindowClosed;
_window.Resize += (sender, eventArgs) =>
{
var oldSize = _windowSize;
@@ -539,6 +541,7 @@ namespace Robust.Client.Graphics.Clyde
public void Dispose()
{
_disposing = true;
_window.Dispose();
_shutdownAudio();
}
@@ -585,6 +588,18 @@ namespace Robust.Client.Graphics.Clyde
PixelFormat.Rgba, PixelType.Float, IntPtr.Zero);
}
private void _onWindowClosed(object sender, EventArgs args)
{
if (_disposing)
{
// OpenTK seems to fire Closed when closing the window via Dispose on Windows.
// So uh, ignore it.
return;
}
_gameController.GameController.Shutdown("Window closed");
}
[StructLayout(LayoutKind.Sequential)]
[PublicAPI]
private readonly struct Vertex2D