diff --git a/server/TracyView.cpp b/server/TracyView.cpp index 14c9f57c..4df19edb 100644 --- a/server/TracyView.cpp +++ b/server/TracyView.cpp @@ -7192,11 +7192,32 @@ void View::DrawZoneInfoWindow() } } - auto& mem = m_worker.GetMemoryDefault(); - if( !mem.data.empty() ) + ImGui::Separator(); + auto& memNameMap = m_worker.GetMemNameMap(); + if( memNameMap.size() > 1 ) + { + ImGui::AlignTextToFramePadding(); + TextDisabledUnformatted( ICON_FA_ARCHIVE " Memory pool:" ); + ImGui::SameLine(); + if( ImGui::BeginCombo( "##memoryPool", m_zoneInfoMemPool == 0 ? "Default allocator" : m_worker.GetString( m_zoneInfoMemPool ) ) ) + { + for( auto& v : memNameMap ) + { + if( ImGui::Selectable( v.first == 0 ? "Default allocator" : m_worker.GetString( v.first ) ) ) + { + m_zoneInfoMemPool = v.first; + } + } + ImGui::EndCombo(); + } + } + auto& mem = m_worker.GetMemoryNamed( m_zoneInfoMemPool ); + if( mem.data.empty() ) + { + TextDisabledUnformatted( "No memory events." ); + } + else { - ImGui::Separator(); - if( !mem.plot ) { ImGui::Text( "Please wait, computing data..." ); @@ -7301,7 +7322,7 @@ void View::DrawZoneInfoWindow() ListMemData( v, []( auto v ) { ImGui::Text( "0x%" PRIx64, v->Ptr() ); - }, nullptr, m_allocTimeRelativeToZone ? ev.Start() : -1, 0 ); + }, nullptr, m_allocTimeRelativeToZone ? ev.Start() : -1, m_zoneInfoMemPool ); ImGui::TreePop(); } } diff --git a/server/TracyView.hpp b/server/TracyView.hpp index 1b710f48..874eb8a6 100644 --- a/server/TracyView.hpp +++ b/server/TracyView.hpp @@ -399,6 +399,7 @@ private: bool m_allocTimeRelativeToZone = true; bool m_ctxSwitchTimeRelativeToZone = true; bool m_messageTimeRelativeToZone = true; + uint64_t m_zoneInfoMemPool = 0; ShortcutAction m_shortcut = ShortcutAction::None; Namespace m_namespace = Namespace::Short;