From 23d0cce395bc5adfff148daf913c3d3beb920248 Mon Sep 17 00:00:00 2001 From: Magnus Norddahl Date: Tue, 30 Apr 2019 20:02:00 +0200 Subject: [PATCH] - fix shutdown crash due to GetVulkanFrameBuffer returning null when VulkanFrameBuffer is destroyed --- src/rendering/vulkan/system/vk_framebuffer.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/rendering/vulkan/system/vk_framebuffer.cpp b/src/rendering/vulkan/system/vk_framebuffer.cpp index 95f74b172..dbb6da9c3 100644 --- a/src/rendering/vulkan/system/vk_framebuffer.cpp +++ b/src/rendering/vulkan/system/vk_framebuffer.cpp @@ -93,9 +93,12 @@ VulkanFrameBuffer::VulkanFrameBuffer(void *hMonitor, bool fullscreen, VulkanDevi VulkanFrameBuffer::~VulkanFrameBuffer() { + // screen is already null at this point, but VkHardwareTexture::ResetAll needs it during clean up. Is there a better way we can do this? + auto tmp = screen; + screen = this; + // All descriptors must be destroyed before the descriptor pool in renderpass manager is destroyed VkHardwareTexture::ResetAll(); - VKBuffer::ResetAll(); PPResource::ResetAll(); @@ -107,6 +110,8 @@ VulkanFrameBuffer::~VulkanFrameBuffer() delete mLights; mShadowMap.Reset(); + screen = tmp; + DeleteFrameObjects(); }