diff --git a/profiler/src/main.cpp b/profiler/src/main.cpp index e792714d..3b2569e0 100644 --- a/profiler/src/main.cpp +++ b/profiler/src/main.cpp @@ -105,6 +105,11 @@ static void SetWindowTitleCallback( const char* title ) s_customTitle = true; } +static void AttentionCallback() +{ + bptr->Attention(); +} + static void DrawContents(); void RunOnMainThread( std::function cb, bool forceDelay = false ) @@ -233,12 +238,12 @@ int main( int argc, char** argv ) if( initFileOpen ) { - view = std::make_unique( RunOnMainThread, *initFileOpen, s_fixedWidth, s_smallFont, s_bigFont, SetWindowTitleCallback, SetupScaleCallback ); + view = std::make_unique( RunOnMainThread, *initFileOpen, s_fixedWidth, s_smallFont, s_bigFont, SetWindowTitleCallback, SetupScaleCallback, AttentionCallback ); initFileOpen.reset(); } else if( connectTo ) { - view = std::make_unique( RunOnMainThread, connectTo, port, s_fixedWidth, s_smallFont, s_bigFont, SetWindowTitleCallback, SetupScaleCallback ); + view = std::make_unique( RunOnMainThread, connectTo, port, s_fixedWidth, s_smallFont, s_bigFont, SetWindowTitleCallback, SetupScaleCallback, AttentionCallback ); } tracy::Fileselector::Init(); @@ -570,11 +575,11 @@ static void DrawContents() { std::string addrPart = std::string( addr, ptr ); uint16_t portPart = (uint16_t)atoi( ptr+1 ); - view = std::make_unique( RunOnMainThread, addrPart.c_str(), portPart, s_fixedWidth, s_smallFont, s_bigFont, SetWindowTitleCallback, SetupScaleCallback ); + view = std::make_unique( RunOnMainThread, addrPart.c_str(), portPart, s_fixedWidth, s_smallFont, s_bigFont, SetWindowTitleCallback, SetupScaleCallback, AttentionCallback ); } else { - view = std::make_unique( RunOnMainThread, addr, port, s_fixedWidth, s_smallFont, s_bigFont, SetWindowTitleCallback, SetupScaleCallback ); + view = std::make_unique( RunOnMainThread, addr, port, s_fixedWidth, s_smallFont, s_bigFont, SetWindowTitleCallback, SetupScaleCallback, AttentionCallback ); } } ImGui::SameLine( 0, ImGui::GetTextLineHeight() * 2 ); @@ -591,7 +596,7 @@ static void DrawContents() loadThread = std::thread( [f] { try { - view = std::make_unique( RunOnMainThread, *f, s_fixedWidth, s_smallFont, s_bigFont, SetWindowTitleCallback, SetupScaleCallback ); + view = std::make_unique( RunOnMainThread, *f, s_fixedWidth, s_smallFont, s_bigFont, SetWindowTitleCallback, SetupScaleCallback, AttentionCallback ); } catch( const tracy::UnsupportedVersion& e ) { @@ -716,7 +721,7 @@ static void DrawContents() } if( selected && !loadThread.joinable() ) { - view = std::make_unique( RunOnMainThread, v.second.address.c_str(), v.second.port, s_fixedWidth, s_smallFont, s_bigFont, SetWindowTitleCallback, SetupScaleCallback ); + view = std::make_unique( RunOnMainThread, v.second.address.c_str(), v.second.port, s_fixedWidth, s_smallFont, s_bigFont, SetWindowTitleCallback, SetupScaleCallback, AttentionCallback ); } ImGui::NextColumn(); const auto acttime = ( v.second.activeTime + ( time - v.second.time ) / 1000 ) * 1000000000ll; @@ -885,7 +890,7 @@ static void DrawContents() viewShutdown.store( ViewShutdown::False, std::memory_order_relaxed ); if( reconnect ) { - view = std::make_unique( RunOnMainThread, reconnectAddr.c_str(), reconnectPort, s_fixedWidth, s_smallFont, s_bigFont, SetWindowTitleCallback, SetupScaleCallback ); + view = std::make_unique( RunOnMainThread, reconnectAddr.c_str(), reconnectPort, s_fixedWidth, s_smallFont, s_bigFont, SetWindowTitleCallback, SetupScaleCallback, AttentionCallback ); } break; default: diff --git a/server/TracyView.cpp b/server/TracyView.cpp index 9a871f40..25c8d21d 100644 --- a/server/TracyView.cpp +++ b/server/TracyView.cpp @@ -46,7 +46,7 @@ double s_time = 0; static View* s_instance = nullptr; -View::View( void(*cbMainThread)(std::function, bool), const char* addr, uint16_t port, ImFont* fixedWidth, ImFont* smallFont, ImFont* bigFont, SetTitleCallback stcb, SetScaleCallback sscb ) +View::View( void(*cbMainThread)(std::function, bool), const char* addr, uint16_t port, ImFont* fixedWidth, ImFont* smallFont, ImFont* bigFont, SetTitleCallback stcb, SetScaleCallback sscb, AttentionCallback acb ) : m_worker( addr, port ) , m_staticView( false ) , m_viewMode( ViewMode::LastFrames ) @@ -62,6 +62,7 @@ View::View( void(*cbMainThread)(std::function, bool), const char* addr, , m_fixedFont( fixedWidth ) , m_stcb( stcb ) , m_sscb( sscb ) + , m_acb( acb ) , m_userData() , m_cbMainThread( cbMainThread ) { @@ -72,7 +73,7 @@ View::View( void(*cbMainThread)(std::function, bool), const char* addr, InitTextEditor( fixedWidth ); } -View::View( void(*cbMainThread)(std::function, bool), FileRead& f, ImFont* fixedWidth, ImFont* smallFont, ImFont* bigFont, SetTitleCallback stcb, SetScaleCallback sscb ) +View::View( void(*cbMainThread)(std::function, bool), FileRead& f, ImFont* fixedWidth, ImFont* smallFont, ImFont* bigFont, SetTitleCallback stcb, SetScaleCallback sscb, AttentionCallback acb ) : m_worker( f ) , m_filename( f.GetFilename() ) , m_staticView( true ) @@ -85,6 +86,7 @@ View::View( void(*cbMainThread)(std::function, bool), FileRead& f, ImFon , m_fixedFont( fixedWidth ) , m_stcb( stcb ) , m_sscb( sscb ) + , m_acb( acb ) , m_userData( m_worker.GetCaptureProgram().c_str(), m_worker.GetCaptureTime() ) , m_cbMainThread( cbMainThread ) { diff --git a/server/TracyView.hpp b/server/TracyView.hpp index 8036c2da..3c942cc6 100644 --- a/server/TracyView.hpp +++ b/server/TracyView.hpp @@ -89,9 +89,10 @@ public: using SetTitleCallback = void(*)( const char* ); using SetScaleCallback = void(*)( float, ImFont*&, ImFont*&, ImFont*& ); + using AttentionCallback = void(*)(); - View( void(*cbMainThread)(std::function, bool), const char* addr, uint16_t port, ImFont* fixedWidth, ImFont* smallFont, ImFont* bigFont, SetTitleCallback stcb, SetScaleCallback sscb ); - View( void(*cbMainThread)(std::function, bool), FileRead& f, ImFont* fixedWidth, ImFont* smallFont, ImFont* bigFont, SetTitleCallback stcb, SetScaleCallback sscb ); + View( void(*cbMainThread)(std::function, bool), const char* addr, uint16_t port, ImFont* fixedWidth, ImFont* smallFont, ImFont* bigFont, SetTitleCallback stcb, SetScaleCallback sscb, AttentionCallback acb ); + View( void(*cbMainThread)(std::function, bool), FileRead& f, ImFont* fixedWidth, ImFont* smallFont, ImFont* bigFont, SetTitleCallback stcb, SetScaleCallback sscb, AttentionCallback acb ); ~View(); static bool Draw(); @@ -517,6 +518,7 @@ private: SetTitleCallback m_stcb; bool m_titleSet = false; SetScaleCallback m_sscb; + AttentionCallback m_acb; float m_notificationTime = 0; std::string m_notificationText;