From f06752b08dda09a7778b39f4212591405bb094a2 Mon Sep 17 00:00:00 2001 From: SirLynix Date: Sun, 28 Jan 2024 13:56:06 +0100 Subject: [PATCH] Renderer/WindowSwapchain: Fix calls to GetSize() happening after window destruction --- src/Nazara/Renderer/WindowSwapchain.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/Nazara/Renderer/WindowSwapchain.cpp b/src/Nazara/Renderer/WindowSwapchain.cpp index dd7dc29d2..8997b4fa6 100644 --- a/src/Nazara/Renderer/WindowSwapchain.cpp +++ b/src/Nazara/Renderer/WindowSwapchain.cpp @@ -32,7 +32,16 @@ namespace Nz const Vector2ui& WindowSwapchain::GetSize() const { - return (m_swapchain) ? m_swapchain->GetSize() : m_window->GetSize(); + if (m_swapchain) + return m_swapchain->GetSize(); + else if (m_window) + return m_window->GetSize(); + else + { + // Window has been destroyed, return a dummy size + static constexpr Vector2ui dummySize(1, 1); + return dummySize; + } } void WindowSwapchain::ConnectSignals() @@ -53,6 +62,7 @@ namespace Nz OnSwapchainDestroy(this); m_swapchain.reset(); m_isMinimized = true; + m_window = nullptr; }); m_onGainedFocus.Connect(windowEvents.OnGainedFocus, [this](const WindowEventHandler* /*eventHandler*/)