mirror of
https://github.com/wolfpld/tracy
synced 2025-05-01 13:13:53 +00:00
Save/load view state.
This commit is contained in:
parent
dc5444ff0f
commit
f37797db44
@ -3,11 +3,15 @@
|
|||||||
|
|
||||||
#include "TracyStorage.hpp"
|
#include "TracyStorage.hpp"
|
||||||
#include "TracyUserData.hpp"
|
#include "TracyUserData.hpp"
|
||||||
|
#include "TracyViewData.hpp"
|
||||||
|
|
||||||
namespace tracy
|
namespace tracy
|
||||||
{
|
{
|
||||||
|
|
||||||
constexpr auto FileDescription = "description";
|
constexpr auto FileDescription = "description";
|
||||||
|
constexpr auto FileTimeline = "timeline";
|
||||||
|
|
||||||
|
enum : uint32_t { VersionTimeline = 0 };
|
||||||
|
|
||||||
UserData::UserData()
|
UserData::UserData()
|
||||||
: m_preserveState( false )
|
: m_preserveState( false )
|
||||||
@ -53,6 +57,34 @@ bool UserData::SetDescription( const char* description )
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void UserData::LoadState( ViewData& data )
|
||||||
|
{
|
||||||
|
assert( Valid() );
|
||||||
|
FILE* f = OpenFile( FileTimeline, false );
|
||||||
|
if( !f ) return;
|
||||||
|
uint32_t ver;
|
||||||
|
fread( &ver, 1, sizeof( ver ), f );
|
||||||
|
if( ver == VersionTimeline )
|
||||||
|
{
|
||||||
|
fread( &data.zvStart, 1, sizeof( data.zvStart ), f );
|
||||||
|
fread( &data.zvEnd, 1, sizeof( data.zvEnd ), f );
|
||||||
|
}
|
||||||
|
fclose( f );
|
||||||
|
}
|
||||||
|
|
||||||
|
void UserData::SaveState( const ViewData& data )
|
||||||
|
{
|
||||||
|
if( !m_preserveState ) return;
|
||||||
|
assert( Valid() );
|
||||||
|
FILE* f = OpenFile( FileTimeline, true );
|
||||||
|
if( !f ) return;
|
||||||
|
uint32_t ver = VersionTimeline;
|
||||||
|
fwrite( &ver, 1, sizeof( ver ), f );
|
||||||
|
fwrite( &data.zvStart, 1, sizeof( data.zvStart ), f );
|
||||||
|
fwrite( &data.zvEnd, 1, sizeof( data.zvEnd ), f );
|
||||||
|
fclose( f );
|
||||||
|
}
|
||||||
|
|
||||||
void UserData::StateShouldBePreserved()
|
void UserData::StateShouldBePreserved()
|
||||||
{
|
{
|
||||||
m_preserveState = true;
|
m_preserveState = true;
|
||||||
|
@ -8,6 +8,8 @@
|
|||||||
namespace tracy
|
namespace tracy
|
||||||
{
|
{
|
||||||
|
|
||||||
|
struct ViewData;
|
||||||
|
|
||||||
class UserData
|
class UserData
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@ -20,6 +22,8 @@ public:
|
|||||||
const std::string& GetDescription() const { return m_description; }
|
const std::string& GetDescription() const { return m_description; }
|
||||||
bool SetDescription( const char* description );
|
bool SetDescription( const char* description );
|
||||||
|
|
||||||
|
void LoadState( ViewData& data );
|
||||||
|
void SaveState( const ViewData& data );
|
||||||
void StateShouldBePreserved();
|
void StateShouldBePreserved();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -149,11 +149,13 @@ View::View( FileRead& f, ImFont* fixedWidth, ImFont* smallFont, ImFont* bigFont,
|
|||||||
InitTextEditor();
|
InitTextEditor();
|
||||||
SetViewToLastFrames();
|
SetViewToLastFrames();
|
||||||
m_userData.StateShouldBePreserved();
|
m_userData.StateShouldBePreserved();
|
||||||
|
m_userData.LoadState( m_vd );
|
||||||
}
|
}
|
||||||
|
|
||||||
View::~View()
|
View::~View()
|
||||||
{
|
{
|
||||||
m_worker.Shutdown();
|
m_worker.Shutdown();
|
||||||
|
m_userData.SaveState( m_vd );
|
||||||
|
|
||||||
if( m_compare.loadThread.joinable() ) m_compare.loadThread.join();
|
if( m_compare.loadThread.joinable() ) m_compare.loadThread.join();
|
||||||
if( m_saveThread.joinable() ) m_saveThread.join();
|
if( m_saveThread.joinable() ) m_saveThread.join();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user