Fix DestroyPlatformWindow crashing when called in Shutdown of the application
This commit is contained in:
@@ -53,7 +53,10 @@ namespace Juliet
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Destroy all Windows that are still alive
|
// Destroy all Windows that are still alive
|
||||||
DestroyPlatformWindow(CurrentDisplayDevice->MainWindow);
|
if (CurrentDisplayDevice->MainWindow)
|
||||||
|
{
|
||||||
|
DestroyPlatformWindow(CurrentDisplayDevice->MainWindow);
|
||||||
|
}
|
||||||
|
|
||||||
CurrentDisplayDevice->Shutdown(CurrentDisplayDevice);
|
CurrentDisplayDevice->Shutdown(CurrentDisplayDevice);
|
||||||
// Free anything that was freed by the shutdown and then free the display
|
// Free anything that was freed by the shutdown and then free the display
|
||||||
@@ -89,11 +92,14 @@ namespace Juliet
|
|||||||
|
|
||||||
void DestroyPlatformWindow(NonNullPtr<Window> window)
|
void DestroyPlatformWindow(NonNullPtr<Window> window)
|
||||||
{
|
{
|
||||||
|
Assert(CurrentDisplayDevice->MainWindow == window.Get());
|
||||||
|
|
||||||
HideWindow(window);
|
HideWindow(window);
|
||||||
|
|
||||||
CurrentDisplayDevice->DestroyPlatformWindow(CurrentDisplayDevice, window);
|
CurrentDisplayDevice->DestroyPlatformWindow(CurrentDisplayDevice, window);
|
||||||
|
|
||||||
Free(window.Get());
|
Free(window.Get());
|
||||||
|
CurrentDisplayDevice->MainWindow = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ShowWindow(NonNullPtr<Window> window)
|
void ShowWindow(NonNullPtr<Window> window)
|
||||||
|
|||||||
@@ -31,12 +31,14 @@ namespace Juliet
|
|||||||
{
|
{
|
||||||
Log(LogLevel::Message, LogCategory::Editor, "Shutdown Editor Application...");
|
Log(LogLevel::Message, LogCategory::Editor, "Shutdown Editor Application...");
|
||||||
|
|
||||||
// DestroyOSWindow(MainWindow);
|
if (MainWindow )
|
||||||
|
{
|
||||||
|
DestroyPlatformWindow(MainWindow);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Win32EditorApplication::Update()
|
void Win32EditorApplication::Update()
|
||||||
{
|
{
|
||||||
// UpdateOSWindowState(MainWindow);
|
|
||||||
SystemEvent evt;
|
SystemEvent evt;
|
||||||
while (GetEvent(evt))
|
while (GetEvent(evt))
|
||||||
{
|
{
|
||||||
@@ -47,20 +49,6 @@ namespace Juliet
|
|||||||
Running = false;
|
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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user