Clip child zone list submissions.

This commit is contained in:
Bartosz Taudul 2020-01-31 18:58:31 +01:00
parent 4a6bc284af
commit 5f91b48e0c

View File

@ -6600,34 +6600,38 @@ void View::DrawZoneInfoChildren( const V& children, int64_t ztime )
pdqsort_branchless( cti.get(), cti.get() + cgr.v.size(), [&ctt] ( const auto& lhs, const auto& rhs ) { return ctt[lhs] > ctt[rhs]; } ); pdqsort_branchless( cti.get(), cti.get() + cgr.v.size(), [&ctt] ( const auto& lhs, const auto& rhs ) { return ctt[lhs] > ctt[rhs]; } );
for( size_t i=0; i<cgr.v.size(); i++ ) ImGuiListClipper clipper( cgr.v.size() );
while( clipper.Step() )
{ {
auto& cev = a(children[cgr.v[cti[i]]]); for( auto i=clipper.DisplayStart; i<clipper.DisplayEnd; i++ )
const auto txt = m_worker.GetZoneName( cev );
bool b = false;
ImGui::Indent();
ImGui::PushID( (int)cgr.v[cti[i]] );
if( ImGui::Selectable( txt, &b, ImGuiSelectableFlags_SpanAllColumns ) )
{ {
ShowZoneInfo( cev ); auto& cev = a(children[cgr.v[cti[i]]]);
} const auto txt = m_worker.GetZoneName( cev );
if( ImGui::IsItemHovered() ) bool b = false;
{ ImGui::Indent();
m_zoneHighlight = &cev; ImGui::PushID( (int)cgr.v[cti[i]] );
if( ImGui::IsMouseClicked( 2 ) ) if( ImGui::Selectable( txt, &b, ImGuiSelectableFlags_SpanAllColumns ) )
{ {
ZoomToZone( cev ); ShowZoneInfo( cev );
} }
ZoneTooltip( cev ); if( ImGui::IsItemHovered() )
{
m_zoneHighlight = &cev;
if( ImGui::IsMouseClicked( 2 ) )
{
ZoomToZone( cev );
}
ZoneTooltip( cev );
}
ImGui::PopID();
ImGui::Unindent();
ImGui::NextColumn();
const auto part = double( ctt[cti[i]] ) * rztime;
char buf[128];
PrintStringPercent( buf, TimeToString( ctt[cti[i]] ), part * 100 );
ImGui::ProgressBar( part, ImVec2( -1, ty ), buf );
ImGui::NextColumn();
} }
ImGui::PopID();
ImGui::Unindent();
ImGui::NextColumn();
const auto part = double( ctt[cti[i]] ) * rztime;
char buf[128];
PrintStringPercent( buf, TimeToString( ctt[cti[i]] ), part * 100 );
ImGui::ProgressBar( part, ImVec2( -1, ty ), buf );
ImGui::NextColumn();
} }
ImGui::TreePop(); ImGui::TreePop();
} }
@ -6658,34 +6662,38 @@ void View::DrawZoneInfoChildren( const V& children, int64_t ztime )
PrintStringPercent( buf, TimeToString( ztime - ctime ), double( ztime - ctime ) / ztime * 100 ); PrintStringPercent( buf, TimeToString( ztime - ctime ), double( ztime - ctime ) / ztime * 100 );
ImGui::ProgressBar( double( ztime - ctime ) * rztime, ImVec2( -1, ty ), buf ); ImGui::ProgressBar( double( ztime - ctime ) * rztime, ImVec2( -1, ty ), buf );
ImGui::NextColumn(); ImGui::NextColumn();
for( size_t i=0; i<children.size(); i++ ) ImGuiListClipper clipper( children.size() );
while( clipper.Step() )
{ {
auto& cev = a(children[cti[i]]); for( auto i=clipper.DisplayStart; i<clipper.DisplayEnd; i++ )
const auto txt = m_worker.GetZoneName( cev );
bool b = false;
SmallColorBox( GetSrcLocColor( m_worker.GetSourceLocation( cev.SrcLoc() ), 0 ) );
ImGui::SameLine();
ImGui::PushID( (int)i );
if( ImGui::Selectable( txt, &b, ImGuiSelectableFlags_SpanAllColumns ) )
{ {
ShowZoneInfo( cev ); auto& cev = a(children[cti[i]]);
} const auto txt = m_worker.GetZoneName( cev );
if( ImGui::IsItemHovered() ) bool b = false;
{ SmallColorBox( GetSrcLocColor( m_worker.GetSourceLocation( cev.SrcLoc() ), 0 ) );
m_zoneHighlight = &cev; ImGui::SameLine();
if( ImGui::IsMouseClicked( 2 ) ) ImGui::PushID( (int)i );
if( ImGui::Selectable( txt, &b, ImGuiSelectableFlags_SpanAllColumns ) )
{ {
ZoomToZone( cev ); ShowZoneInfo( cev );
} }
ZoneTooltip( cev ); if( ImGui::IsItemHovered() )
{
m_zoneHighlight = &cev;
if( ImGui::IsMouseClicked( 2 ) )
{
ZoomToZone( cev );
}
ZoneTooltip( cev );
}
ImGui::PopID();
ImGui::NextColumn();
const auto part = double( ctt[cti[i]] ) * rztime;
char buf[128];
PrintStringPercent( buf, TimeToString( ctt[cti[i]] ), part * 100 );
ImGui::ProgressBar( part, ImVec2( -1, ty ), buf );
ImGui::NextColumn();
} }
ImGui::PopID();
ImGui::NextColumn();
const auto part = double( ctt[cti[i]] ) * rztime;
char buf[128];
PrintStringPercent( buf, TimeToString( ctt[cti[i]] ), part * 100 );
ImGui::ProgressBar( part, ImVec2( -1, ty ), buf );
ImGui::NextColumn();
} }
ImGui::EndColumns(); ImGui::EndColumns();
} }