From a0814a2e5c651e4be87b82efc427da3ca2b8698a Mon Sep 17 00:00:00 2001 From: Bartosz Taudul Date: Sat, 7 Sep 2019 17:39:39 +0200 Subject: [PATCH] Correctly calculate discontinuous frames time. --- server/TracyView.cpp | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/server/TracyView.cpp b/server/TracyView.cpp index 4d3bd320..b9750f98 100644 --- a/server/TracyView.cpp +++ b/server/TracyView.cpp @@ -1275,12 +1275,31 @@ void View::DrawFrames() if( itStart != zoneData.zones.end() ) { auto itEnd = std::lower_bound( itStart, zoneData.zones.end(), f1, [this] ( const auto& l, const auto& r ) { return l.Zone()->Start() < r; } ); - while( itStart != itEnd ) + if( m_frames->continuous ) { - const auto t0 = clamp( itStart->Zone()->Start(), f0, f1 ); - const auto t1 = clamp( m_worker.GetZoneEndDirect( *itStart->Zone() ), f0, f1 ); - zoneTime += t1 - t0; - itStart++; + while( itStart != itEnd ) + { + const auto t0 = clamp( itStart->Zone()->Start(), f0, f1 ); + const auto t1 = clamp( m_worker.GetZoneEndDirect( *itStart->Zone() ), f0, f1 ); + zoneTime += t1 - t0; + itStart++; + } + } + else + { + while( itStart != itEnd ) + { + const int g = std::min( group, total - ( m_vd.frameStart + idx ) ); + for( int j=0; jZone()->Start(), ft0, ft1 ); + const auto t1 = clamp( m_worker.GetZoneEndDirect( *itStart->Zone() ), ft0, ft1 ); + zoneTime += t1 - t0; + } + itStart++; + } } } else