From dd650e08ecf10f3c2c3ccac632ccaf94b4567fe5 Mon Sep 17 00:00:00 2001 From: Bartosz Taudul Date: Sat, 8 Feb 2020 13:07:02 +0100 Subject: [PATCH] Display saved trace size. --- server/TracyView.cpp | 16 +++++++++++++--- server/TracyView.hpp | 2 ++ 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/server/TracyView.cpp b/server/TracyView.cpp index 269dc53d..16cdc31d 100644 --- a/server/TracyView.cpp +++ b/server/TracyView.cpp @@ -402,10 +402,16 @@ bool View::DrawImpl() } if( !m_userData.Valid() ) m_userData.Init( m_worker.GetCaptureProgram().c_str(), m_worker.GetCaptureTime() ); - if( m_saveThreadState.load( std::memory_order_relaxed ) == SaveThreadState::NeedsJoin ) + if( m_saveThreadState.load( std::memory_order_acquire ) == SaveThreadState::NeedsJoin ) { m_saveThread.join(); - m_saveThreadState.store( SaveThreadState::Inert, std::memory_order_relaxed ); + m_saveThreadState.store( SaveThreadState::Inert, std::memory_order_release ); + const auto src = m_srcFileBytes.load( std::memory_order_relaxed ); + const auto dst = m_dstFileBytes.load( std::memory_order_relaxed ); + m_notificationTime = 4; + char buf[1024]; + sprintf( buf, "Trace size %s (%.2f%% ratio)", MemSizeToString( dst ), 100.f * dst / src ); + m_notificationText = buf; } const auto& io = ImGui::GetIO(); @@ -1013,7 +1019,11 @@ bool View::DrawConnection() m_saveThread = std::thread( [this, f{std::move( f )}] { std::shared_lock lock( m_worker.GetDataLock() ); m_worker.Write( *f ); - m_saveThreadState.store( SaveThreadState::NeedsJoin, std::memory_order_relaxed ); + f->Finish(); + const auto stats = f->GetCompressionStatistics(); + m_srcFileBytes.store( stats.first, std::memory_order_relaxed ); + m_dstFileBytes.store( stats.second, std::memory_order_relaxed ); + m_saveThreadState.store( SaveThreadState::NeedsJoin, std::memory_order_release ); } ); } } diff --git a/server/TracyView.hpp b/server/TracyView.hpp index d812849f..98bbf40f 100644 --- a/server/TracyView.hpp +++ b/server/TracyView.hpp @@ -391,6 +391,8 @@ private: std::atomic m_saveThreadState { SaveThreadState::Inert }; std::thread m_saveThread; + std::atomic m_srcFileBytes { 0 }; + std::atomic m_dstFileBytes { 0 }; void* m_frameTexture = nullptr; const void* m_frameTexturePtr = nullptr;