Properly count number of locks in options menu.

This commit is contained in:
Bartosz Taudul 2019-02-17 17:19:17 +01:00
parent 9dd1d6a744
commit 081b1069f6

View File

@ -4877,6 +4877,25 @@ void View::DrawOptions()
if( !m_worker.GetLockMap().empty() ) if( !m_worker.GetLockMap().empty() )
{ {
size_t lockCnt = 0;
size_t singleCnt = 0;
size_t multiCnt = 0;
for( const auto& l : m_worker.GetLockMap() )
{
if( l.second.valid && !l.second.timeline.empty() )
{
lockCnt++;
if( l.second.threadList.size() == 1 )
{
singleCnt++;
}
else
{
multiCnt++;
}
}
}
ImGui::Separator(); ImGui::Separator();
#ifdef TRACY_EXTENDED_FONT #ifdef TRACY_EXTENDED_FONT
ImGui::Checkbox( ICON_FA_LOCK " Draw locks", &m_drawLocks ); ImGui::Checkbox( ICON_FA_LOCK " Draw locks", &m_drawLocks );
@ -4887,7 +4906,7 @@ void View::DrawOptions()
ImGui::Checkbox( "Only contended", &m_onlyContendedLocks ); ImGui::Checkbox( "Only contended", &m_onlyContendedLocks );
const auto expand = ImGui::TreeNode( "Locks" ); const auto expand = ImGui::TreeNode( "Locks" );
ImGui::SameLine(); ImGui::SameLine();
ImGui::TextDisabled( "(%zu)", m_worker.GetLockMap().size() ); ImGui::TextDisabled( "(%zu)", lockCnt );
if( ImGui::IsItemHovered() ) if( ImGui::IsItemHovered() )
{ {
ImGui::BeginTooltip(); ImGui::BeginTooltip();
@ -4914,7 +4933,10 @@ void View::DrawOptions()
ImGui::SameLine(); ImGui::SameLine();
DrawHelpMarker( "Right click on lock name to open lock information window." ); DrawHelpMarker( "Right click on lock name to open lock information window." );
if( ImGui::TreeNodeEx( "Locks present in multiple threads", ImGuiTreeNodeFlags_DefaultOpen ) ) const bool multiExpand = ImGui::TreeNodeEx( "Locks present in multiple threads", ImGuiTreeNodeFlags_DefaultOpen );
ImGui::SameLine();
ImGui::TextDisabled( "(%zu)", multiCnt );
if( multiExpand )
{ {
if( ImGui::SmallButton( "Select all" ) ) if( ImGui::SmallButton( "Select all" ) )
{ {
@ -4977,7 +4999,10 @@ void View::DrawOptions()
} }
ImGui::TreePop(); ImGui::TreePop();
} }
if( ImGui::TreeNodeEx( "Locks present in a single thread", ImGuiTreeNodeFlags_DefaultOpen ) ) const auto singleExpand = ImGui::TreeNodeEx( "Locks present in a single thread", ImGuiTreeNodeFlags_DefaultOpen );
ImGui::SameLine();
ImGui::TextDisabled( "(%zu)", singleCnt );
if( singleExpand )
{ {
if( ImGui::SmallButton( "Select all" ) ) if( ImGui::SmallButton( "Select all" ) )
{ {