Don't generate real random UUIDs while loading libraries
Fixes https://gitlab.com/kicad/code/kicad/-/issues/7921
This commit is contained in:
parent
7f8ea6e06a
commit
6d502cb2a5
|
@ -174,6 +174,9 @@ void FOOTPRINT_ASYNC_LOADER::SetList( FOOTPRINT_LIST* aList )
|
|||
void FOOTPRINT_ASYNC_LOADER::Start( FP_LIB_TABLE* aTable, wxString const* aNickname,
|
||||
unsigned aNThreads )
|
||||
{
|
||||
// Disable KIID generation: not needed for library parts; sometimes very slow
|
||||
KIID::CreateNilUuids( true );
|
||||
|
||||
// Capture the FP_LIB_TABLE into m_last_table. Formatting it as a string instead of storing the
|
||||
// raw data avoids having to pull in the FP-specific parts.
|
||||
STRING_FORMATTER sof;
|
||||
|
@ -204,4 +207,6 @@ void FOOTPRINT_ASYNC_LOADER::Abort()
|
|||
m_list->stopWorkers();
|
||||
m_list = nullptr;
|
||||
}
|
||||
|
||||
KIID::CreateNilUuids( false );
|
||||
}
|
||||
|
|
|
@ -47,6 +47,9 @@ static boost::uuids::nil_generator nilGenerator;
|
|||
// Global nil reference
|
||||
KIID niluuid( 0 );
|
||||
|
||||
// When true, always create nil uuids for performance, when valid ones aren't needed
|
||||
static bool createNilUuids = false;
|
||||
|
||||
|
||||
// For static initialization
|
||||
KIID& NilUuid()
|
||||
|
@ -65,6 +68,9 @@ KIID::KIID()
|
|||
{
|
||||
#endif
|
||||
|
||||
if( createNilUuids )
|
||||
m_uuid = nilGenerator();
|
||||
else
|
||||
m_uuid = randomGenerator();
|
||||
|
||||
#if BOOST_VERSION >= 106700
|
||||
|
@ -232,6 +238,12 @@ void KIID::ConvertTimestampToUuid()
|
|||
}
|
||||
|
||||
|
||||
void KIID::CreateNilUuids( bool aNil )
|
||||
{
|
||||
createNilUuids = aNil;
|
||||
}
|
||||
|
||||
|
||||
KIID_PATH::KIID_PATH( const wxString& aString )
|
||||
{
|
||||
for( const wxString& pathStep : wxSplit( aString, '/' ) )
|
||||
|
|
|
@ -65,6 +65,9 @@ void SYMBOL_TREE_MODEL_ADAPTER::AddLibraries( const std::vector<wxString>& aNick
|
|||
aNicknames.size(), aParent );
|
||||
}
|
||||
|
||||
// Disable KIID generation: not needed for library parts; sometimes very slow
|
||||
KIID::CreateNilUuids( true );
|
||||
|
||||
unsigned int ii = 0;
|
||||
|
||||
for( const auto& nickname : aNicknames )
|
||||
|
@ -80,6 +83,8 @@ void SYMBOL_TREE_MODEL_ADAPTER::AddLibraries( const std::vector<wxString>& aNick
|
|||
ii++;
|
||||
}
|
||||
|
||||
KIID::CreateNilUuids( false );
|
||||
|
||||
m_tree.AssignIntrinsicRanks();
|
||||
|
||||
if( prg )
|
||||
|
|
|
@ -61,6 +61,8 @@ public:
|
|||
|
||||
static bool SniffTest( const wxString& aCandidate );
|
||||
|
||||
static void CreateNilUuids( bool aNil = true );
|
||||
|
||||
/**
|
||||
* Change an existing time stamp based UUID into a true UUID.
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue