mirror of
https://github.com/wolfpld/tracy.git
synced 2024-11-10 10:41:50 +00:00
Improve rendering of small discontinuous frames.
This commit is contained in:
parent
d36b0aff45
commit
44fecc4390
@ -210,6 +210,7 @@ static void TextFocused( const char* label, const char* value )
|
|||||||
}
|
}
|
||||||
|
|
||||||
enum { MinVisSize = 3 };
|
enum { MinVisSize = 3 };
|
||||||
|
enum { MinFrameSize = 5 };
|
||||||
|
|
||||||
static View* s_instance = nullptr;
|
static View* s_instance = nullptr;
|
||||||
|
|
||||||
@ -1047,10 +1048,13 @@ bool View::DrawZoneFrames( const FrameData& frames )
|
|||||||
|
|
||||||
if( hover ) HandleZoneViewMouse( timespan, wpos, w, pxns );
|
if( hover ) HandleZoneViewMouse( timespan, wpos, w, pxns );
|
||||||
|
|
||||||
|
const auto nspx = 1.0 / pxns;
|
||||||
|
|
||||||
const std::pair <int, int> zrange = m_worker.GetFrameRange( frames, m_zvStart, m_zvEnd );
|
const std::pair <int, int> zrange = m_worker.GetFrameRange( frames, m_zvStart, m_zvEnd );
|
||||||
if( zrange.first < 0 ) return hover;
|
if( zrange.first < 0 ) return hover;
|
||||||
|
|
||||||
int64_t prev = -1;
|
int64_t prev = -1;
|
||||||
|
int64_t prevEnd = -1;
|
||||||
|
|
||||||
for( int i = zrange.first; i < zrange.second; i++ )
|
for( int i = zrange.first; i < zrange.second; i++ )
|
||||||
{
|
{
|
||||||
@ -1073,26 +1077,39 @@ bool View::DrawZoneFrames( const FrameData& frames )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if( fsz < 5 )
|
if( fsz < MinFrameSize )
|
||||||
{
|
{
|
||||||
if( !frames.continuous )
|
if( !frames.continuous && prev != -1 )
|
||||||
{
|
{
|
||||||
const auto pxs = ( fbegin - m_zvStart ) * pxns;
|
if( ( fbegin - prevEnd ) * pxns >= MinFrameSize )
|
||||||
const auto pxe = ( fend - m_zvStart ) * pxns;
|
|
||||||
if( pxe - pxs > 1 )
|
|
||||||
{
|
{
|
||||||
DrawZigZag( draw, wpos + ImVec2( 0, round( ty / 2 ) ), pxs, pxe, ty / 4, 0xFF888888 );
|
DrawZigZag( draw, wpos + ImVec2( 0, round( ty / 2 ) ), ( prev - m_zvStart ) * pxns, ( prevEnd - m_zvStart ) * pxns, ty / 4, 0xFF888888 );
|
||||||
|
prev = -1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
prevEnd = std::max<int64_t>( fend, fbegin + MinFrameSize * nspx );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if( prev == -1 )
|
if( prev == -1 )
|
||||||
{
|
{
|
||||||
prev = fbegin;
|
prev = fbegin;
|
||||||
|
prevEnd = std::max<int64_t>( fend, fbegin + MinFrameSize * nspx );
|
||||||
}
|
}
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( prev != -1 )
|
if( prev != -1 )
|
||||||
|
{
|
||||||
|
if( frames.continuous )
|
||||||
{
|
{
|
||||||
DrawZigZag( draw, wpos + ImVec2( 0, round( ty / 2 ) ), ( prev - m_zvStart ) * pxns, ( fbegin - m_zvStart ) * pxns, ty / 4, 0xFF888888 );
|
DrawZigZag( draw, wpos + ImVec2( 0, round( ty / 2 ) ), ( prev - m_zvStart ) * pxns, ( fbegin - m_zvStart ) * pxns, ty / 4, 0xFF888888 );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
DrawZigZag( draw, wpos + ImVec2( 0, round( ty / 2 ) ), ( prev - m_zvStart ) * pxns, ( prevEnd - m_zvStart ) * pxns, ty / 4, 0xFF888888 );
|
||||||
|
}
|
||||||
prev = -1;
|
prev = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user