1
0
mirror of https://github.com/wolfpld/tracy synced 2025-05-01 13:13:53 +00:00

Add strings to map directly in StringDiscovery.

This commit is contained in:
Bartosz Taudul 2018-08-04 17:10:45 +02:00
parent 2f01014a95
commit 0b4c2724ce
2 changed files with 5 additions and 10 deletions

View File

@ -19,18 +19,19 @@ public:
tracy_force_inline bool IsPending() const { return !m_pending.empty(); } tracy_force_inline bool IsPending() const { return !m_pending.empty(); }
// Merge( destination, postponed ) // Merge( destination, postponed )
tracy_force_inline bool StringDiscovered( uint64_t name, const StringLocation& sl, std::function<void(T,T)> Merge ) template<typename U>
tracy_force_inline void StringDiscovered( uint64_t name, const StringLocation& sl, U& stringMap, std::function<void(T,T)> Merge )
{ {
auto pit = m_pending.find( name ); auto pit = m_pending.find( name );
assert( pit != m_pending.end() ); assert( pit != m_pending.end() );
auto it = m_rev.find( sl.ptr ); auto it = m_rev.find( sl.ptr );
bool add = it == m_rev.end(); if( it == m_rev.end() )
if( add )
{ {
m_map.emplace( name, pit->second ); m_map.emplace( name, pit->second );
m_rev.emplace( sl.ptr, pit->second ); m_rev.emplace( sl.ptr, pit->second );
m_data.push_back( pit->second ); m_data.push_back( pit->second );
stringMap.emplace( name, sl.ptr );
} }
else else
{ {
@ -40,8 +41,6 @@ public:
} }
m_pending.erase( pit ); m_pending.erase( pit );
return add;
} }
tracy_force_inline T Retrieve( uint64_t name, std::function<T(uint64_t)> Create, std::function<void(uint64_t)> Query ) tracy_force_inline T Retrieve( uint64_t name, std::function<T(uint64_t)> Create, std::function<void(uint64_t)> Query )

View File

@ -1613,16 +1613,12 @@ void Worker::InsertPlot( PlotData* plot, int64_t time, double val )
void Worker::HandlePlotName( uint64_t name, char* str, size_t sz ) void Worker::HandlePlotName( uint64_t name, char* str, size_t sz )
{ {
const auto sl = StoreString( str, sz ); const auto sl = StoreString( str, sz );
bool addString = m_data.plots.StringDiscovered( name, sl, [this] ( PlotData* dst, PlotData* src ) { m_data.plots.StringDiscovered( name, sl, m_data.strings, [this] ( PlotData* dst, PlotData* src ) {
for( auto& v : src->data ) for( auto& v : src->data )
{ {
InsertPlot( dst, v.time, v.val ); InsertPlot( dst, v.time, v.val );
} }
} ); } );
if( addString )
{
m_data.strings.emplace( name, sl.ptr );
}
} }
void Worker::HandlePostponedPlots() void Worker::HandlePostponedPlots()