1
0
mirror of https://github.com/wolfpld/tracy synced 2025-05-07 15:33:52 +00:00

Merge visibility and show full options into one struct.

This commit is contained in:
Bartosz Taudul 2019-02-21 20:24:08 +01:00
parent bc713463d8
commit e945902f40
2 changed files with 39 additions and 46 deletions

View File

@ -797,7 +797,7 @@ bool View::DrawImpl()
#endif
ImGui::SameLine();
{
const auto vis = Visible( m_frames );
const auto vis = Vis( m_frames ).visible;
if( !vis )
{
ImGui::PushStyleColor( ImGuiCol_Text, GImGui->Style.Colors[ImGuiCol_TextDisabled] );
@ -1713,7 +1713,7 @@ void View::DrawZones()
auto& frames = m_worker.GetFrames();
for( auto fd : frames )
{
if( Visible( fd ) )
if( Vis( fd ).visible )
{
drawMouseLine |= DrawZoneFrames( *fd );
}
@ -1755,8 +1755,9 @@ void View::DrawZones()
for( size_t i=0; i<m_worker.GetGpuData().size(); i++ )
{
const auto& v = m_worker.GetGpuData()[i];
if( !Visible( v ) ) continue;
bool& showFull = ShowFull( v );
auto& vis = Vis( v );
if( !vis.visible ) continue;
bool& showFull = vis.showFull;
const auto yPos = wpos.y + offset;
if( yPos + ostep >= yMin && yPos <= yMax )
@ -1838,8 +1839,9 @@ void View::DrawZones()
LockHighlight nextLockHighlight { -1 };
for( const auto& v : m_worker.GetThreadData() )
{
if( !Visible( v ) ) continue;
bool& showFull = ShowFull( v );
auto& vis = Vis( v );
if( !vis.visible ) continue;
bool& showFull = vis.showFull;
const auto yPos = wpos.y + offset;
if( yPos + ostep >= yMin && yPos <= yMax )
@ -2876,7 +2878,7 @@ int View::DrawLocks( uint64_t tid, bool hover, double pxns, const ImVec2& wpos,
for( const auto& v : m_worker.GetLockMap() )
{
const auto& lockmap = v.second;
if( !lockmap.valid || !Visible( &lockmap ) ) continue;
if( !lockmap.valid || !Vis( &lockmap ).visible ) continue;
auto it = lockmap.threadMap.find( tid );
if( it == lockmap.threadMap.end() ) continue;
@ -3368,9 +3370,10 @@ int View::DrawPlots( int offset, double pxns, const ImVec2& wpos, bool hover, fl
for( const auto& v : m_worker.GetPlots() )
{
if( !Visible( v ) ) continue;
auto& vis = Vis( v );
if( !vis.visible ) continue;
assert( !v->data.empty() );
bool& showFull = ShowFull( v );
bool& showFull = vis.showFull;
float txtx = 0;
auto yPos = wpos.y + offset;
@ -4854,7 +4857,7 @@ void View::DrawOptions()
{
sprintf( buf, "OpenGL context %zu", i );
}
ImGui::Checkbox( buf, &Visible( gpuData[i] ) );
ImGui::Checkbox( buf, &Vis( gpuData[i] ).visible );
ImGui::SameLine();
ImGui::TextDisabled( "%s top level zones", RealToString( gpuData[i]->timeline.size(), true ) );
ImGui::TreePush();
@ -4919,7 +4922,7 @@ void View::DrawOptions()
{
for( const auto& l : m_worker.GetLockMap() )
{
Visible( &l.second ) = true;
Vis( &l.second ).visible = true;
}
}
ImGui::SameLine();
@ -4927,7 +4930,7 @@ void View::DrawOptions()
{
for( const auto& l : m_worker.GetLockMap() )
{
Visible( &l.second ) = false;
Vis( &l.second ).visible = false;
}
}
ImGui::SameLine();
@ -4942,7 +4945,7 @@ void View::DrawOptions()
{
for( const auto& l : m_worker.GetLockMap() )
{
if( l.second.threadList.size() != 1 ) Visible( &l.second ) = true;
if( l.second.threadList.size() != 1 ) Vis( &l.second ).visible = true;
}
}
ImGui::SameLine();
@ -4950,7 +4953,7 @@ void View::DrawOptions()
{
for( const auto& l : m_worker.GetLockMap() )
{
if( l.second.threadList.size() != 1 ) Visible( &l.second ) = false;
if( l.second.threadList.size() != 1 ) Vis( &l.second ).visible = false;
}
}
@ -4963,7 +4966,7 @@ void View::DrawOptions()
char buf[1024];
sprintf( buf, "%" PRIu32 ": %s", l.first, m_worker.GetString( m_worker.GetSourceLocation( l.second.srcloc ).function ) );
ImGui::Checkbox( buf, &Visible( &l.second ) );
ImGui::Checkbox( buf, &Vis( &l.second ).visible );
if( ImGui::IsItemHovered() )
{
m_lockHoverHighlight = l.first;
@ -5008,7 +5011,7 @@ void View::DrawOptions()
{
for( const auto& l : m_worker.GetLockMap() )
{
if( l.second.threadList.size() == 1 ) Visible( &l.second ) = true;
if( l.second.threadList.size() == 1 ) Vis( &l.second ).visible = true;
}
}
ImGui::SameLine();
@ -5016,7 +5019,7 @@ void View::DrawOptions()
{
for( const auto& l : m_worker.GetLockMap() )
{
if( l.second.threadList.size() == 1 ) Visible( &l.second ) = false;
if( l.second.threadList.size() == 1 ) Vis( &l.second ).visible = false;
}
}
@ -5029,7 +5032,7 @@ void View::DrawOptions()
char buf[1024];
sprintf( buf, "%" PRIu32 ": %s", l.first, m_worker.GetString( m_worker.GetSourceLocation( l.second.srcloc ).function ) );
ImGui::Checkbox( buf, &Visible( &l.second ) );
ImGui::Checkbox( buf, &Vis( &l.second ).visible );
if( ImGui::IsItemHovered() )
{
m_lockHoverHighlight = l.first;
@ -5086,7 +5089,7 @@ void View::DrawOptions()
{
for( const auto& p : m_worker.GetPlots() )
{
Visible( p ) = true;
Vis( p ).visible = true;
}
}
ImGui::SameLine();
@ -5094,13 +5097,13 @@ void View::DrawOptions()
{
for( const auto& p : m_worker.GetPlots() )
{
Visible( p ) = false;
Vis( p ).visible = false;
}
}
for( const auto& p : m_worker.GetPlots() )
{
ImGui::Checkbox( GetPlotName( p ), &Visible( p ) );
ImGui::Checkbox( GetPlotName( p ), &Vis( p ).visible );
ImGui::SameLine();
ImGui::TextDisabled( "%s data points", RealToString( p->data.size(), true ) );
}
@ -5124,7 +5127,7 @@ void View::DrawOptions()
{
for( const auto& t : m_worker.GetThreadData() )
{
Visible( t ) = true;
Vis( t ).visible = true;
}
}
ImGui::SameLine();
@ -5132,7 +5135,7 @@ void View::DrawOptions()
{
for( const auto& t : m_worker.GetThreadData() )
{
Visible( t ) = false;
Vis( t ).visible = false;
}
}
@ -5140,7 +5143,7 @@ void View::DrawOptions()
for( const auto& t : m_worker.GetThreadData() )
{
ImGui::PushID( idx++ );
ImGui::Checkbox( m_worker.GetThreadString( t->id ), &Visible( t ) );
ImGui::Checkbox( m_worker.GetThreadString( t->id ), &Vis( t ).visible );
ImGui::PopID();
if( crash.thread == t->id )
{
@ -5177,7 +5180,7 @@ void View::DrawOptions()
{
for( const auto& fd : m_worker.GetFrames() )
{
Visible( fd ) = true;
Vis( fd ).visible = true;
}
}
ImGui::SameLine();
@ -5185,7 +5188,7 @@ void View::DrawOptions()
{
for( const auto& fd : m_worker.GetFrames() )
{
Visible( fd ) = false;
Vis( fd ).visible = false;
}
}
@ -5193,7 +5196,7 @@ void View::DrawOptions()
for( const auto& fd : m_worker.GetFrames() )
{
ImGui::PushID( idx++ );
ImGui::Checkbox( fd->name == 0 ? "Frames" : m_worker.GetString( fd->name ), &Visible( fd ) );
ImGui::Checkbox( fd->name == 0 ? "Frames" : m_worker.GetString( fd->name ), &Vis( fd ).visible );
ImGui::PopID();
ImGui::SameLine();
ImGui::TextDisabled( "%s %sframes", RealToString( fd->frames.size(), true ), fd->continuous ? "" : "discontinuous " );

View File

@ -77,6 +77,12 @@ private:
uint64_t mem;
};
struct VisData
{
bool visible = true;
bool showFull = true;
};
void InitTextEditor();
const char* ShortenNamespace( const char* name ) const;
@ -173,19 +179,13 @@ private:
int64_t GetZoneChildTime( const GpuEvent& zone );
int64_t GetZoneChildTimeFast( const ZoneEvent& zone );
flat_hash_map<const void*, bool, nohash<const void*>> m_visible;
flat_hash_map<const void*, VisData, nohash<const void*>> m_visData;
flat_hash_map<uint64_t, bool, nohash<uint64_t>> m_visibleMsgThread;
flat_hash_map<const void*, bool, nohash<const void*>> m_showFull;
flat_hash_map<const void*, int, nohash<const void*>> m_gpuDrift;
tracy_force_inline bool& Visible( const void* ptr )
tracy_force_inline VisData& Vis( const void* ptr )
{
auto it = m_visible.find( ptr );
if( it == m_visible.end() )
{
it = m_visible.emplace( ptr, true ).first;
}
return it->second;
return m_visData[ptr];
}
tracy_force_inline bool& VisibleMsgThread( uint64_t thread )
@ -198,16 +198,6 @@ private:
return it->second;
}
tracy_force_inline bool& ShowFull( const void* ptr )
{
auto it = m_showFull.find( ptr );
if( it == m_showFull.end() )
{
it = m_showFull.emplace( ptr, true ).first;
}
return it->second;
}
tracy_force_inline int& GpuDrift( const void* ptr )
{
auto it = m_gpuDrift.find( ptr );