1
0
mirror of https://github.com/ocornut/imgui.git synced 2024-11-23 23:31:08 +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
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
SRV descriptors.

View File

@ -308,6 +308,13 @@ static ExampleTreeNode* ExampleTree_CreateNode(const char* name, int uid, Exampl
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
// (this allocates _many_ more times than most other code in either Dear ImGui or others demo)
static ExampleTreeNode* ExampleTree_CreateDemoTree()
@ -343,7 +350,7 @@ static ExampleTreeNode* ExampleTree_CreateDemoTree()
// [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
{
// Examples Apps (accessible from the "Examples" menu)
@ -371,6 +378,8 @@ struct ImGuiDemoWindowData
// Other data
ExampleTreeNode* DemoTree = NULL;
~ImGuiDemoWindowData() { if (DemoTree) ExampleTree_DestroyNode(DemoTree); }
};
// Demonstrate most Dear ImGui features (this is big function!)