mirror of
https://github.com/wolfpld/tracy.git
synced 2025-03-20 07:40:02 +08:00
Load second trace on a separate thread.
This commit is contained in:
parent
a46425f4e9
commit
6a3a9c0bc5
@ -283,6 +283,8 @@ View::~View()
|
||||
{
|
||||
m_worker.Shutdown();
|
||||
|
||||
if( m_compare.loadThread.joinable() ) m_compare.loadThread.join();
|
||||
|
||||
assert( s_instance != nullptr );
|
||||
s_instance = nullptr;
|
||||
}
|
||||
@ -4469,7 +4471,7 @@ void View::DrawCompare()
|
||||
if( !m_compare.second )
|
||||
{
|
||||
ImGui::TextWrapped( "Please load a second trace to compare results." );
|
||||
if( ImGui::Button( "Open second trace" ) )
|
||||
if( ImGui::Button( "Open second trace" ) && !m_compare.loadThread.joinable() )
|
||||
{
|
||||
nfdchar_t* fn;
|
||||
auto res = NFD_OpenDialog( "tracy", nullptr, &fn );
|
||||
@ -4477,16 +4479,21 @@ void View::DrawCompare()
|
||||
{
|
||||
try
|
||||
{
|
||||
auto f = std::unique_ptr<tracy::FileRead>( tracy::FileRead::Open( fn ) );
|
||||
auto f = std::shared_ptr<tracy::FileRead>( tracy::FileRead::Open( fn ) );
|
||||
if( f )
|
||||
{
|
||||
m_compare.second = std::make_unique<Worker>( *f, EventType::None );
|
||||
m_compare.loadThread = std::thread( [this, f] {
|
||||
try
|
||||
{
|
||||
m_compare.second = std::make_unique<Worker>( *f, EventType::None );
|
||||
}
|
||||
catch( const tracy::UnsupportedVersion& e )
|
||||
{
|
||||
m_compare.badVer = e.version;
|
||||
}
|
||||
} );
|
||||
}
|
||||
}
|
||||
catch( const tracy::UnsupportedVersion& e )
|
||||
{
|
||||
m_compare.badVer = e.version;
|
||||
}
|
||||
catch( const tracy::NotTracyDump& e )
|
||||
{
|
||||
m_compare.badVer = -1;
|
||||
@ -4498,6 +4505,8 @@ void View::DrawCompare()
|
||||
return;
|
||||
}
|
||||
|
||||
if( m_compare.loadThread.joinable() ) m_compare.loadThread.join();
|
||||
|
||||
if( !m_worker.AreSourceLocationZonesReady() || !m_compare.second->AreSourceLocationZonesReady() )
|
||||
{
|
||||
ImGui::TextWrapped( "Please wait, computing data..." );
|
||||
|
||||
@ -279,6 +279,7 @@ private:
|
||||
struct {
|
||||
bool show = false;
|
||||
std::unique_ptr<Worker> second;
|
||||
std::thread loadThread;
|
||||
int badVer = 0;
|
||||
char pattern[1024] = {};
|
||||
std::vector<int32_t> match[2];
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user