From eb9ccea55907734137e4540f189395e05b8d7473 Mon Sep 17 00:00:00 2001 From: Jeff Young Date: Thu, 10 Mar 2022 00:01:13 +0000 Subject: [PATCH] Performance improvement. --- pcbnew/connectivity/connectivity_data.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/pcbnew/connectivity/connectivity_data.cpp b/pcbnew/connectivity/connectivity_data.cpp index f24ea11ccb..6651647717 100644 --- a/pcbnew/connectivity/connectivity_data.cpp +++ b/pcbnew/connectivity/connectivity_data.cpp @@ -427,14 +427,15 @@ bool CONNECTIVITY_DATA::IsConnectedOnLayer( const BOARD_CONNECTED_ITEM *aItem, i } else if( CN_ZONE_LAYER* zoneLayer = dynamic_cast( connected ) ) { - ZONE* zone = static_cast( zoneLayer->Parent() ); - int idx = zoneLayer->SubpolyIndex(); - const SHAPE_LINE_CHAIN& island = zone->GetFill( layer )->COutline( idx ); - std::shared_ptr flashing = pad->GetEffectiveShape(); + BOARD_CONNECTED_ITEM* item = zoneLayer->Parent(); + int islandIdx = zoneLayer->SubpolyIndex(); - for( const VECTOR2I& pt : island.CPoints() ) + const auto& fill = static_cast( item )->GetFilledPolysList( layer ); + const auto& padOutline = pad->GetEffectivePolygon()->Outline( 0 ); + + for( const VECTOR2I& pt : fill->COutline( islandIdx ).CPoints() ) { - if( !flashing->Collide( pt ) ) + if( !padOutline.PointInside( pt ) ) return true; }