mirror of
https://github.com/wolfpld/tracy.git
synced 2024-11-10 10:41:50 +00:00
Implement rest of zone insertion code.
This commit is contained in:
parent
060cd90c81
commit
1005fa0c91
@ -387,7 +387,31 @@ void View::InsertZone( Event* zone, Event* parent, Vector<Event*>& vec )
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
zone->parent = parent;
|
||||||
|
|
||||||
|
// here be dragons
|
||||||
|
// this code is not tested, as it's a fallback for edge cases, which haven't happened
|
||||||
|
if( zone->end == -1 )
|
||||||
|
{
|
||||||
|
for( auto zit = it; zit != vec.end(); ++zit )
|
||||||
|
{
|
||||||
|
(*zit)->parent = zone;
|
||||||
|
zone->child.push_back( zone );
|
||||||
|
}
|
||||||
|
vec.erase( it, vec.end() );
|
||||||
|
vec.push_back( zone );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
auto eit = std::lower_bound( it, vec.end(), zone->end, [] ( const auto& l, const auto& r ) { return l->start < r; } );
|
||||||
|
for( auto zit = it; zit != eit; zit++ )
|
||||||
|
{
|
||||||
|
(*zit)->parent = zone;
|
||||||
|
zone->child.push_back( zone );
|
||||||
|
}
|
||||||
|
auto nit = vec.erase( it, eit );
|
||||||
|
vec.insert( nit, zone );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user