From 0795c75246e69d2bf2d947f24011b4cc8b8dec9a Mon Sep 17 00:00:00 2001 From: baldurk Date: Mon, 8 Apr 2024 11:47:25 +0100 Subject: [PATCH] Recursively delete all command buffer nodes to avoid leak --- renderdoc/driver/vulkan/vk_core.cpp | 3 +++ renderdoc/driver/vulkan/vk_core.h | 9 +++++++++ 2 files changed, 12 insertions(+) diff --git a/renderdoc/driver/vulkan/vk_core.cpp b/renderdoc/driver/vulkan/vk_core.cpp index b538d8693..7c208072e 100644 --- a/renderdoc/driver/vulkan/vk_core.cpp +++ b/renderdoc/driver/vulkan/vk_core.cpp @@ -206,7 +206,10 @@ WrappedVulkan::~WrappedVulkan() } for(size_t i = 0; i < m_Partial.commandTree.size(); i++) + { + m_Partial.commandTree[i]->DeleteChildren(); delete m_Partial.commandTree[i]; + } delete m_Replay; } diff --git a/renderdoc/driver/vulkan/vk_core.h b/renderdoc/driver/vulkan/vk_core.h index 6c5495317..2a63f1d76 100644 --- a/renderdoc/driver/vulkan/vk_core.h +++ b/renderdoc/driver/vulkan/vk_core.h @@ -662,6 +662,15 @@ private: rdcarray childCmdNodes; CommandBufferNode *rootNode = NULL; bool renderPassActive = false; + + void DeleteChildren() + { + for(CommandBufferNode *child : childCmdNodes) + { + child->DeleteChildren(); + delete child; + } + } }; // CommandBufferExecuteInfo tracks the position of the execution of a secondary command buffer