Use push_back_non_empty where appropriate.

This commit is contained in:
Bartosz Taudul 2017-11-20 02:14:18 +01:00
parent 7bf6bbbb94
commit dca6cf0aa5

View File

@ -676,7 +676,7 @@ void View::ProcessFrameMark( const QueueFrameMark& ev )
const auto lastframe = m_frames.back(); const auto lastframe = m_frames.back();
const auto time = ev.time * m_timerMul; const auto time = ev.time * m_timerMul;
assert( lastframe < time ); assert( lastframe < time );
m_frames.push_back( time ); m_frames.push_back_non_empty( time );
} }
void View::ProcessZoneText( const QueueZoneText& ev ) void View::ProcessZoneText( const QueueZoneText& ev )
@ -1069,21 +1069,29 @@ uint32_t View::NewShrinkedSourceLocation( uint64_t srcloc )
void View::InsertMessageData( MessageData* msg, uint64_t thread ) void View::InsertMessageData( MessageData* msg, uint64_t thread )
{ {
if( m_messages.empty() || m_messages.back()->time < msg->time ) if( m_messages.empty() )
{ {
m_messages.push_back( msg ); m_messages.push_back( msg );
} }
else if( m_messages.back()->time < msg->time )
{
m_messages.push_back_non_empty( msg );
}
else else
{ {
auto mit = std::lower_bound( m_messages.begin(), m_messages.end(), msg->time, [] ( const auto& lhs, const auto& rhs ) { return lhs->time < rhs; } ); auto mit = std::lower_bound( m_messages.begin(), m_messages.end(), msg->time, [] ( const auto& lhs, const auto& rhs ) { return lhs->time < rhs; } );
m_messages.insert( mit, msg ); m_messages.insert( mit, msg );
} }
Vector<MessageData*>* vec = &NoticeThread( thread )->messages; auto vec = &NoticeThread( thread )->messages;
if( vec->empty() || vec->back()->time < msg->time ) if( vec->empty() )
{ {
vec->push_back( msg ); vec->push_back( msg );
} }
else if( vec->back()->time < msg->time )
{
vec->push_back_non_empty( msg );
}
else else
{ {
auto tmit = std::lower_bound( vec->begin(), vec->end(), msg->time, [] ( const auto& lhs, const auto& rhs ) { return lhs->time < rhs; } ); auto tmit = std::lower_bound( vec->begin(), vec->end(), msg->time, [] ( const auto& lhs, const auto& rhs ) { return lhs->time < rhs; } );
@ -1148,11 +1156,16 @@ void View::InsertLockEvent( LockMap& lockmap, LockEvent* lev, uint64_t thread )
lev->thread = it->second; lev->thread = it->second;
assert( lev->thread == it->second ); assert( lev->thread == it->second );
auto& timeline = lockmap.timeline; auto& timeline = lockmap.timeline;
if( timeline.empty() || timeline.back()->time < lev->time ) if( timeline.empty() )
{ {
timeline.push_back( lev ); timeline.push_back( lev );
UpdateLockCount( lockmap, timeline.size() - 1 ); UpdateLockCount( lockmap, timeline.size() - 1 );
} }
else if( timeline.back()->time < lev->time )
{
timeline.push_back_non_empty( lev );
UpdateLockCount( lockmap, timeline.size() - 1 );
}
else else
{ {
auto it = std::lower_bound( timeline.begin(), timeline.end(), lev->time, [] ( const auto& lhs, const auto& rhs ) { return lhs->time < rhs; } ); auto it = std::lower_bound( timeline.begin(), timeline.end(), lev->time, [] ( const auto& lhs, const auto& rhs ) { return lhs->time < rhs; } );
@ -1227,26 +1240,31 @@ void View::InsertPlot( PlotData* plot, PlotItem* item )
const auto& time = item->time; const auto& time = item->time;
const auto& val = item->val; const auto& val = item->val;
if( plot->data.empty() || plot->data.back()->time < time ) if( plot->data.empty() )
{ {
if( plot->data.empty() ) plot->min = val;
{ plot->max = val;
plot->min = val;
plot->max = val;
}
else
{
if( plot->min > val ) plot->min = val;
else if( plot->max < val ) plot->max = val;
}
plot->data.push_back( item ); plot->data.push_back( item );
} }
else if( plot->data.back()->time < time )
{
if( plot->min > val ) plot->min = val;
else if( plot->max < val ) plot->max = val;
plot->data.push_back_non_empty( item );
}
else else
{ {
if( plot->min > val ) plot->min = val; if( plot->min > val ) plot->min = val;
else if( plot->max < val ) plot->max = val; else if( plot->max < val ) plot->max = val;
if( plot->postpone.empty() ) plot->postponeTime = std::chrono::duration_cast<std::chrono::milliseconds>( std::chrono::high_resolution_clock::now().time_since_epoch() ).count(); if( plot->postpone.empty() )
plot->postpone.push_back( item ); {
plot->postponeTime = std::chrono::duration_cast<std::chrono::milliseconds>( std::chrono::high_resolution_clock::now().time_since_epoch() ).count();
plot->postpone.push_back( item );
}
else
{
plot->postpone.push_back_non_empty( item );
}
} }
} }