Fix deadlock

Fixes https://gitlab.com/kicad/code/kicad/issues/9959
This commit is contained in:
Seth Hillbrand 2021-12-12 07:19:56 -08:00
parent 3a04a1ee64
commit 779629ad33
1 changed files with 8 additions and 2 deletions

View File

@ -85,7 +85,10 @@ bool CONNECTIVITY_DATA::Update( BOARD_ITEM* aItem )
void CONNECTIVITY_DATA::Build( BOARD* aBoard, PROGRESS_REPORTER* aReporter )
{
std::unique_lock<KISPINLOCK> lock( m_lock );
std::unique_lock<KISPINLOCK> lock( m_lock, std::try_to_lock );
if( !lock )
return;
m_connAlgo.reset( new CN_CONNECTIVITY_ALGO );
m_connAlgo->Build( aBoard, aReporter );
@ -102,7 +105,10 @@ void CONNECTIVITY_DATA::Build( BOARD* aBoard, PROGRESS_REPORTER* aReporter )
void CONNECTIVITY_DATA::Build( const std::vector<BOARD_ITEM*>& aItems )
{
std::unique_lock<KISPINLOCK> lock( m_lock );
std::unique_lock<KISPINLOCK> lock( m_lock, std::try_to_lock );
if( !lock )
return;
m_connAlgo.reset( new CN_CONNECTIVITY_ALGO );
m_connAlgo->Build( aItems );