From d609a7c8bf67296f85e47b1a78dd7ed90580f8e8 Mon Sep 17 00:00:00 2001 From: Stuart Kenny Date: Thu, 25 Nov 2021 15:32:44 +0000 Subject: [PATCH] Destroy backbuffer when shutting down vulkan conext. --- libretro/LibretroVulkanContext.cpp | 31 +++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/libretro/LibretroVulkanContext.cpp b/libretro/LibretroVulkanContext.cpp index baec2450d5..06c75af08f 100644 --- a/libretro/LibretroVulkanContext.cpp +++ b/libretro/LibretroVulkanContext.cpp @@ -143,23 +143,28 @@ void LibretroVulkanContext::CreateDrawContext() { } void LibretroVulkanContext::Shutdown() { - LibretroHWRenderContext::Shutdown(); + if (!vk) { + return; + } - if (!vk) { - return; - } + if (draw_) + draw_->HandleEvent(Draw::Event::LOST_BACKBUFFER, vk->GetBackbufferWidth(), vk->GetBackbufferHeight()); - vk->WaitUntilQueueIdle(); + delete draw_; + draw_ = nullptr; - vk->DestroySwapchain(); - vk->DestroySurface(); - vk->DestroyDevice(); - vk->DestroyInstance(); - delete vk; - vk = nullptr; + vk->WaitUntilQueueIdle(); - finalize_glslang(); - vk_libretro_shutdown(); + vk->DestroySwapchain(); + vk->DestroySurface(); + vk->DestroyDevice(); + vk->DestroyInstance(); + + delete vk; + vk = nullptr; + + finalize_glslang(); + vk_libretro_shutdown(); } void *LibretroVulkanContext::GetAPIContext() { return vk; }