From 1b6c79fa7b6fdedfbd39f27795e031fde28f8826 Mon Sep 17 00:00:00 2001 From: Bartosz Taudul Date: Sun, 10 Nov 2019 02:10:21 +0100 Subject: [PATCH] More magic vector fixes. --- server/TracyView.cpp | 43 ++++++++++++++++++++++++++++++++++++++----- 1 file changed, 38 insertions(+), 5 deletions(-) diff --git a/server/TracyView.cpp b/server/TracyView.cpp index 9867e7ff..badecf6d 100644 --- a/server/TracyView.cpp +++ b/server/TracyView.cpp @@ -2205,7 +2205,15 @@ void View::DrawZones() int64_t t1 = std::numeric_limits::min(); for( auto& td : v->threadData ) { - const auto _t0 = td.second.timeline.front()->GpuStart(); + int64_t _t0; + if( td.second.timeline.is_magic() ) + { + _t0 = ((Vector*)&td.second.timeline)->front().GpuStart(); + } + else + { + _t0 = td.second.timeline.front()->GpuStart(); + } if( _t0 >= 0 ) { // FIXME @@ -2270,7 +2278,15 @@ void View::DrawZones() int64_t t0 = std::numeric_limits::max(); for( auto& td : v->threadData ) { - const auto _t0 = td.second.timeline.front()->GpuStart(); + int64_t _t0; + if( td.second.timeline.is_magic() ) + { + _t0 = ((Vector*)&td.second.timeline)->front().GpuStart(); + } + else + { + _t0 = td.second.timeline.front()->GpuStart(); + } if( _t0 >= 0 ) { t0 = std::min( t0, _t0 ); @@ -2539,8 +2555,17 @@ void View::DrawZones() } if( !v->timeline.empty() ) { - first = std::min( first, v->timeline.front()->Start() ); - last = std::max( last, m_worker.GetZoneEnd( *v->timeline.back() ) ); + if( v->timeline.is_magic() ) + { + auto& tl = *((Vector*)&v->timeline); + first = std::min( first, tl.front().Start() ); + last = std::max( last, m_worker.GetZoneEnd( tl.back() ) ); + } + else + { + first = std::min( first, v->timeline.front()->Start() ); + last = std::max( last, m_worker.GetZoneEnd( *v->timeline.back() ) ); + } } if( !v->messages.empty() ) { @@ -13186,7 +13211,15 @@ void View::ZoomToZone( const GpuEvent& ev ) { const auto td = ctx->threadData.size() == 1 ? ctx->threadData.begin() : ctx->threadData.find( m_worker.DecompressThread( ev.Thread() ) ); assert( td != ctx->threadData.end() ); - const auto begin = td->second.timeline.front()->GpuStart(); + int64_t begin; + if( td->second.timeline.is_magic() ) + { + begin = ((Vector*)&td->second.timeline)->front().GpuStart(); + } + else + { + begin = td->second.timeline.front()->GpuStart(); + } const auto drift = GpuDrift( ctx ); ZoomToRange( AdjustGpuTime( ev.GpuStart(), begin, drift ), AdjustGpuTime( end, begin, drift ) ); }