diff --git a/src/vkcv/SwapchainManager.cpp b/src/vkcv/SwapchainManager.cpp index ef8f9c989d43c58a806fe160289107a858e1a562..6295c103206d69be91389852072ddcb89a9d87b5 100644 --- a/src/vkcv/SwapchainManager.cpp +++ b/src/vkcv/SwapchainManager.cpp @@ -34,8 +34,16 @@ namespace vkcv { vkcv_log(LogLevel::ERROR, "Invalid id"); return; } - m_context->getDevice().destroySwapchainKHR(m_swapchains[id].getSwapchain()); - m_context->getInstance().destroySurfaceKHR(m_swapchains[id].getSurface()); + Swapchain& swapchain = m_swapchains[id]; + + if(swapchain.m_Swapchain){ + m_context->getDevice().destroySwapchainKHR(swapchain.m_Swapchain); + } + if(swapchain.m_Surface.handle) { + m_context->getInstance().destroySurfaceKHR(swapchain.m_Surface.handle); + } + swapchain.m_Swapchain = nullptr; + swapchain.m_Surface.handle = nullptr; } void SwapchainManager::signalRecreation(const SwapchainHandle handle) {