From 8173f24515f92fd2e1eb2c6b3ec25ee6deed4d33 Mon Sep 17 00:00:00 2001 From: Bartosz Taudul Date: Thu, 27 Feb 2020 02:31:30 +0100 Subject: [PATCH] Add filter to sampling statistics. --- server/TracyView.cpp | 50 +++++++++++++++++++++++++++++++++++++------- 1 file changed, 43 insertions(+), 7 deletions(-) diff --git a/server/TracyView.cpp b/server/TracyView.cpp index 17495774..8ce7ed9c 100644 --- a/server/TracyView.cpp +++ b/server/TracyView.cpp @@ -11131,13 +11131,31 @@ void View::DrawStatistics() { if( ImGui::BeginTabItem( "Sampling" ) ) { - +#ifdef TRACY_EXTENDED_FONT + m_statisticsFilter.Draw( ICON_FA_FILTER " Filter zones", 200 ); +#else + m_statisticsFilter.Draw( "Filter zones", 200 ); +#endif + ImGui::SameLine(); +#ifdef TRACY_EXTENDED_FONT + if( ImGui::Button( ICON_FA_BACKSPACE " Clear" ) ) +#else + if( ImGui::Button( "Clear" ) ) +#endif + { + m_statisticsFilter.Clear(); + } + ImGui::SameLine(); + ImGui::Spacing(); + ImGui::SameLine(); #ifdef TRACY_EXTENDED_FONT ImGui::Checkbox( ICON_FA_STOPWATCH " Show time", &m_statSampleTime ); #else ImGui::Checkbox( "Show time", &m_statSampleTime ); #endif ImGui::SameLine(); + ImGui::Spacing(); + ImGui::SameLine(); #ifdef TRACY_EXTENDED_FONT ImGui::Checkbox( ICON_FA_CLOCK " Exclusive", &m_statSelf ); #else @@ -11149,14 +11167,32 @@ void View::DrawStatistics() const auto& symMap = m_worker.GetSymbolMap(); const auto& symStat = m_worker.GetSymbolStats(); - const auto sssz = symStat.size(); - std::vector data; - data.reserve( sssz ); + Vector data; + data.reserve( symStat.size() ); auto statit = symStat.begin(); - while( statit != symStat.end() ) + if( m_statisticsFilter.IsActive() ) { - data.emplace_back( statit ); - ++statit; + while( statit != symStat.end() ) + { + auto sit = symMap.find( statit->first ); + if( sit != symMap.end() ) + { + auto name = m_worker.GetString( sit->second.name ); + if( m_statisticsFilter.PassFilter( name ) ) + { + data.push_back_no_space_check( statit ); + } + } + ++statit; + } + } + else + { + while( statit != symStat.end() ) + { + data.push_back_no_space_check( statit ); + ++statit; + } } if( m_statSelf ) {