mirror of
https://github.com/wolfpld/tracy.git
synced 2025-03-20 07:40:02 +08:00
Allow filtering messages by thread.
This commit is contained in:
parent
59293b1850
commit
a4df805746
@ -4330,6 +4330,43 @@ void View::DrawOptions()
|
|||||||
void View::DrawMessages()
|
void View::DrawMessages()
|
||||||
{
|
{
|
||||||
ImGui::Begin( "Messages", &m_showMessages );
|
ImGui::Begin( "Messages", &m_showMessages );
|
||||||
|
|
||||||
|
#ifdef TRACY_EXTENDED_FONT
|
||||||
|
auto expand = ImGui::TreeNode( ICON_FA_RANDOM " Visible threads:" );
|
||||||
|
#else
|
||||||
|
auto expand = ImGui::TreeNode( "Visible threads:" );
|
||||||
|
#endif
|
||||||
|
ImGui::SameLine();
|
||||||
|
ImGui::TextDisabled( "(%zu)", m_worker.GetThreadData().size() );
|
||||||
|
if( expand )
|
||||||
|
{
|
||||||
|
if( ImGui::SmallButton( "Select all" ) )
|
||||||
|
{
|
||||||
|
for( const auto& t : m_worker.GetThreadData() )
|
||||||
|
{
|
||||||
|
VisibleMsgThread( t->id ) = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ImGui::SameLine();
|
||||||
|
if( ImGui::SmallButton( "Unselect all" ) )
|
||||||
|
{
|
||||||
|
for( const auto& t : m_worker.GetThreadData() )
|
||||||
|
{
|
||||||
|
VisibleMsgThread( t->id ) = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int idx = 0;
|
||||||
|
for( const auto& t : m_worker.GetThreadData() )
|
||||||
|
{
|
||||||
|
ImGui::PushID( idx++ );
|
||||||
|
ImGui::Checkbox( m_worker.GetThreadString( t->id ), &VisibleMsgThread( t->id ) );
|
||||||
|
ImGui::PopID();
|
||||||
|
}
|
||||||
|
ImGui::TreePop();
|
||||||
|
}
|
||||||
|
|
||||||
|
ImGui::Separator();
|
||||||
ImGui::Columns( 3 );
|
ImGui::Columns( 3 );
|
||||||
ImGui::Text( "Time" );
|
ImGui::Text( "Time" );
|
||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
@ -4349,28 +4386,31 @@ void View::DrawMessages()
|
|||||||
|
|
||||||
for( const auto& v : m_worker.GetMessages() )
|
for( const auto& v : m_worker.GetMessages() )
|
||||||
{
|
{
|
||||||
ImGui::PushID( v );
|
if( VisibleMsgThread( v->thread ) )
|
||||||
if( ImGui::Selectable( TimeToString( v->time - m_worker.GetTimeBegin() ), m_msgHighlight == v, ImGuiSelectableFlags_SpanAllColumns ) )
|
|
||||||
{
|
{
|
||||||
CenterAtTime( v->time );
|
ImGui::PushID( v );
|
||||||
|
if( ImGui::Selectable( TimeToString( v->time - m_worker.GetTimeBegin() ), m_msgHighlight == v, ImGuiSelectableFlags_SpanAllColumns ) )
|
||||||
|
{
|
||||||
|
CenterAtTime( v->time );
|
||||||
|
}
|
||||||
|
if( ImGui::IsItemHovered() )
|
||||||
|
{
|
||||||
|
m_msgHighlight = v;
|
||||||
|
}
|
||||||
|
if( m_msgToFocus == v )
|
||||||
|
{
|
||||||
|
ImGui::SetScrollHere();
|
||||||
|
m_msgToFocus = nullptr;
|
||||||
|
}
|
||||||
|
ImGui::PopID();
|
||||||
|
ImGui::NextColumn();
|
||||||
|
ImGui::Text( "%s", m_worker.GetThreadString( v->thread ) );
|
||||||
|
ImGui::SameLine();
|
||||||
|
ImGui::TextDisabled( "(0x%" PRIX64 ")", v->thread );
|
||||||
|
ImGui::NextColumn();
|
||||||
|
ImGui::TextWrapped( "%s", m_worker.GetString( v->ref ) );
|
||||||
|
ImGui::NextColumn();
|
||||||
}
|
}
|
||||||
if( ImGui::IsItemHovered() )
|
|
||||||
{
|
|
||||||
m_msgHighlight = v;
|
|
||||||
}
|
|
||||||
if( m_msgToFocus == v )
|
|
||||||
{
|
|
||||||
ImGui::SetScrollHere();
|
|
||||||
m_msgToFocus = nullptr;
|
|
||||||
}
|
|
||||||
ImGui::PopID();
|
|
||||||
ImGui::NextColumn();
|
|
||||||
ImGui::Text( "%s", m_worker.GetThreadString( v->thread ) );
|
|
||||||
ImGui::SameLine();
|
|
||||||
ImGui::TextDisabled( "(0x%" PRIX64 ")", v->thread );
|
|
||||||
ImGui::NextColumn();
|
|
||||||
ImGui::TextWrapped( "%s", m_worker.GetString( v->ref ) );
|
|
||||||
ImGui::NextColumn();
|
|
||||||
}
|
}
|
||||||
ImGui::EndColumns();
|
ImGui::EndColumns();
|
||||||
ImGui::End();
|
ImGui::End();
|
||||||
|
|||||||
@ -151,6 +151,7 @@ private:
|
|||||||
void SmallCallstackButton( const char* name, uint32_t callstack, int& idx );
|
void SmallCallstackButton( const char* name, uint32_t callstack, int& idx );
|
||||||
|
|
||||||
flat_hash_map<const void*, bool, nohash<const void*>> m_visible;
|
flat_hash_map<const void*, bool, nohash<const void*>> m_visible;
|
||||||
|
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*, bool, nohash<const void*>> m_showFull;
|
||||||
flat_hash_map<const void*, int, nohash<const void*>> m_gpuDrift;
|
flat_hash_map<const void*, int, nohash<const void*>> m_gpuDrift;
|
||||||
|
|
||||||
@ -164,6 +165,16 @@ private:
|
|||||||
return it->second;
|
return it->second;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tracy_force_inline bool& VisibleMsgThread( uint64_t thread )
|
||||||
|
{
|
||||||
|
auto it = m_visibleMsgThread.find( thread );
|
||||||
|
if( it == m_visibleMsgThread.end() )
|
||||||
|
{
|
||||||
|
it = m_visibleMsgThread.emplace( thread, true ).first;
|
||||||
|
}
|
||||||
|
return it->second;
|
||||||
|
}
|
||||||
|
|
||||||
tracy_force_inline bool& ShowFull( const void* ptr )
|
tracy_force_inline bool& ShowFull( const void* ptr )
|
||||||
{
|
{
|
||||||
auto it = m_showFull.find( ptr );
|
auto it = m_showFull.find( ptr );
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user