mirror of
https://github.com/ClassiCube/ClassiCube.git
synced 2025-01-23 09:34:35 -05:00
Fix BadWindow errors that occurred when closing an X11 window.
This commit is based on OpenTK's fix in:
ec31675fc8
...and was adapted for ClassicalSharp's modified OpenTK code.
This also fixes options not being saved on Linux when the client or
launcher closes, at least on Debian Jessie. The default error handler
for Xlib is to print a message explaining the error to the console and
then call exit(1). If that happens, the Options.Save() calls in
Game.Dispose() and LauncherWindow.Run() are never reached.
This commit is contained in:
parent
b66fdffae9
commit
e76983ef18
1 changed files with 7 additions and 8 deletions
|
@ -326,8 +326,10 @@ namespace OpenTK.Platform.X11 {
|
|||
|
||||
if (!ce.Cancel) {
|
||||
isExiting = true;
|
||||
Debug.Print("Destroying window.");
|
||||
API.XDestroyWindow(window.Display, window.WindowHandle);
|
||||
|
||||
DestroyWindow();
|
||||
if (Closed != null)
|
||||
Closed(this, EventArgs.Empty);
|
||||
}
|
||||
} break;
|
||||
|
||||
|
@ -335,8 +337,6 @@ namespace OpenTK.Platform.X11 {
|
|||
Debug.Print("Window destroyed");
|
||||
exists = false;
|
||||
|
||||
if (Closed != null)
|
||||
Closed(this, EventArgs.Empty);
|
||||
break;
|
||||
|
||||
case XEventName.ConfigureNotify:
|
||||
|
@ -766,7 +766,9 @@ namespace OpenTK.Platform.X11 {
|
|||
|
||||
public void DestroyWindow() {
|
||||
Debug.Print("X11GLNative shutdown sequence initiated.");
|
||||
API.XSync(window.Display, true);
|
||||
API.XDestroyWindow(window.Display, window.WindowHandle);
|
||||
exists = false;
|
||||
}
|
||||
|
||||
public Point PointToClient(Point point) {
|
||||
|
@ -793,10 +795,7 @@ namespace OpenTK.Platform.X11 {
|
|||
if (manuallyCalled) {
|
||||
if (window != null && window.WindowHandle != IntPtr.Zero) {
|
||||
if (Exists) {
|
||||
API.XDestroyWindow(window.Display, window.WindowHandle);
|
||||
|
||||
while (Exists)
|
||||
ProcessEvents();
|
||||
DestroyWindow();
|
||||
}
|
||||
window.Dispose();
|
||||
window = null;
|
||||
|
|
Loading…
Add table
Reference in a new issue