From a1fb128a70eb129b63c25d3eccd9186cfe17bf92 Mon Sep 17 00:00:00 2001 From: the_fiddler Date: Sun, 11 Nov 2007 20:23:25 +0000 Subject: [PATCH] Fixed shutdown sequence in Windows, so that GameWindow.Exit() and pressing the 'close' button behave the same. --- Source/OpenTK/GameWindow.cs | 9 +++++++-- Source/OpenTK/Platform/Windows/WinGLNative.cs | 15 ++++++++------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/Source/OpenTK/GameWindow.cs b/Source/OpenTK/GameWindow.cs index 7b2eb7b7..1498096e 100644 --- a/Source/OpenTK/GameWindow.cs +++ b/Source/OpenTK/GameWindow.cs @@ -550,9 +550,7 @@ namespace OpenTK if (Exists) glWindow.DestroyWindow(); while (this.Exists) - { this.ProcessEvents(); - } } } } @@ -1327,6 +1325,13 @@ namespace OpenTK class GameWindowExitException : ApplicationException { + public override string Message + { + get + { + return "GameWindow exit event. If this is caught in Visual Studio, don't worry - this is perfectly normal."; + } + } } #endregion diff --git a/Source/OpenTK/Platform/Windows/WinGLNative.cs b/Source/OpenTK/Platform/Windows/WinGLNative.cs index 4421c40f..2db807cf 100644 --- a/Source/OpenTK/Platform/Windows/WinGLNative.cs +++ b/Source/OpenTK/Platform/Windows/WinGLNative.cs @@ -110,11 +110,14 @@ namespace OpenTK.Platform.Windows return; case WindowMessage.CLOSE: - this.DestroyWindow(); + //this.DestroyWindow(); + this.OnDestroy(EventArgs.Empty); return; case WindowMessage.DESTROY: - this.OnDestroy(EventArgs.Empty); + //this.OnDestroy(EventArgs.Empty); + exists = false; + isExiting = true; break; case WindowMessage.QUIT: @@ -368,9 +371,7 @@ namespace OpenTK.Platform.Windows } if (this.Create != null) - { this.Create(this, e); - } } #endregion @@ -392,11 +393,10 @@ namespace OpenTK.Platform.Windows public void OnDestroy(EventArgs e) { + Debug.Print("Destroy event fired from window: {0}", window.ToString()); if (this.Destroy != null) - { this.Destroy(this, e); - } - + /* if (this.Handle != IntPtr.Zero) { Debug.Print("Window handle {0} destroyed.", this.Handle); @@ -404,6 +404,7 @@ namespace OpenTK.Platform.Windows //this.Dispose(); exists = false; } + */ //API.PostQuitMessage(0); }