Fix DestroyPlatformWindow crashing when called in Shutdown of the application

This commit is contained in:
2025-01-08 20:22:42 -05:00
parent 14e49c163f
commit 5b4b6f2c52
2 changed files with 11 additions and 17 deletions

View File

@@ -53,7 +53,10 @@ namespace Juliet
}
// Destroy all Windows that are still alive
DestroyPlatformWindow(CurrentDisplayDevice->MainWindow);
if (CurrentDisplayDevice->MainWindow)
{
DestroyPlatformWindow(CurrentDisplayDevice->MainWindow);
}
CurrentDisplayDevice->Shutdown(CurrentDisplayDevice);
// Free anything that was freed by the shutdown and then free the display
@@ -89,11 +92,14 @@ namespace Juliet
void DestroyPlatformWindow(NonNullPtr<Window> window)
{
Assert(CurrentDisplayDevice->MainWindow == window.Get());
HideWindow(window);
CurrentDisplayDevice->DestroyPlatformWindow(CurrentDisplayDevice, window);
Free(window.Get());
CurrentDisplayDevice->MainWindow = nullptr;
}
void ShowWindow(NonNullPtr<Window> window)

View File

@@ -31,12 +31,14 @@ namespace Juliet
{
Log(LogLevel::Message, LogCategory::Editor, "Shutdown Editor Application...");
// DestroyOSWindow(MainWindow);
if (MainWindow )
{
DestroyPlatformWindow(MainWindow);
}
}
void Win32EditorApplication::Update()
{
// UpdateOSWindowState(MainWindow);
SystemEvent evt;
while (GetEvent(evt))
{
@@ -47,20 +49,6 @@ namespace Juliet
Running = false;
}
}
if (evt.Type == EventType::Key_Down)
{
if (evt.Data.Keyboard.Key.ScanCode == ScanCode::Escape)
{
Running = false;
}
}
// Other way to do it
if (IsKeyDown(ScanCode::Q))
{
Running = false;
}
}
}