1
0
mirror of https://github.com/ocornut/imgui.git synced 2024-11-27 17:10:57 +01:00

Demo: example tree used by Property Editor & Selection demos properly freed on app closure. (#8158)

This commit is contained in:
ocornut 2024-11-18 18:46:27 +01:00
parent 142827f7d8
commit eb0ad66d88
2 changed files with 12 additions and 1 deletions

View File

@ -53,6 +53,8 @@ Other changes:
- Error Handling: fixed cases where recoverable error handling would crash when - Error Handling: fixed cases where recoverable error handling would crash when
processing errors outside of the NewFrame()..EndFrame() scope. (#1651) processing errors outside of the NewFrame()..EndFrame() scope. (#1651)
- Demo: example tree used by Property Editor & Selection demos properly freed
on application closure. (#8158) [@Legulysse]
- Examples: Win32+DX12: Using a basic free-list allocator to manage multiple - Examples: Win32+DX12: Using a basic free-list allocator to manage multiple
SRV descriptors. SRV descriptors.

View File

@ -308,6 +308,13 @@ static ExampleTreeNode* ExampleTree_CreateNode(const char* name, int uid, Exampl
return node; return node;
} }
static void ExampleTree_DestroyNode(ExampleTreeNode* node)
{
for (ExampleTreeNode* child_node : node->Childs)
ExampleTree_DestroyNode(child_node);
IM_DELETE(node);
}
// Create example tree data // Create example tree data
// (this allocates _many_ more times than most other code in either Dear ImGui or others demo) // (this allocates _many_ more times than most other code in either Dear ImGui or others demo)
static ExampleTreeNode* ExampleTree_CreateDemoTree() static ExampleTreeNode* ExampleTree_CreateDemoTree()
@ -343,7 +350,7 @@ static ExampleTreeNode* ExampleTree_CreateDemoTree()
// [SECTION] Demo Window / ShowDemoWindow() // [SECTION] Demo Window / ShowDemoWindow()
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Data to be shared accross different functions of the demo. // Data to be shared across different functions of the demo.
struct ImGuiDemoWindowData struct ImGuiDemoWindowData
{ {
// Examples Apps (accessible from the "Examples" menu) // Examples Apps (accessible from the "Examples" menu)
@ -371,6 +378,8 @@ struct ImGuiDemoWindowData
// Other data // Other data
ExampleTreeNode* DemoTree = NULL; ExampleTreeNode* DemoTree = NULL;
~ImGuiDemoWindowData() { if (DemoTree) ExampleTree_DestroyNode(DemoTree); }
}; };
// Demonstrate most Dear ImGui features (this is big function!) // Demonstrate most Dear ImGui features (this is big function!)