mirror of
https://github.com/wolfpld/tracy.git
synced 2026-10-22 16:50:49 +00:00
Share a single manual data instance across views.
The manual data is invariant — derived only from the embedded manual — so each View re-parsed it needlessly. It's now computed once and shared by all Views and the LLM.
This commit is contained in:
@@ -115,4 +115,10 @@ void TracyManualData::AddManualChunk( const std::string_view& manual, int start,
|
||||
}
|
||||
}
|
||||
|
||||
const TracyManualData& GetManualData()
|
||||
{
|
||||
static TracyManualData data;
|
||||
return data;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -34,6 +34,8 @@ private:
|
||||
uint64_t m_hash;
|
||||
};
|
||||
|
||||
const TracyManualData& GetManualData();
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -54,13 +54,13 @@ View::View( void(*cbMainThread)(const std::function<void()>&, bool), const char*
|
||||
, m_achievements( s_config.achievements )
|
||||
, m_horizontalScrollMultiplier( s_config.horizontalScrollMultiplier )
|
||||
, m_verticalScrollMultiplier( s_config.verticalScrollMultiplier )
|
||||
, m_manualData( std::make_shared<TracyManualData>() )
|
||||
, m_manualData( GetManualData() )
|
||||
, m_markdown( this, &m_worker )
|
||||
#ifdef __EMSCRIPTEN__
|
||||
, m_td( 2, "ViewMt" )
|
||||
#else
|
||||
, m_td( std::thread::hardware_concurrency(), "ViewMt" )
|
||||
, m_llm( m_worker, *this, *m_manualData )
|
||||
, m_llm( m_worker, *this, m_manualData )
|
||||
#endif
|
||||
{
|
||||
InitTextEditor();
|
||||
@@ -86,13 +86,13 @@ View::View( void(*cbMainThread)(const std::function<void()>&, bool), FileRead& f
|
||||
, m_achievements( s_config.achievements )
|
||||
, m_horizontalScrollMultiplier( s_config.horizontalScrollMultiplier )
|
||||
, m_verticalScrollMultiplier( s_config.verticalScrollMultiplier )
|
||||
, m_manualData( std::make_shared<TracyManualData>() )
|
||||
, m_manualData( GetManualData() )
|
||||
, m_markdown( this, &m_worker )
|
||||
#ifdef __EMSCRIPTEN__
|
||||
, m_td( 2, "ViewMt" )
|
||||
#else
|
||||
, m_td( std::thread::hardware_concurrency(), "ViewMt" )
|
||||
, m_llm( m_worker, *this, *m_manualData )
|
||||
, m_llm( m_worker, *this, m_manualData )
|
||||
#endif
|
||||
{
|
||||
m_notificationTime = 4;
|
||||
|
||||
@@ -1083,7 +1083,7 @@ private:
|
||||
double m_horizontalScrollMultiplier = 1.0;
|
||||
double m_verticalScrollMultiplier = 1.0;
|
||||
|
||||
std::shared_ptr<TracyManualData> m_manualData;
|
||||
const TracyManualData& m_manualData;
|
||||
size_t m_activeManualChunk = 0;
|
||||
Markdown m_markdown;
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@ void View::DrawManual()
|
||||
|
||||
ImGui::BeginChild( "##toc", ImVec2( 0, 0 ), ImGuiChildFlags_AlwaysUseWindowPadding );
|
||||
int level = 0;
|
||||
auto& chunks = m_manualData->GetChunks();
|
||||
auto& chunks = m_manualData.GetChunks();
|
||||
assert( !chunks.empty() );
|
||||
for( size_t i=0; i<chunks.size(); i++ )
|
||||
{
|
||||
@@ -160,9 +160,8 @@ void View::DrawManual()
|
||||
const TracyManualData::ManualChunk* View::GetManualChunk( const char* anchor ) const
|
||||
{
|
||||
assert( anchor && *anchor );
|
||||
assert( m_manualData );
|
||||
|
||||
auto& chunks = m_manualData->GetChunks();
|
||||
auto& chunks = m_manualData.GetChunks();
|
||||
auto it = std::ranges::find_if( chunks, [anchor]( const auto& chunk ) { return chunk.link == anchor; } );
|
||||
if( it != chunks.end() ) return &*it;
|
||||
return nullptr;
|
||||
@@ -173,7 +172,7 @@ bool View::ViewManualChunk( const char* anchor )
|
||||
assert( anchor && *anchor );
|
||||
const auto chunk = GetManualChunk( anchor );
|
||||
if( !chunk ) return false;
|
||||
m_activeManualChunk = std::distance( m_manualData->GetChunks().data(), chunk );
|
||||
m_activeManualChunk = std::distance( m_manualData.GetChunks().data(), chunk );
|
||||
m_showManual = true;
|
||||
m_manualPositionReset = true;
|
||||
return true;
|
||||
|
||||
Reference in New Issue
Block a user