From 690a6d12d750a02d486c0e5bdb7cbf1d118526cd Mon Sep 17 00:00:00 2001 From: Bartosz Taudul Date: Wed, 14 Aug 2019 22:10:54 +0200 Subject: [PATCH] Properly handle incomplete context switch data. --- server/TracyView.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/server/TracyView.cpp b/server/TracyView.cpp index aacc2ff1..fdbef24f 100644 --- a/server/TracyView.cpp +++ b/server/TracyView.cpp @@ -4689,16 +4689,24 @@ void View::DrawZoneInfoWindow() { const auto end = m_worker.GetZoneEnd( ev ); auto eit = std::upper_bound( it, ctx->v.end(), end, [] ( const auto& l, const auto& r ) { return l < r.start; } ); + bool incomplete = eit == ctx->v.end(); uint64_t cnt = std::distance( it, eit ); if( cnt == 1 ) { - TextFocused( "Running state time:", TimeToString( ztime ) ); - ImGui::SameLine(); - TextDisabledUnformatted( "(100%)" ); - TextFocused( "Running state regions:", "1" ); + if( !incomplete ) + { + TextFocused( "Running state time:", TimeToString( ztime ) ); + ImGui::SameLine(); + TextDisabledUnformatted( "(100%)" ); + TextFocused( "Running state regions:", "1" ); + } } else { + if( incomplete ) + { + TextColoredUnformatted( ImVec4( 1, 0, 0, 1 ), "Incomplete context switch data!" ); + } auto bit = it; int64_t running = it->end - ev.start; ++it; @@ -11699,6 +11707,7 @@ bool View::GetZoneRunningTime( const ContextSwitch* ctx, const ZoneEvent& ev, in if( it == ctx->v.end() ) return false; const auto end = m_worker.GetZoneEnd( ev ); const auto eit = std::upper_bound( it, ctx->v.end(), end, [] ( const auto& l, const auto& r ) { return l < r.start; } ); + if( eit == ctx->v.end() ) return false; cnt = std::distance( it, eit ); if( cnt == 1 ) {