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();
|
m_worker.Shutdown();
|
||||||
|
|
||||||
|
if( m_compare.loadThread.joinable() ) m_compare.loadThread.join();
|
||||||
|
|
||||||
assert( s_instance != nullptr );
|
assert( s_instance != nullptr );
|
||||||
s_instance = nullptr;
|
s_instance = nullptr;
|
||||||
}
|
}
|
||||||
@ -4469,7 +4471,7 @@ void View::DrawCompare()
|
|||||||
if( !m_compare.second )
|
if( !m_compare.second )
|
||||||
{
|
{
|
||||||
ImGui::TextWrapped( "Please load a second trace to compare results." );
|
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;
|
nfdchar_t* fn;
|
||||||
auto res = NFD_OpenDialog( "tracy", nullptr, &fn );
|
auto res = NFD_OpenDialog( "tracy", nullptr, &fn );
|
||||||
@ -4477,16 +4479,21 @@ void View::DrawCompare()
|
|||||||
{
|
{
|
||||||
try
|
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 )
|
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 )
|
catch( const tracy::NotTracyDump& e )
|
||||||
{
|
{
|
||||||
m_compare.badVer = -1;
|
m_compare.badVer = -1;
|
||||||
@ -4498,6 +4505,8 @@ void View::DrawCompare()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if( m_compare.loadThread.joinable() ) m_compare.loadThread.join();
|
||||||
|
|
||||||
if( !m_worker.AreSourceLocationZonesReady() || !m_compare.second->AreSourceLocationZonesReady() )
|
if( !m_worker.AreSourceLocationZonesReady() || !m_compare.second->AreSourceLocationZonesReady() )
|
||||||
{
|
{
|
||||||
ImGui::TextWrapped( "Please wait, computing data..." );
|
ImGui::TextWrapped( "Please wait, computing data..." );
|
||||||
|
|||||||
@ -279,6 +279,7 @@ private:
|
|||||||
struct {
|
struct {
|
||||||
bool show = false;
|
bool show = false;
|
||||||
std::unique_ptr<Worker> second;
|
std::unique_ptr<Worker> second;
|
||||||
|
std::thread loadThread;
|
||||||
int badVer = 0;
|
int badVer = 0;
|
||||||
char pattern[1024] = {};
|
char pattern[1024] = {};
|
||||||
std::vector<int32_t> match[2];
|
std::vector<int32_t> match[2];
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user