diff --git a/profiler/build/win32/Tracy.vcxproj b/profiler/build/win32/Tracy.vcxproj
index 8652921c..e600cbb0 100644
--- a/profiler/build/win32/Tracy.vcxproj
+++ b/profiler/build/win32/Tracy.vcxproj
@@ -179,6 +179,7 @@
+
diff --git a/profiler/build/win32/Tracy.vcxproj.filters b/profiler/build/win32/Tracy.vcxproj.filters
index c8cb7bd0..98040182 100644
--- a/profiler/build/win32/Tracy.vcxproj.filters
+++ b/profiler/build/win32/Tracy.vcxproj.filters
@@ -287,6 +287,9 @@
server
+
+ server
+
diff --git a/server/TracyView.cpp b/server/TracyView.cpp
index cec75fa1..02e0a064 100644
--- a/server/TracyView.cpp
+++ b/server/TracyView.cpp
@@ -611,7 +611,7 @@ bool View::DrawImpl()
ImGui::Spacing();
ImGui::SameLine();
#ifdef TRACY_EXTENDED_FONT
- ImGui::Text( ICON_FA_EYE " %-10s", TimeToString( m_zvEnd - m_zvStart ) );
+ ImGui::Text( ICON_FA_EYE " %-10s", TimeToString( m_vd.zvEnd - m_vd.zvStart ) );
if( ImGui::IsItemHovered() )
{
ImGui::BeginTooltip();
@@ -627,7 +627,7 @@ bool View::DrawImpl()
ImGui::EndTooltip();
}
#else
- ImGui::Text( "View span: %-10s Time span: %-10s ", TimeToString( m_zvEnd - m_zvStart ), TimeToString( m_worker.GetLastTime() ) );
+ ImGui::Text( "View span: %-10s Time span: %-10s ", TimeToString( m_vd.zvEnd - m_vd.zvStart ), TimeToString( m_worker.GetLastTime() ) );
#endif
const auto ty = ImGui::GetFontSize();
@@ -759,14 +759,14 @@ bool View::DrawImpl()
if( m_zoomAnim.progress >= 1.f )
{
m_zoomAnim.active = false;
- m_zvStart = m_zoomAnim.start1;
- m_zvEnd = m_zoomAnim.end1;
+ m_vd.zvStart = m_zoomAnim.start1;
+ m_vd.zvEnd = m_zoomAnim.end1;
}
else
{
const auto v = sqrt( sin( M_PI_2 * m_zoomAnim.progress ) );
- m_zvStart = int64_t( m_zoomAnim.start0 + ( m_zoomAnim.start1 - m_zoomAnim.start0 ) * v );
- m_zvEnd = int64_t( m_zoomAnim.end0 + ( m_zoomAnim.end1 - m_zoomAnim.end0 ) * v );
+ m_vd.zvStart = int64_t( m_zoomAnim.start0 + ( m_zoomAnim.start1 - m_zoomAnim.start0 ) * v );
+ m_vd.zvEnd = int64_t( m_zoomAnim.end0 + ( m_zoomAnim.end1 - m_zoomAnim.end0 ) * v );
}
}
@@ -1119,14 +1119,14 @@ void View::DrawFrames()
m_pause = true;
m_zoomAnim.active = false;
if( !m_playback.pause && m_playback.sync ) m_playback.pause = true;
- m_zvStart = m_worker.GetFrameBegin( *m_frames, sel );
- m_zvEnd = m_worker.GetFrameEnd( *m_frames, sel + group - 1 );
- if( m_zvStart == m_zvEnd ) m_zvStart--;
+ m_vd.zvStart = m_worker.GetFrameBegin( *m_frames, sel );
+ m_vd.zvEnd = m_worker.GetFrameEnd( *m_frames, sel + group - 1 );
+ if( m_vd.zvStart == m_vd.zvEnd ) m_vd.zvStart--;
}
else if( ImGui::IsMouseDragging( 0 ) )
{
- const auto t0 = std::min( m_zvStart, m_worker.GetFrameBegin( *m_frames, sel ) );
- const auto t1 = std::max( m_zvEnd, m_worker.GetFrameEnd( *m_frames, sel + group - 1 ) );
+ const auto t0 = std::min( m_vd.zvStart, m_worker.GetFrameBegin( *m_frames, sel ) );
+ const auto t1 = std::max( m_vd.zvEnd, m_worker.GetFrameEnd( *m_frames, sel + group - 1 ) );
ZoomToRange( t0, t1 );
}
}
@@ -1171,7 +1171,7 @@ void View::DrawFrames()
idx += group;
}
- const auto zrange = m_worker.GetFrameRange( *m_frames, m_zvStart, m_zvEnd );
+ const auto zrange = m_worker.GetFrameRange( *m_frames, m_vd.zvStart, m_vd.zvEnd );
if( zrange.second > m_frameStart && zrange.first < m_frameStart + onScreen * group )
{
auto x1 = std::min( onScreen * fwidth, ( zrange.second - m_frameStart ) * fwidth / group );
@@ -1197,11 +1197,11 @@ void View::HandleZoneViewMouse( int64_t timespan, const ImVec2& wpos, float w, d
if( ImGui::IsMouseClicked( 0 ) )
{
m_highlight.active = true;
- m_highlight.start = m_highlight.end = m_zvStart + ( io.MousePos.x - wpos.x ) * nspx;
+ m_highlight.start = m_highlight.end = m_vd.zvStart + ( io.MousePos.x - wpos.x ) * nspx;
}
else if( ImGui::IsMouseDragging( 0, 0 ) )
{
- m_highlight.end = m_zvStart + ( io.MousePos.x - wpos.x ) * nspx;
+ m_highlight.end = m_vd.zvStart + ( io.MousePos.x - wpos.x ) * nspx;
}
else
{
@@ -1211,11 +1211,11 @@ void View::HandleZoneViewMouse( int64_t timespan, const ImVec2& wpos, float w, d
if( ImGui::IsMouseClicked( 2 ) )
{
m_highlightZoom.active = true;
- m_highlightZoom.start = m_highlightZoom.end = m_zvStart + ( io.MousePos.x - wpos.x ) * nspx;
+ m_highlightZoom.start = m_highlightZoom.end = m_vd.zvStart + ( io.MousePos.x - wpos.x ) * nspx;
}
else if( ImGui::IsMouseDragging( 2, 0 ) )
{
- m_highlightZoom.end = m_zvStart + ( io.MousePos.x - wpos.x ) * nspx;
+ m_highlightZoom.end = m_vd.zvStart + ( io.MousePos.x - wpos.x ) * nspx;
}
else if( m_highlightZoom.active )
{
@@ -1227,13 +1227,13 @@ void View::HandleZoneViewMouse( int64_t timespan, const ImVec2& wpos, float w, d
// ZoomToRange disables m_highlightZoom.active
if( io.KeyCtrl )
{
- const auto tsOld = m_zvEnd - m_zvStart;
+ const auto tsOld = m_vd.zvEnd - m_vd.zvStart;
const auto tsNew = e - s;
const auto mul = double( tsOld ) / tsNew;
- const auto left = s - m_zvStart;
- const auto right = m_zvEnd - e;
+ const auto left = s - m_vd.zvStart;
+ const auto right = m_vd.zvEnd - e;
- ZoomToRange( m_zvStart - left * mul, m_zvEnd + right * mul );
+ ZoomToRange( m_vd.zvStart - left * mul, m_vd.zvEnd + right * mul );
}
else
{
@@ -1255,8 +1255,8 @@ void View::HandleZoneViewMouse( int64_t timespan, const ImVec2& wpos, float w, d
const auto dpx = int64_t( delta.x * nspx );
if( dpx != 0 )
{
- m_zvStart -= dpx;
- m_zvEnd -= dpx;
+ m_vd.zvStart -= dpx;
+ m_vd.zvEnd -= dpx;
io.MouseClickedPos[1].x = io.MousePos.x;
}
if( delta.y != 0 )
@@ -1281,8 +1281,8 @@ void View::HandleZoneViewMouse( int64_t timespan, const ImVec2& wpos, float w, d
}
else
{
- t0 = m_zvStart;
- t1 = m_zvEnd;
+ t0 = m_vd.zvStart;
+ t1 = m_vd.zvEnd;
}
const auto zoomSpan = t1 - t0;
const auto p1 = zoomSpan * p;
@@ -1360,7 +1360,7 @@ bool View::DrawZoneFramesHeader()
ImGui::InvisibleButton( "##zoneFrames", ImVec2( w, ty * 1.5 ) );
bool hover = ImGui::IsItemHovered();
- auto timespan = m_zvEnd - m_zvStart;
+ auto timespan = m_vd.zvEnd - m_vd.zvStart;
auto pxns = w / double( timespan );
if( hover ) HandleZoneViewMouse( timespan, wpos, w, pxns );
@@ -1381,8 +1381,8 @@ bool View::DrawZoneFramesHeader()
if( tw == 0 )
{
char buf[128];
- auto txt = TimeToString( m_zvStart );
- if( m_zvStart >= 0 )
+ auto txt = TimeToString( m_vd.zvStart );
+ if( m_vd.zvStart >= 0 )
{
sprintf( buf, "+%s", txt );
txt = buf;
@@ -1478,14 +1478,14 @@ bool View::DrawZoneFrames( const FrameData& frames )
ImGui::InvisibleButton( "##zoneFrames", ImVec2( w, ty ) );
bool hover = ImGui::IsItemHovered();
- auto timespan = m_zvEnd - m_zvStart;
+ auto timespan = m_vd.zvEnd - m_vd.zvStart;
auto pxns = w / double( timespan );
if( hover ) HandleZoneViewMouse( timespan, wpos, w, pxns );
const auto nspx = 1.0 / pxns;
- const std::pair zrange = m_worker.GetFrameRange( frames, m_zvStart, m_zvEnd );
+ const std::pair zrange = m_worker.GetFrameRange( frames, m_vd.zvStart, m_vd.zvEnd );
if( zrange.first < 0 ) return hover;
int64_t prev = -1;
@@ -1506,7 +1506,7 @@ bool View::DrawZoneFrames( const FrameData& frames )
const auto fend = m_worker.GetFrameEnd( frames, i );
const auto fsz = pxns * ftime;
- if( hover && ImGui::IsMouseHoveringRect( wpos + ImVec2( ( fbegin - m_zvStart ) * pxns, 0 ), wpos + ImVec2( ( fend - m_zvStart ) * pxns, ty ) ) )
+ if( hover && ImGui::IsMouseHoveringRect( wpos + ImVec2( ( fbegin - m_vd.zvStart ) * pxns, 0 ), wpos + ImVec2( ( fend - m_vd.zvStart ) * pxns, ty ) ) )
{
tooltipDisplayed = true;
@@ -1557,7 +1557,7 @@ bool View::DrawZoneFrames( const FrameData& frames )
{
if( ( fbegin - prevEnd ) * pxns >= MinFrameSize )
{
- DrawZigZag( draw, wpos + ImVec2( 0, round( ty / 2 ) ), ( prev - m_zvStart ) * pxns, ( prevEnd - m_zvStart ) * pxns, ty / 4, inactiveColor );
+ DrawZigZag( draw, wpos + ImVec2( 0, round( ty / 2 ) ), ( prev - m_vd.zvStart ) * pxns, ( prevEnd - m_vd.zvStart ) * pxns, ty / 4, inactiveColor );
prev = -1;
}
else
@@ -1583,24 +1583,24 @@ bool View::DrawZoneFrames( const FrameData& frames )
{
if( frames.continuous )
{
- DrawZigZag( draw, wpos + ImVec2( 0, round( ty / 2 ) ), ( prev - m_zvStart ) * pxns, ( fbegin - m_zvStart ) * pxns, ty / 4, inactiveColor );
+ DrawZigZag( draw, wpos + ImVec2( 0, round( ty / 2 ) ), ( prev - m_vd.zvStart ) * pxns, ( fbegin - m_vd.zvStart ) * pxns, ty / 4, inactiveColor );
}
else
{
- DrawZigZag( draw, wpos + ImVec2( 0, round( ty / 2 ) ), ( prev - m_zvStart ) * pxns, ( prevEnd - m_zvStart ) * pxns, ty / 4, inactiveColor );
+ DrawZigZag( draw, wpos + ImVec2( 0, round( ty / 2 ) ), ( prev - m_vd.zvStart ) * pxns, ( prevEnd - m_vd.zvStart ) * pxns, ty / 4, inactiveColor );
}
prev = -1;
}
if( activeFrameSet )
{
- if( fbegin >= m_zvStart && endPos != fbegin )
+ if( fbegin >= m_vd.zvStart && endPos != fbegin )
{
- draw->AddLine( wpos + ImVec2( ( fbegin - m_zvStart ) * pxns, 0 ), wpos + ImVec2( ( fbegin - m_zvStart ) * pxns, wh ), 0x22FFFFFF );
+ draw->AddLine( wpos + ImVec2( ( fbegin - m_vd.zvStart ) * pxns, 0 ), wpos + ImVec2( ( fbegin - m_vd.zvStart ) * pxns, wh ), 0x22FFFFFF );
}
- if( fend <= m_zvEnd )
+ if( fend <= m_vd.zvEnd )
{
- draw->AddLine( wpos + ImVec2( ( fend - m_zvStart ) * pxns, 0 ), wpos + ImVec2( ( fend - m_zvStart ) * pxns, wh ), 0x22FFFFFF );
+ draw->AddLine( wpos + ImVec2( ( fend - m_vd.zvStart ) * pxns, 0 ), wpos + ImVec2( ( fend - m_vd.zvStart ) * pxns, wh ), 0x22FFFFFF );
}
endPos = fend;
}
@@ -1615,18 +1615,18 @@ bool View::DrawZoneFrames( const FrameData& frames )
tx = ImGui::CalcTextSize( buf ).x;
}
- if( fbegin >= m_zvStart )
+ if( fbegin >= m_vd.zvStart )
{
- draw->AddLine( wpos + ImVec2( ( fbegin - m_zvStart ) * pxns + 2, 1 ), wpos + ImVec2( ( fbegin - m_zvStart ) * pxns + 2, ty - 1 ), color );
+ draw->AddLine( wpos + ImVec2( ( fbegin - m_vd.zvStart ) * pxns + 2, 1 ), wpos + ImVec2( ( fbegin - m_vd.zvStart ) * pxns + 2, ty - 1 ), color );
}
- if( fend <= m_zvEnd )
+ if( fend <= m_vd.zvEnd )
{
- draw->AddLine( wpos + ImVec2( ( fend - m_zvStart ) * pxns - 2, 1 ), wpos + ImVec2( ( fend - m_zvStart ) * pxns - 2, ty - 1 ), color );
+ draw->AddLine( wpos + ImVec2( ( fend - m_vd.zvStart ) * pxns - 2, 1 ), wpos + ImVec2( ( fend - m_vd.zvStart ) * pxns - 2, ty - 1 ), color );
}
if( fsz - 7 > tx )
{
- const auto f0 = ( fbegin - m_zvStart ) * pxns + 2;
- const auto f1 = ( fend - m_zvStart ) * pxns - 2;
+ const auto f0 = ( fbegin - m_vd.zvStart ) * pxns + 2;
+ const auto f1 = ( fend - m_vd.zvStart ) * pxns - 2;
const auto x0 = f0 + 1;
const auto x1 = f1 - 1;
const auto te = x1 - tx;
@@ -1648,7 +1648,7 @@ bool View::DrawZoneFrames( const FrameData& frames )
}
else
{
- draw->AddLine( wpos + ImVec2( std::max( -10.0, ( fbegin - m_zvStart ) * pxns + 2 ), round( ty / 2 ) ), wpos + ImVec2( std::min( w + 20.0, ( fend - m_zvStart ) * pxns - 2 ), round( ty / 2 ) ), color );
+ draw->AddLine( wpos + ImVec2( std::max( -10.0, ( fbegin - m_vd.zvStart ) * pxns + 2 ), round( ty / 2 ) ), wpos + ImVec2( std::min( w + 20.0, ( fend - m_vd.zvStart ) * pxns - 2 ), round( ty / 2 ) ), color );
}
i++;
@@ -1658,12 +1658,12 @@ bool View::DrawZoneFrames( const FrameData& frames )
{
if( frames.continuous )
{
- DrawZigZag( draw, wpos + ImVec2( 0, round( ty / 2 ) ), ( prev - m_zvStart ) * pxns, ( m_worker.GetFrameBegin( frames, zrange.second-1 ) - m_zvStart ) * pxns, ty / 4, inactiveColor );
+ DrawZigZag( draw, wpos + ImVec2( 0, round( ty / 2 ) ), ( prev - m_vd.zvStart ) * pxns, ( m_worker.GetFrameBegin( frames, zrange.second-1 ) - m_vd.zvStart ) * pxns, ty / 4, inactiveColor );
}
else
{
- const auto begin = ( prev - m_zvStart ) * pxns;
- const auto end = ( m_worker.GetFrameBegin( frames, zrange.second-1 ) - m_zvStart ) * pxns;
+ const auto begin = ( prev - m_vd.zvStart ) * pxns;
+ const auto end = ( m_worker.GetFrameBegin( frames, zrange.second-1 ) - m_vd.zvStart ) * pxns;
DrawZigZag( draw, wpos + ImVec2( 0, round( ty / 2 ) ), begin, std::max( begin + MinFrameSize, end ), ty / 4, inactiveColor );
}
}
@@ -1727,8 +1727,8 @@ void View::DrawZones()
m_lockHoverHighlight.Decay( InvalidId );
m_zoneHover = nullptr;
- if( m_zvStart == m_zvEnd ) return;
- assert( m_zvStart < m_zvEnd );
+ if( m_vd.zvStart == m_vd.zvEnd ) return;
+ assert( m_vd.zvStart < m_vd.zvEnd );
if( ImGui::GetCurrentWindow()->SkipItems ) return;
@@ -1741,18 +1741,18 @@ void View::DrawZones()
auto draw = ImGui::GetWindowDrawList();
const auto w = ImGui::GetWindowContentRegionWidth() - ImGui::GetStyle().ScrollbarSize;
- const auto timespan = m_zvEnd - m_zvStart;
+ const auto timespan = m_vd.zvEnd - m_vd.zvStart;
auto pxns = w / double( timespan );
{
const auto tbegin = 0;
const auto tend = m_worker.GetLastTime();
- if( tbegin > m_zvStart )
+ if( tbegin > m_vd.zvStart )
{
- draw->AddRectFilled( linepos, linepos + ImVec2( ( tbegin - m_zvStart ) * pxns, lineh ), 0x44000000 );
+ draw->AddRectFilled( linepos, linepos + ImVec2( ( tbegin - m_vd.zvStart ) * pxns, lineh ), 0x44000000 );
}
- if( tend < m_zvEnd )
+ if( tend < m_vd.zvEnd )
{
- draw->AddRectFilled( linepos + ImVec2( ( tend - m_zvStart ) * pxns, 0 ), linepos + ImVec2( w, lineh ), 0x44000000 );
+ draw->AddRectFilled( linepos + ImVec2( ( tend - m_vd.zvStart ) * pxns, 0 ), linepos + ImVec2( w, lineh ), 0x44000000 );
}
}
@@ -1967,8 +1967,8 @@ void View::DrawZones()
}
offset += ostep * 0.2f;
- auto msgit = std::lower_bound( v->messages.begin(), v->messages.end(), m_zvStart, [] ( const auto& lhs, const auto& rhs ) { return lhs->time < rhs; } );
- auto msgend = std::lower_bound( msgit, v->messages.end(), m_zvEnd+1, [] ( const auto& lhs, const auto& rhs ) { return lhs->time < rhs; } );
+ auto msgit = std::lower_bound( v->messages.begin(), v->messages.end(), m_vd.zvStart, [] ( const auto& lhs, const auto& rhs ) { return lhs->time < rhs; } );
+ auto msgend = std::lower_bound( msgit, v->messages.end(), m_vd.zvEnd+1, [] ( const auto& lhs, const auto& rhs ) { return lhs->time < rhs; } );
if( !m_drawEmptyLabels && showFull && depth == 0 && msgit == msgend && crash.thread != v->id )
{
@@ -1992,7 +1992,7 @@ void View::DrawZones()
const auto next = std::upper_bound( msgit, v->messages.end(), (*msgit)->time + MinVisSize * nspx, [] ( const auto& lhs, const auto& rhs ) { return lhs < rhs->time; } );
const auto dist = std::distance( msgit, next );
- const auto px = ( (*msgit)->time - m_zvStart ) * pxns;
+ const auto px = ( (*msgit)->time - m_vd.zvStart ) * pxns;
const bool isMsgHovered = hover && ImGui::IsMouseHoveringRect( wpos + ImVec2( px - (ty - to) * 0.5 - 1, oldOffset ), wpos + ImVec2( px + (ty - to) * 0.5 + 1, oldOffset + ty ) );
unsigned int color = 0xFFDDDDDD;
@@ -2056,9 +2056,9 @@ void View::DrawZones()
msgit = next;
}
- if( crash.thread == v->id && crash.time >= m_zvStart && crash.time <= m_zvEnd )
+ if( crash.thread == v->id && crash.time >= m_vd.zvStart && crash.time <= m_vd.zvEnd )
{
- const auto px = ( crash.time - m_zvStart ) * pxns;
+ const auto px = ( crash.time - m_vd.zvStart ) * pxns;
draw->AddTriangleFilled( wpos + ImVec2( px - (ty - to) * 0.25f, oldOffset + to + th * 0.5f ), wpos + ImVec2( px + (ty - to) * 0.25f, oldOffset + to + th * 0.5f ), wpos + ImVec2( px, oldOffset + to + th ), 0xFF2222FF );
draw->AddTriangle( wpos + ImVec2( px - (ty - to) * 0.25f, oldOffset + to + th * 0.5f ), wpos + ImVec2( px + (ty - to) * 0.25f, oldOffset + to + th * 0.5f ), wpos + ImVec2( px, oldOffset + to + th ), 0xFF2222FF, 2.0f );
@@ -2233,15 +2233,15 @@ void View::DrawZones()
if( m_gpuStart != 0 && m_gpuEnd != 0 )
{
- const auto px0 = ( m_gpuStart - m_zvStart ) * pxns;
- const auto px1 = std::max( px0 + std::max( 1.0, pxns * 0.5 ), ( m_gpuEnd - m_zvStart ) * pxns );
+ const auto px0 = ( m_gpuStart - m_vd.zvStart ) * pxns;
+ const auto px1 = std::max( px0 + std::max( 1.0, pxns * 0.5 ), ( m_gpuEnd - m_vd.zvStart ) * pxns );
draw->AddRectFilled( ImVec2( wpos.x + px0, linepos.y ), ImVec2( wpos.x + px1, linepos.y + lineh ), 0x228888DD );
draw->AddRect( ImVec2( wpos.x + px0, linepos.y ), ImVec2( wpos.x + px1, linepos.y + lineh ), 0x448888DD );
}
if( m_gpuInfoWindow )
{
- const auto px0 = ( m_gpuInfoWindow->cpuStart - m_zvStart ) * pxns;
- const auto px1 = std::max( px0 + std::max( 1.0, pxns * 0.5 ), ( m_gpuInfoWindow->cpuEnd - m_zvStart ) * pxns );
+ const auto px0 = ( m_gpuInfoWindow->cpuStart - m_vd.zvStart ) * pxns;
+ const auto px1 = std::max( px0 + std::max( 1.0, pxns * 0.5 ), ( m_gpuInfoWindow->cpuEnd - m_vd.zvStart ) * pxns );
draw->AddRectFilled( ImVec2( wpos.x + px0, linepos.y ), ImVec2( wpos.x + px1, linepos.y + lineh ), 0x2288DD88 );
draw->AddRect( ImVec2( wpos.x + px0, linepos.y ), ImVec2( wpos.x + px1, linepos.y + lineh ), 0x4488DD88 );
}
@@ -2250,8 +2250,8 @@ void View::DrawZones()
{
const auto s = std::min( m_highlight.start, m_highlight.end );
const auto e = std::max( m_highlight.start, m_highlight.end );
- draw->AddRectFilled( ImVec2( wpos.x + ( s - m_zvStart ) * pxns, linepos.y ), ImVec2( wpos.x + ( e - m_zvStart ) * pxns, linepos.y + lineh ), 0x22DD8888 );
- draw->AddRect( ImVec2( wpos.x + ( s - m_zvStart ) * pxns, linepos.y ), ImVec2( wpos.x + ( e - m_zvStart ) * pxns, linepos.y + lineh ), 0x44DD8888 );
+ draw->AddRectFilled( ImVec2( wpos.x + ( s - m_vd.zvStart ) * pxns, linepos.y ), ImVec2( wpos.x + ( e - m_vd.zvStart ) * pxns, linepos.y + lineh ), 0x22DD8888 );
+ draw->AddRect( ImVec2( wpos.x + ( s - m_vd.zvStart ) * pxns, linepos.y ), ImVec2( wpos.x + ( e - m_vd.zvStart ) * pxns, linepos.y + lineh ), 0x44DD8888 );
ImGui::BeginTooltip();
ImGui::TextUnformatted( TimeToString( e - s ) );
@@ -2267,13 +2267,13 @@ void View::DrawZones()
{
const auto s = std::min( m_highlightZoom.start, m_highlightZoom.end );
const auto e = std::max( m_highlightZoom.start, m_highlightZoom.end );
- draw->AddRectFilled( ImVec2( wpos.x + ( s - m_zvStart ) * pxns, linepos.y ), ImVec2( wpos.x + ( e - m_zvStart ) * pxns, linepos.y + lineh ), 0x1688DD88 );
- draw->AddRect( ImVec2( wpos.x + ( s - m_zvStart ) * pxns, linepos.y ), ImVec2( wpos.x + ( e - m_zvStart ) * pxns, linepos.y + lineh ), 0x2C88DD88 );
+ draw->AddRectFilled( ImVec2( wpos.x + ( s - m_vd.zvStart ) * pxns, linepos.y ), ImVec2( wpos.x + ( e - m_vd.zvStart ) * pxns, linepos.y + lineh ), 0x1688DD88 );
+ draw->AddRect( ImVec2( wpos.x + ( s - m_vd.zvStart ) * pxns, linepos.y ), ImVec2( wpos.x + ( e - m_vd.zvStart ) * pxns, linepos.y + lineh ), 0x2C88DD88 );
}
if( m_memInfo.show && m_memInfo.restrictTime )
{
- const auto zvMid = ( m_zvEnd - m_zvStart ) / 2;
+ const auto zvMid = ( m_vd.zvEnd - m_vd.zvStart ) / 2;
draw->AddLine( ImVec2( wpos.x + zvMid * pxns, linepos.y ), ImVec2( wpos.x + zvMid * pxns, linepos.y + lineh ), 0x88FF44FF );
}
}
@@ -2403,11 +2403,11 @@ static const char* DecodeContextSwitchState( uint8_t state )
void View::DrawContextSwitches( const ContextSwitch* ctx, bool hover, double pxns, int64_t nspx, const ImVec2& wpos, int offset )
{
auto& vec = ctx->v;
- auto it = std::lower_bound( vec.begin(), vec.end(), std::max( 0, m_zvStart ), [] ( const auto& l, const auto& r ) { return (uint64_t)l.End() < (uint64_t)r; } );
+ auto it = std::lower_bound( vec.begin(), vec.end(), std::max( 0, m_vd.zvStart ), [] ( const auto& l, const auto& r ) { return (uint64_t)l.End() < (uint64_t)r; } );
if( it == vec.end() ) return;
if( it != vec.begin() ) --it;
- auto citend = std::lower_bound( it, vec.end(), m_zvEnd, [] ( const auto& l, const auto& r ) { return l.Start() < r; } );
+ auto citend = std::lower_bound( it, vec.end(), m_vd.zvEnd, [] ( const auto& l, const auto& r ) { return l.Start() < r; } );
if( it == citend ) return;
if( citend != vec.end() ) ++citend;
@@ -2424,9 +2424,9 @@ void View::DrawContextSwitches( const ContextSwitch* ctx, bool hover, double pxn
if( pit != citend )
{
const bool migration = pit->Cpu() != ev.Cpu();
- const auto px0 = std::max( { ( pit->End() - m_zvStart ) * pxns, -10.0, minpx } );
- const auto pxw = ( ev.wakeup - m_zvStart ) * pxns;
- const auto px1 = std::min( ( ev.Start() - m_zvStart ) * pxns, w + 10.0 );
+ const auto px0 = std::max( { ( pit->End() - m_vd.zvStart ) * pxns, -10.0, minpx } );
+ const auto pxw = ( ev.wakeup - m_vd.zvStart ) * pxns;
+ const auto px1 = std::min( ( ev.Start() - m_vd.zvStart ) * pxns, w + 10.0 );
const auto color = migration ? 0xFFEE7711 : 0xFF2222AA;
draw->AddLine( wpos + ImVec2( px0, round( offset + ty * 0.5 ) - 0.5 ), wpos + ImVec2( std::min( pxw, w+10.0 ), round( offset + ty * 0.5 ) - 0.5 ), color, 2 );
if( ev.wakeup != ev.Start() )
@@ -2491,8 +2491,8 @@ void View::DrawContextSwitches( const ContextSwitch* ctx, bool hover, double pxn
if( zsz < MinCtxSize )
{
int num = 0;
- const auto px0 = std::max( ( ev.Start() - m_zvStart ) * pxns, -10.0 );
- auto px1 = ( end - m_zvStart ) * pxns;
+ const auto px0 = std::max( ( ev.Start() - m_vd.zvStart ) * pxns, -10.0 );
+ auto px1 = ( end - m_vd.zvStart ) * pxns;
auto rend = end;
auto nextTime = end + MinCtxSize;
for(;;)
@@ -2503,7 +2503,7 @@ void View::DrawContextSwitches( const ContextSwitch* ctx, bool hover, double pxn
num += std::distance( prevIt, it );
if( it == citend ) break;
const auto nend = it->End() >= 0 ? it->End() : m_worker.GetLastTime();
- const auto pxnext = ( nend - m_zvStart ) * pxns;
+ const auto pxnext = ( nend - m_vd.zvStart ) * pxns;
if( pxnext - px1 >= MinCtxSize * 2 ) break;
px1 = pxnext;
rend = nend;
@@ -2548,8 +2548,8 @@ void View::DrawContextSwitches( const ContextSwitch* ctx, bool hover, double pxn
}
else
{
- const auto px0 = std::max( { ( ev.Start() - m_zvStart ) * pxns, -10.0, minpx } );
- const auto px1 = std::min( ( end - m_zvStart ) * pxns, w + 10.0 );
+ const auto px0 = std::max( { ( ev.Start() - m_vd.zvStart ) * pxns, -10.0, minpx } );
+ const auto px1 = std::min( ( end - m_vd.zvStart ) * pxns, w + 10.0 );
draw->AddLine( wpos + ImVec2( px0, round( offset + ty * 0.5 ) - 0.5 ), wpos + ImVec2( px1, round( offset + ty * 0.5 ) - 0.5 ), 0xFF22DD22, 2 );
if( hover && ImGui::IsMouseHoveringRect( wpos + ImVec2( px0, offset ), wpos + ImVec2( px1, offset + ty ) ) )
{
@@ -2592,12 +2592,12 @@ int View::DrawZoneLevel( const Vector& vec, bool hover, double pxns,
const auto delay = m_worker.GetDelay();
const auto resolution = m_worker.GetResolution();
// cast to uint64_t, so that unended zones (end = -1) are still drawn
- auto it = std::lower_bound( vec.begin(), vec.end(), std::max( 0, m_zvStart - delay ), [] ( const auto& l, const auto& r ) { return (uint64_t)l->end < (uint64_t)r; } );
+ auto it = std::lower_bound( vec.begin(), vec.end(), std::max( 0, m_vd.zvStart - delay ), [] ( const auto& l, const auto& r ) { return (uint64_t)l->end < (uint64_t)r; } );
if( it == vec.end() ) return depth;
- const auto zitend = std::lower_bound( it, vec.end(), m_zvEnd + resolution, [] ( const auto& l, const auto& r ) { return l->Start() < r; } );
+ const auto zitend = std::lower_bound( it, vec.end(), m_vd.zvEnd + resolution, [] ( const auto& l, const auto& r ) { return l->Start() < r; } );
if( it == zitend ) return depth;
- if( (*it)->end < 0 && m_worker.GetZoneEnd( **it ) < m_zvStart ) return depth;
+ if( (*it)->end < 0 && m_worker.GetZoneEnd( **it ) < m_vd.zvStart ) return depth;
const auto w = ImGui::GetWindowContentRegionWidth() - 1;
const auto ty = ImGui::GetFontSize();
@@ -2619,8 +2619,8 @@ int View::DrawZoneLevel( const Vector& vec, bool hover, double pxns,
if( zsz < MinVisSize )
{
int num = 0;
- const auto px0 = ( ev.Start() - m_zvStart ) * pxns;
- auto px1 = ( end - m_zvStart ) * pxns;
+ const auto px0 = ( ev.Start() - m_vd.zvStart ) * pxns;
+ auto px1 = ( end - m_vd.zvStart ) * pxns;
auto rend = end;
auto nextTime = end + MinVisSize;
for(;;)
@@ -2631,7 +2631,7 @@ int View::DrawZoneLevel( const Vector& vec, bool hover, double pxns,
num += std::distance( prevIt, it );
if( it == zitend ) break;
const auto nend = m_worker.GetZoneEnd( **it );
- const auto pxnext = ( nend - m_zvStart ) * pxns;
+ const auto pxnext = ( nend - m_vd.zvStart ) * pxns;
if( pxnext - px1 >= MinVisSize * 2 ) break;
px1 = pxnext;
rend = nend;
@@ -2706,8 +2706,8 @@ int View::DrawZoneLevel( const Vector& vec, bool hover, double pxns,
tsz = ImGui::CalcTextSize( zoneName );
}
- const auto pr0 = ( ev.Start() - m_zvStart ) * pxns;
- const auto pr1 = ( end - m_zvStart ) * pxns;
+ const auto pr0 = ( ev.Start() - m_vd.zvStart ) * pxns;
+ const auto pr1 = ( end - m_vd.zvStart ) * pxns;
const auto px0 = std::max( pr0, -10.0 );
const auto px1 = std::max( { std::min( pr1, double( w + 10 ) ), px0 + pxns * 0.5, px0 + MinVisSize } );
draw->AddRectFilled( wpos + ImVec2( px0, offset ), wpos + ImVec2( px1, offset + tsz.y ), color );
@@ -2751,7 +2751,7 @@ int View::DrawZoneLevel( const Vector& vec, bool hover, double pxns,
}
if( tsz.x < zsz )
{
- const auto x = ( ev.Start() - m_zvStart ) * pxns + ( ( end - ev.Start() ) * pxns - tsz.x ) / 2;
+ const auto x = ( ev.Start() - m_vd.zvStart ) * pxns + ( ( end - ev.Start() ) * pxns - tsz.x ) / 2;
if( x < 0 || x > w - tsz.x )
{
ImGui::PushClipRect( wpos + ImVec2( px0, offset ), wpos + ImVec2( px1, offset + tsz.y * 2 ), true );
@@ -2770,7 +2770,7 @@ int View::DrawZoneLevel( const Vector& vec, bool hover, double pxns,
else
{
ImGui::PushClipRect( wpos + ImVec2( px0, offset ), wpos + ImVec2( px1, offset + tsz.y * 2 ), true );
- DrawTextContrast( draw, wpos + ImVec2( ( ev.Start() - m_zvStart ) * pxns, offset ), 0xFFFFFFFF, zoneName );
+ DrawTextContrast( draw, wpos + ImVec2( ( ev.Start() - m_vd.zvStart ) * pxns, offset ), 0xFFFFFFFF, zoneName );
ImGui::PopClipRect();
}
@@ -2810,10 +2810,10 @@ int View::SkipZoneLevel( const Vector& vec, bool hover, double pxns,
const auto delay = m_worker.GetDelay();
const auto resolution = m_worker.GetResolution();
// cast to uint64_t, so that unended zones (end = -1) are still drawn
- auto it = std::lower_bound( vec.begin(), vec.end(), m_zvStart - delay, [] ( const auto& l, const auto& r ) { return (uint64_t)l->end < (uint64_t)r; } );
+ auto it = std::lower_bound( vec.begin(), vec.end(), m_vd.zvStart - delay, [] ( const auto& l, const auto& r ) { return (uint64_t)l->end < (uint64_t)r; } );
if( it == vec.end() ) return depth;
- const auto zitend = std::lower_bound( it, vec.end(), m_zvEnd + resolution, [] ( const auto& l, const auto& r ) { return l->Start() < r; } );
+ const auto zitend = std::lower_bound( it, vec.end(), m_vd.zvEnd + resolution, [] ( const auto& l, const auto& r ) { return l->Start() < r; } );
if( it == zitend ) return depth;
depth++;
@@ -2826,7 +2826,7 @@ int View::SkipZoneLevel( const Vector& vec, bool hover, double pxns,
const auto zsz = std::max( ( end - ev.Start() ) * pxns, pxns * 0.5 );
if( zsz < MinVisSize )
{
- auto px1 = ( end - m_zvStart ) * pxns;
+ auto px1 = ( end - m_vd.zvStart ) * pxns;
auto nextTime = end + MinVisSize;
for(;;)
{
@@ -2835,7 +2835,7 @@ int View::SkipZoneLevel( const Vector& vec, bool hover, double pxns,
if( it == prevIt ) ++it;
if( it == zitend ) break;
const auto nend = m_worker.GetZoneEnd( **it );
- const auto pxnext = ( nend - m_zvStart ) * pxns;
+ const auto pxnext = ( nend - m_vd.zvStart ) * pxns;
if( pxnext - px1 >= MinVisSize * 2 ) break;
px1 = pxnext;
nextTime = nend + nspx;
@@ -2883,10 +2883,10 @@ int View::DrawGpuZoneLevel( const Vector& vec, bool hover, double pxn
const auto delay = m_worker.GetDelay();
const auto resolution = m_worker.GetResolution();
// cast to uint64_t, so that unended zones (end = -1) are still drawn
- auto it = std::lower_bound( vec.begin(), vec.end(), std::max( 0, m_zvStart - delay ), [begin, drift] ( const auto& l, const auto& r ) { return (uint64_t)AdjustGpuTime( l->gpuEnd, begin, drift ) < (uint64_t)r; } );
+ auto it = std::lower_bound( vec.begin(), vec.end(), std::max( 0, m_vd.zvStart - delay ), [begin, drift] ( const auto& l, const auto& r ) { return (uint64_t)AdjustGpuTime( l->gpuEnd, begin, drift ) < (uint64_t)r; } );
if( it == vec.end() ) return depth;
- const auto zitend = std::lower_bound( it, vec.end(), m_zvEnd + resolution, [begin, drift] ( const auto& l, const auto& r ) { return AdjustGpuTime( l->gpuStart, begin, drift ) < r; } );
+ const auto zitend = std::lower_bound( it, vec.end(), m_vd.zvEnd + resolution, [begin, drift] ( const auto& l, const auto& r ) { return AdjustGpuTime( l->gpuStart, begin, drift ) < r; } );
if( it == zitend ) return depth;
const auto w = ImGui::GetWindowContentRegionWidth() - 1;
@@ -2910,8 +2910,8 @@ int View::DrawGpuZoneLevel( const Vector& vec, bool hover, double pxn
if( zsz < MinVisSize )
{
int num = 0;
- const auto px0 = ( start - m_zvStart ) * pxns;
- auto px1 = ( end - m_zvStart ) * pxns;
+ const auto px0 = ( start - m_vd.zvStart ) * pxns;
+ auto px1 = ( end - m_vd.zvStart ) * pxns;
auto rend = end;
auto nextTime = end + MinVisSize;
for(;;)
@@ -2922,7 +2922,7 @@ int View::DrawGpuZoneLevel( const Vector& vec, bool hover, double pxn
num += std::distance( prevIt, it );
if( it == zitend ) break;
const auto nend = AdjustGpuTime( m_worker.GetZoneEnd( **it ), begin, drift );
- const auto pxnext = ( nend - m_zvStart ) * pxns;
+ const auto pxnext = ( nend - m_vd.zvStart ) * pxns;
if( pxnext - px1 >= MinVisSize * 2 ) break;
px1 = pxnext;
rend = nend;
@@ -2983,15 +2983,15 @@ int View::DrawGpuZoneLevel( const Vector& vec, bool hover, double pxn
const char* zoneName = m_worker.GetZoneName( ev );
auto tsz = ImGui::CalcTextSize( zoneName );
- const auto pr0 = ( start - m_zvStart ) * pxns;
- const auto pr1 = ( end - m_zvStart ) * pxns;
+ const auto pr0 = ( start - m_vd.zvStart ) * pxns;
+ const auto pr1 = ( end - m_vd.zvStart ) * pxns;
const auto px0 = std::max( pr0, -10.0 );
const auto px1 = std::max( { std::min( pr1, double( w + 10 ) ), px0 + pxns * 0.5, px0 + MinVisSize } );
draw->AddRectFilled( wpos + ImVec2( px0, offset ), wpos + ImVec2( px1, offset + tsz.y ), color );
draw->AddRect( wpos + ImVec2( px0, offset ), wpos + ImVec2( px1, offset + tsz.y ), GetZoneHighlight( ev ), 0.f, -1, GetZoneThickness( ev ) );
if( tsz.x < zsz )
{
- const auto x = ( start - m_zvStart ) * pxns + ( ( end - start ) * pxns - tsz.x ) / 2;
+ const auto x = ( start - m_vd.zvStart ) * pxns + ( ( end - start ) * pxns - tsz.x ) / 2;
if( x < 0 || x > w - tsz.x )
{
ImGui::PushClipRect( wpos + ImVec2( px0, offset ), wpos + ImVec2( px1, offset + tsz.y * 2 ), true );
@@ -3010,7 +3010,7 @@ int View::DrawGpuZoneLevel( const Vector& vec, bool hover, double pxn
else
{
ImGui::PushClipRect( wpos + ImVec2( px0, offset ), wpos + ImVec2( px1, offset + tsz.y * 2 ), true );
- DrawTextContrast( draw, wpos + ImVec2( ( start - m_zvStart ) * pxns, offset ), 0xFFFFFFFF, zoneName );
+ DrawTextContrast( draw, wpos + ImVec2( ( start - m_vd.zvStart ) * pxns, offset ), 0xFFFFFFFF, zoneName );
ImGui::PopClipRect();
}
@@ -3043,10 +3043,10 @@ int View::SkipGpuZoneLevel( const Vector& vec, bool hover, double pxn
const auto delay = m_worker.GetDelay();
const auto resolution = m_worker.GetResolution();
// cast to uint64_t, so that unended zones (end = -1) are still drawn
- auto it = std::lower_bound( vec.begin(), vec.end(), m_zvStart - delay, [begin, drift] ( const auto& l, const auto& r ) { return (uint64_t)AdjustGpuTime( l->gpuEnd, begin, drift ) < (uint64_t)r; } );
+ auto it = std::lower_bound( vec.begin(), vec.end(), m_vd.zvStart - delay, [begin, drift] ( const auto& l, const auto& r ) { return (uint64_t)AdjustGpuTime( l->gpuEnd, begin, drift ) < (uint64_t)r; } );
if( it == vec.end() ) return depth;
- const auto zitend = std::lower_bound( it, vec.end(), m_zvEnd + resolution, [begin, drift] ( const auto& l, const auto& r ) { return AdjustGpuTime( l->gpuStart, begin, drift ) < r; } );
+ const auto zitend = std::lower_bound( it, vec.end(), m_vd.zvEnd + resolution, [begin, drift] ( const auto& l, const auto& r ) { return AdjustGpuTime( l->gpuStart, begin, drift ) < r; } );
if( it == zitend ) return depth;
depth++;
@@ -3062,7 +3062,7 @@ int View::SkipGpuZoneLevel( const Vector& vec, bool hover, double pxn
const auto zsz = std::max( ( end - start ) * pxns, pxns * 0.5 );
if( zsz < MinVisSize )
{
- auto px1 = ( end - m_zvStart ) * pxns;
+ auto px1 = ( end - m_vd.zvStart ) * pxns;
auto nextTime = end;
for(;;)
{
@@ -3071,7 +3071,7 @@ int View::SkipGpuZoneLevel( const Vector& vec, bool hover, double pxn
if( it == prevIt ) ++it;
if( it == zitend ) break;
const auto nend = AdjustGpuTime( m_worker.GetZoneEnd( **it ), begin, drift );
- const auto pxnext = ( nend - m_zvStart ) * pxns;
+ const auto pxnext = ( nend - m_vd.zvStart ) * pxns;
if( pxnext - px1 >= MinVisSize * 2 ) break;
px1 = pxnext;
nextTime = nend + nspx;
@@ -3425,7 +3425,7 @@ int View::DrawLocks( uint64_t tid, bool hover, double pxns, const ImVec2& wpos,
const auto& range = lockmap.range[it->second];
const auto& tl = lockmap.timeline;
assert( !tl.empty() );
- if( range.start > m_zvEnd || range.end < m_zvStart )
+ if( range.start > m_vd.zvEnd || range.end < m_vd.zvStart )
{
if( m_lockInfoWindow == v.first )
{
@@ -3443,8 +3443,8 @@ int View::DrawLocks( uint64_t tid, bool hover, double pxns, const ImVec2& wpos,
const auto thread = it->second;
const auto threadBit = GetThreadBit( thread );
- auto vbegin = std::lower_bound( tl.begin(), tl.end(), std::max( range.start, m_zvStart - delay ), [] ( const auto& l, const auto& r ) { return l.ptr->Time() < r; } );
- const auto vend = std::lower_bound( vbegin, tl.end(), std::min( range.end, m_zvEnd + resolution ), [] ( const auto& l, const auto& r ) { return l.ptr->Time() < r; } );
+ auto vbegin = std::lower_bound( tl.begin(), tl.end(), std::max( range.start, m_vd.zvStart - delay ), [] ( const auto& l, const auto& r ) { return l.ptr->Time() < r; } );
+ const auto vend = std::lower_bound( vbegin, tl.end(), std::min( range.end, m_vd.zvEnd + resolution ), [] ( const auto& l, const auto& r ) { return l.ptr->Time() < r; } );
if( vbegin > tl.begin() ) vbegin--;
@@ -3520,9 +3520,9 @@ int View::DrawLocks( uint64_t tid, bool hover, double pxns, const ImVec2& wpos,
const auto t0 = vbegin->ptr->Time();
int64_t t1 = next == tl.end() ? m_worker.GetLastTime() : next->ptr->Time();
- const auto px0 = std::max( pxend, ( t0 - m_zvStart ) * pxns );
+ const auto px0 = std::max( pxend, ( t0 - m_vd.zvStart ) * pxns );
auto tx0 = px0;
- double px1 = ( t1 - m_zvStart ) * pxns;
+ double px1 = ( t1 - m_vd.zvStart ) * pxns;
uint64_t condensed = 0;
if( m_onlyContendedLocks )
@@ -3544,7 +3544,7 @@ int View::DrawLocks( uint64_t tid, bool hover, double pxns, const ImVec2& wpos,
drawState = CombineLockState( drawState, state );
condensed++;
const auto t2 = n == tl.end() ? m_worker.GetLastTime() : n->ptr->Time();
- const auto px2 = ( t2 - m_zvStart ) * pxns;
+ const auto px2 = ( t2 - m_vd.zvStart ) * pxns;
if( px2 - px1 > MinVisSize ) break;
if( drawState != ns && px2 - px0 > MinVisSize && !( ns == LockState::Nothing || ns == LockState::HasLock ) ) break;
t1 = t2;
@@ -3573,7 +3573,7 @@ int View::DrawLocks( uint64_t tid, bool hover, double pxns, const ImVec2& wpos,
drawState = CombineLockState( drawState, state );
condensed++;
const auto t2 = n == tl.end() ? m_worker.GetLastTime() : n->ptr->Time();
- const auto px2 = ( t2 - m_zvStart ) * pxns;
+ const auto px2 = ( t2 - m_vd.zvStart ) * pxns;
if( px2 - px1 > MinVisSize ) break;
if( drawState != ns && px2 - px0 > MinVisSize && ns != LockState::Nothing ) break;
t1 = t2;
@@ -3886,7 +3886,7 @@ int View::DrawLocks( uint64_t tid, bool hover, double pxns, const ImVec2& wpos,
DrawZigZag( draw, wpos + ImVec2( 0, offset + round( ty / 2 ) ), px0, pxend, ty / 4, DarkenColor( cfilled ) );
}
- const auto rx0 = ( t0 - m_zvStart ) * pxns;
+ const auto rx0 = ( t0 - m_vd.zvStart ) * pxns;
if( dsz >= MinVisSize )
{
draw->AddRectFilled( wpos + ImVec2( rx0, offset ), wpos + ImVec2( std::min( rx0+dsz, px1 ), offset + ty ), 0x882222DD );
@@ -3990,10 +3990,10 @@ int View::DrawCpuData( int offset, double pxns, const ImVec2& wpos, bool hover,
auto& cs = cpuData[i].cs;
- auto it = std::lower_bound( cs.begin(), cs.end(), std::max( 0, m_zvStart ), [] ( const auto& l, const auto& r ) { return (uint64_t)l.End() < (uint64_t)r; } );
+ auto it = std::lower_bound( cs.begin(), cs.end(), std::max( 0, m_vd.zvStart ), [] ( const auto& l, const auto& r ) { return (uint64_t)l.End() < (uint64_t)r; } );
if( it != cs.end() )
{
- auto eit = std::lower_bound( it, cs.end(), m_zvEnd, [] ( const auto& l, const auto& r ) { return l.Start() < r; } );
+ auto eit = std::lower_bound( it, cs.end(), m_vd.zvEnd, [] ( const auto& l, const auto& r ) { return l.Start() < r; } );
while( it < eit )
{
const auto start = it->Start();
@@ -4002,8 +4002,8 @@ int View::DrawCpuData( int offset, double pxns, const ImVec2& wpos, bool hover,
if( zsz < MinVisSize )
{
int num = 0;
- const auto px0 = ( start - m_zvStart ) * pxns;
- auto px1 = ( end - m_zvStart ) * pxns;
+ const auto px0 = ( start - m_vd.zvStart ) * pxns;
+ auto px1 = ( end - m_vd.zvStart ) * pxns;
auto rend = end;
auto nextTime = end + MinVisSize;
for(;;)
@@ -4014,7 +4014,7 @@ int View::DrawCpuData( int offset, double pxns, const ImVec2& wpos, bool hover,
num += std::distance( prevIt, it );
if( it == eit ) break;
const auto nend = it->End() >= 0 ? it->End() : m_worker.GetLastTime();
- const auto pxnext = ( nend - m_zvStart ) * pxns;
+ const auto pxnext = ( nend - m_vd.zvStart ) * pxns;
if( pxnext - px1 >= MinVisSize * 2 ) break;
px1 = pxnext;
rend = nend;
@@ -4063,8 +4063,8 @@ int View::DrawCpuData( int offset, double pxns, const ImVec2& wpos, bool hover,
}
}
}
- const auto pr0 = ( start - m_zvStart ) * pxns;
- const auto pr1 = ( end - m_zvStart ) * pxns;
+ const auto pr0 = ( start - m_vd.zvStart ) * pxns;
+ const auto pr1 = ( end - m_vd.zvStart ) * pxns;
const auto px0 = std::max( pr0, -10.0 );
const auto px1 = std::max( { std::min( pr1, double( w + 10 ) ), px0 + pxns * 0.5, px0 + MinVisSize } );
draw->AddRectFilled( wpos + ImVec2( px0, offset ), wpos + ImVec2( px1, offset + sty ), local ? 0xFF334488 : ( untracked ? 0xFF663333 : 0xFF444444 ) );
@@ -4073,7 +4073,7 @@ int View::DrawCpuData( int offset, double pxns, const ImVec2& wpos, bool hover,
auto tsz = ImGui::CalcTextSize( txt );
if( tsz.x < zsz )
{
- const auto x = ( start - m_zvStart ) * pxns + ( ( end - start ) * pxns - tsz.x ) / 2;
+ const auto x = ( start - m_vd.zvStart ) * pxns + ( ( end - start ) * pxns - tsz.x ) / 2;
if( x < 0 || x > w - tsz.x )
{
ImGui::PushClipRect( wpos + ImVec2( px0, offset ), wpos + ImVec2( px1, offset + tsz.y * 2 ), true );
@@ -4092,7 +4092,7 @@ int View::DrawCpuData( int offset, double pxns, const ImVec2& wpos, bool hover,
else
{
ImGui::PushClipRect( wpos + ImVec2( px0, offset ), wpos + ImVec2( px1, offset + tsz.y * 2 ), true );
- DrawTextContrast( draw, wpos + ImVec2( ( start - m_zvStart ) * pxns, offset-1 ), local ? 0xFFFFFFFF : 0xAAFFFFFF, txt );
+ DrawTextContrast( draw, wpos + ImVec2( ( start - m_vd.zvStart ) * pxns, offset-1 ), local ? 0xFFFFFFFF : 0xAAFFFFFF, txt );
ImGui::PopClipRect();
}
@@ -4306,8 +4306,8 @@ int View::DrawPlots( int offset, double pxns, const ImVec2& wpos, bool hover, fl
const auto tStart = ev.TimeAlloc();
const auto tEnd = ev.TimeFree() < 0 ? m_worker.GetLastTime() : ev.TimeFree();
- const auto px0 = ( tStart - m_zvStart ) * pxns;
- const auto px1 = std::max( px0 + std::max( 1.0, pxns * 0.5 ), ( tEnd - m_zvStart ) * pxns );
+ const auto px0 = ( tStart - m_vd.zvStart ) * pxns;
+ const auto px1 = std::max( px0 + std::max( 1.0, pxns * 0.5 ), ( tEnd - m_vd.zvStart ) * pxns );
draw->AddRectFilled( ImVec2( wpos.x + px0, yPos ), ImVec2( wpos.x + px1, yPos + PlotHeight ), 0x2288DD88 );
draw->AddRect( ImVec2( wpos.x + px0, yPos ), ImVec2( wpos.x + px1, yPos + PlotHeight ), 0x4488DD88 );
}
@@ -4318,8 +4318,8 @@ int View::DrawPlots( int offset, double pxns, const ImVec2& wpos, bool hover, fl
const auto tStart = ev.TimeAlloc();
const auto tEnd = ev.TimeFree() < 0 ? m_worker.GetLastTime() : ev.TimeFree();
- const auto px0 = ( tStart - m_zvStart ) * pxns;
- const auto px1 = std::max( px0 + std::max( 1.0, pxns * 0.5 ), ( tEnd - m_zvStart ) * pxns );
+ const auto px0 = ( tStart - m_vd.zvStart ) * pxns;
+ const auto px1 = std::max( px0 + std::max( 1.0, pxns * 0.5 ), ( tEnd - m_vd.zvStart ) * pxns );
draw->AddRectFilled( ImVec2( wpos.x + px0, yPos ), ImVec2( wpos.x + px1, yPos + PlotHeight ), 0x228888DD );
draw->AddRect( ImVec2( wpos.x + px0, yPos ), ImVec2( wpos.x + px1, yPos + PlotHeight ), 0x448888DD );
@@ -4334,8 +4334,8 @@ int View::DrawPlots( int offset, double pxns, const ImVec2& wpos, bool hover, fl
}
}
- auto it = std::lower_bound( vec.begin(), vec.end(), m_zvStart - m_worker.GetDelay(), [] ( const auto& l, const auto& r ) { return l.time < r; } );
- auto end = std::lower_bound( it, vec.end(), m_zvEnd + m_worker.GetResolution(), [] ( const auto& l, const auto& r ) { return l.time < r; } );
+ auto it = std::lower_bound( vec.begin(), vec.end(), m_vd.zvStart - m_worker.GetDelay(), [] ( const auto& l, const auto& r ) { return l.time < r; } );
+ auto end = std::lower_bound( it, vec.end(), m_vd.zvEnd + m_worker.GetResolution(), [] ( const auto& l, const auto& r ) { return l.time < r; } );
if( end != vec.end() ) end++;
if( it != vec.begin() ) it--;
@@ -4425,7 +4425,7 @@ int View::DrawPlots( int offset, double pxns, const ImVec2& wpos, bool hover, fl
if( it == vec.begin() )
{
- const auto x = ( it->time - m_zvStart ) * pxns;
+ const auto x = ( it->time - m_vd.zvStart ) * pxns;
const auto y = PlotHeight - ( it->val - min ) * revrange * PlotHeight;
DrawPlotPoint( wpos, x, y, offset, 0xFF44DDDD, hover, false, it, 0, false, v->type, PlotHeight );
}
@@ -4436,8 +4436,8 @@ int View::DrawPlots( int offset, double pxns, const ImVec2& wpos, bool hover, fl
ptrdiff_t skip = 0;
while( it < end )
{
- const auto x0 = ( prevx->time - m_zvStart ) * pxns;
- const auto x1 = ( it->time - m_zvStart ) * pxns;
+ const auto x0 = ( prevx->time - m_vd.zvStart ) * pxns;
+ const auto x1 = ( it->time - m_vd.zvStart ) * pxns;
const auto y0 = PlotHeight - ( prevy->val - min ) * revrange * PlotHeight;
const auto y1 = PlotHeight - ( it->val - min ) * revrange * PlotHeight;
@@ -9521,7 +9521,7 @@ void View::DrawInfo()
ImGui::SameLine();
SmallCheckbox( "Limit to view", &m_frameSortData.limitToView );
- const auto frameRange = m_worker.GetFrameRange( *m_frames, m_zvStart, m_zvEnd );
+ const auto frameRange = m_worker.GetFrameRange( *m_frames, m_vd.zvStart, m_vd.zvEnd );
if( m_frameSortData.frameSet != m_frames || ( m_frameSortData.limitToView && m_frameSortData.limitRange != frameRange ) || ( !m_frameSortData.limitToView && m_frameSortData.limitRange.first != -1 ) )
{
m_frameSortData.frameSet = m_frames;
@@ -10340,8 +10340,8 @@ void View::DrawPlayback()
{
const auto end = m_worker.GetFrameEnd( *frameSet, fi->frameRef );
m_zoomAnim.active = false;
- m_zvStart = tstart;
- m_zvEnd = end;
+ m_vd.zvStart = tstart;
+ m_vd.zvEnd = end;
}
}
@@ -10449,8 +10449,8 @@ void View::DrawPlayback()
{
if( m_playback.sync )
{
- m_zvStart = m_worker.GetFrameBegin( *frameSet, fi->frameRef );
- m_zvEnd = m_worker.GetFrameEnd( *frameSet, fi->frameRef );
+ m_vd.zvStart = m_worker.GetFrameBegin( *frameSet, fi->frameRef );
+ m_vd.zvEnd = m_worker.GetFrameEnd( *frameSet, fi->frameRef );
}
}
ImGui::SameLine();
@@ -10837,7 +10837,7 @@ flat_hash_map> View::GetCallstackPath
flat_hash_map> pathSum;
pathSum.reserve( m_worker.GetCallstackPayloadCount() );
- const auto zvMid = m_zvStart + ( m_zvEnd - m_zvStart ) / 2;
+ const auto zvMid = m_vd.zvStart + ( m_vd.zvEnd - m_vd.zvStart ) / 2;
if( m_memInfo.restrictTime )
{
@@ -11089,7 +11089,7 @@ std::vector View::GetMemoryPages() const
if( m_memInfo.restrictTime )
{
- const auto zvMid = m_zvStart + ( m_zvEnd - m_zvStart ) / 2;
+ const auto zvMid = m_vd.zvStart + ( m_vd.zvEnd - m_vd.zvStart ) / 2;
auto end = std::upper_bound( mem.data.begin(), mem.data.end(), zvMid, []( const auto& lhs, const auto& rhs ) { return lhs < rhs.TimeAlloc(); } );
for( auto it = mem.data.begin(); it != end; ++it )
{
@@ -11174,7 +11174,7 @@ void View::DrawMemory()
ImGui::SameLine();
DrawHelpMarker( "Don't show allocations beyond the middle of timeline display (it is indicated by purple line)." );
- const auto zvMid = m_zvStart + ( m_zvEnd - m_zvStart ) / 2;
+ const auto zvMid = m_vd.zvStart + ( m_vd.zvEnd - m_vd.zvStart ) / 2;
ImGui::Separator();
ImGui::BeginChild( "##memory" );
@@ -11674,25 +11674,25 @@ void View::ZoomToRange( int64_t start, int64_t end )
m_highlightZoom.active = false;
if( !m_playback.pause && m_playback.sync ) m_playback.pause = true;
m_zoomAnim.active = true;
- m_zoomAnim.start0 = m_zvStart;
+ m_zoomAnim.start0 = m_vd.zvStart;
m_zoomAnim.start1 = start;
- m_zoomAnim.end0 = m_zvEnd;
+ m_zoomAnim.end0 = m_vd.zvEnd;
m_zoomAnim.end1 = end;
m_zoomAnim.progress = 0;
}
void View::ZoomToPrevFrame()
{
- if( m_zvStart >= m_worker.GetFrameBegin( *m_frames, 0 ) )
+ if( m_vd.zvStart >= m_worker.GetFrameBegin( *m_frames, 0 ) )
{
size_t frame;
if( m_frames->continuous )
{
- frame = (size_t)m_worker.GetFrameRange( *m_frames, m_zvStart, m_zvStart ).first;
+ frame = (size_t)m_worker.GetFrameRange( *m_frames, m_vd.zvStart, m_vd.zvStart ).first;
}
else
{
- frame = (size_t)m_worker.GetFrameRange( *m_frames, m_zvStart, m_zvStart ).second;
+ frame = (size_t)m_worker.GetFrameRange( *m_frames, m_vd.zvStart, m_vd.zvStart ).second;
}
if( frame > 0 )
@@ -11714,7 +11714,7 @@ void View::ZoomToNextFrame()
}
else
{
- start = m_zvStart;
+ start = m_vd.zvStart;
}
size_t frame;
@@ -11735,7 +11735,7 @@ void View::ZoomToNextFrame()
void View::CenterAtTime( int64_t t )
{
- const auto hr = std::max( 1, ( m_zvEnd - m_zvStart ) / 2 );
+ const auto hr = std::max( 1, ( m_vd.zvEnd - m_vd.zvStart ) / 2 );
ZoomToRange( t - hr, t + hr );
}
@@ -12158,14 +12158,14 @@ void View::SetViewToLastFrames()
{
const int total = m_worker.GetFrameCount( *m_frames );
- m_zvStart = m_worker.GetFrameBegin( *m_frames, std::max( 0, total - 4 ) );
+ m_vd.zvStart = m_worker.GetFrameBegin( *m_frames, std::max( 0, total - 4 ) );
if( total == 1 )
{
- m_zvEnd = m_worker.GetLastTime();
+ m_vd.zvEnd = m_worker.GetLastTime();
}
else
{
- m_zvEnd = m_worker.GetFrameBegin( *m_frames, total - 1 );
+ m_vd.zvEnd = m_worker.GetFrameBegin( *m_frames, total - 1 );
}
}
diff --git a/server/TracyView.hpp b/server/TracyView.hpp
index 595fdde2..0ee19ee6 100644
--- a/server/TracyView.hpp
+++ b/server/TracyView.hpp
@@ -14,6 +14,7 @@
#include "TracyTexture.hpp"
#include "TracyUserData.hpp"
#include "TracyVector.hpp"
+#include "TracyViewData.hpp"
#include "TracyWorker.hpp"
#include "tracy_flat_hash_map.hpp"
@@ -247,8 +248,7 @@ private:
bool m_pause;
int m_frameStart = 0;
- int64_t m_zvStart = 0;
- int64_t m_zvEnd = 0;
+ ViewData m_vd;
int m_zvHeight = 0;
int m_zvScroll = 0;
diff --git a/server/TracyViewData.hpp b/server/TracyViewData.hpp
new file mode 100644
index 00000000..e1471dfd
--- /dev/null
+++ b/server/TracyViewData.hpp
@@ -0,0 +1,17 @@
+#ifndef __TRACYVIEWDATA_HPP__
+#define __TRACYVIEWDATA_HPP__
+
+#include
+
+namespace tracy
+{
+
+struct ViewData
+{
+ int64_t zvStart = 0;
+ int64_t zvEnd = 0;
+};
+
+}
+
+#endif