From b978a7c652e21f53de56f870b87fead9f46a8ef5 Mon Sep 17 00:00:00 2001 From: Bartosz Taudul Date: Sun, 14 Nov 2021 13:01:27 +0100 Subject: [PATCH] Sort plot data only when needed (i.e. to draw). --- server/TracyView.cpp | 3 ++- server/TracyWorker.cpp | 9 +++++++-- server/TracyWorker.hpp | 1 + 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/server/TracyView.cpp b/server/TracyView.cpp index 452d3eb3..726bffc8 100644 --- a/server/TracyView.cpp +++ b/server/TracyView.cpp @@ -6600,7 +6600,8 @@ int View::DrawPlots( int offset, double pxns, const ImVec2& wpos, bool hover, fl auto yPos = wpos.y + offset; if( yPos + PlotHeight >= yMin && yPos <= yMax ) { - const auto& vec = v->data; + auto& vec = v->data; + if( !vec.is_sorted() ) vec.sort(); if( v->type == PlotType::Memory ) { diff --git a/server/TracyWorker.cpp b/server/TracyWorker.cpp index 7b9b2e32..86f9b998 100644 --- a/server/TracyWorker.cpp +++ b/server/TracyWorker.cpp @@ -4295,13 +4295,18 @@ void Worker::HandleFrameName( uint64_t name, const char* str, size_t sz ) } ); } -void Worker::DoPostponedWork() +void Worker::DoPostponedWorkAll() { + DoPostponedWork(); + for( auto& plot : m_data.plots.Data() ) { if( !plot->data.is_sorted() ) plot->data.sort(); } +} +void Worker::DoPostponedWork() +{ #ifndef TRACY_NO_STATISTICS if( m_data.newFramesWereReceived ) { @@ -7651,7 +7656,7 @@ static void WriteHwSampleVec( FileWrite& f, SortedVector& vec void Worker::Write( FileWrite& f, bool fiDict ) { - DoPostponedWork(); + DoPostponedWorkAll(); f.Write( FileHeader, sizeof( FileHeader ) ); diff --git a/server/TracyWorker.hpp b/server/TracyWorker.hpp index e7fec8ae..8f1779f1 100644 --- a/server/TracyWorker.hpp +++ b/server/TracyWorker.hpp @@ -624,6 +624,7 @@ public: std::pair GetTextureCompressionBytes() const { return std::make_pair( m_texcomp.GetInputBytesCount(), m_texcomp.GetOutputBytesCount() ); } void DoPostponedWork(); + void DoPostponedWorkAll(); private: void Network();