1
0
mirror of https://github.com/wolfpld/tracy.git synced 2025-03-20 07:40:02 +08:00

import-chrome: frame events

This commit is contained in:
Joshua Kriegshauser 2022-09-01 15:16:03 -07:00
parent 8b75a3fab0
commit 5dc29ba68d

View File

@ -423,7 +423,31 @@ Worker::Worker( const char* name, const char* program, const std::vector<ImportE
}
}
std::unordered_map<std::string, uint64_t> frameNames;
for( auto& v : messages )
{
// There is no specific chrome-tracing type for frame events. We use messages that contain the word "frame"
std::string lower(v.message);
std::transform(lower.begin(), lower.end(), lower.begin(), std::tolower);
if (lower.find("frame") != std::string::npos)
{
// Reserve 0 as the default FrameSet, since it replaces the name with "Frame" and we want to keep our custom names.
auto result = frameNames.emplace(v.message, frameNames.size() + 1);
auto fd = m_data.frames.Retrieve(result.first->second, [&](uint64_t name) {
auto fd = m_slab.AllocInit<FrameData>();
fd->name = name;
fd->continuous = 1;
return fd;
}, [&] (uint64_t name) {
HandleFrameName( name, v.message.c_str(), v.message.length() );
});
int64_t time = v.timestamp;
fd->frames.push_back(FrameEvent{ time, -1, -1 });
if (m_data.lastTime < time) m_data.lastTime = time;
}
else
{
auto msg = m_slab.Alloc<MessageData>();
msg->time = v.timestamp;
@ -439,6 +463,7 @@ Worker::Worker( const char* name, const char* program, const std::vector<ImportE
}
InsertMessageData( msg );
}
}
for( auto& v : plots )
{
@ -512,6 +537,9 @@ Worker::Worker( const char* name, const char* program, const std::vector<ImportE
}
}
// Add a default frame if we didn't have any framesets
if (frameNames.empty())
{
m_data.framesBase = m_data.frames.Retrieve( 0, [this] ( uint64_t name ) {
auto fd = m_slab.AllocInit<FrameData>();
fd->name = name;
@ -525,6 +553,7 @@ Worker::Worker( const char* name, const char* program, const std::vector<ImportE
m_data.framesBase->frames.push_back( FrameEvent{ 0, -1, -1 } );
m_data.framesBase->frames.push_back( FrameEvent{ 0, -1, -1 } );
}
}
Worker::Worker( FileRead& f, EventType::Type eventMask, bool bgTasks )