Performance.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20506
This commit is contained in:
Jeff Young 2025-04-09 18:02:20 +01:00
parent 98ec2d7ba2
commit 1d45de0d1d
5 changed files with 57 additions and 20 deletions

View File

@ -569,7 +569,7 @@ const LSET& LSET::InternalCuMask()
}
LSET LSET::AllCuMask( int aCuLayerCount )
LSET allCuMask( int aCuLayerCount )
{
LSET ret;
@ -580,13 +580,39 @@ LSET LSET::AllCuMask( int aCuLayerCount )
}
LSET LSET::AllCuMask( int aCuLayerCount )
{
static LSET savedMax = allCuMask( MAX_CU_LAYERS );
static LSET cache;
static int cacheCuLayerCount = -1;
if( aCuLayerCount == MAX_CU_LAYERS )
return savedMax;
if( aCuLayerCount != cacheCuLayerCount )
{
cache = allCuMask( aCuLayerCount );
cacheCuLayerCount = aCuLayerCount;
}
return cache;
}
LSET allNonCuMask()
{
LSET mask = LSET().set();
for( auto it = mask.copper_layers_begin(); it != mask.copper_layers_end(); ++it )
mask.reset( *it );
return mask;
}
LSET LSET::AllNonCuMask()
{
LSET saved = LSET().set();
for( auto it = saved.copper_layers_begin(); it != saved.copper_layers_end(); ++it )
saved.reset( *it );
static LSET saved = allNonCuMask();
return saved;
}

View File

@ -474,8 +474,10 @@ int SCH_ITEM::compare( const SCH_ITEM& aOther, int aCompareFlags ) const
const wxString& SCH_ITEM::GetDefaultFont() const
{
static const char eeschema[] = "eeschema";
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EESCHEMA_SETTINGS* cfg = mgr.GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
EESCHEMA_SETTINGS* cfg = mgr.GetAppSettings<EESCHEMA_SETTINGS>( eeschema );
return cfg->m_Appearance.default_font;
}

View File

@ -907,35 +907,41 @@ void PCB_BASE_FRAME::SaveSettings( APP_SETTINGS_BASE* aCfg )
PCBNEW_SETTINGS* PCB_BASE_FRAME::GetPcbNewSettings() const
{
return Pgm().GetSettingsManager().GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" );
static const char pcbnew[] = "pcbnew";
return Pgm().GetSettingsManager().GetAppSettings<PCBNEW_SETTINGS>( pcbnew );
}
FOOTPRINT_EDITOR_SETTINGS* PCB_BASE_FRAME::GetFootprintEditorSettings() const
{
return Pgm().GetSettingsManager().GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( "fpedit" );
static const char fpedit[] = "fpedit";
return Pgm().GetSettingsManager().GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( fpedit );
}
PCB_VIEWERS_SETTINGS_BASE* PCB_BASE_FRAME::GetViewerSettingsBase() const
{
static const char pcbnew[] = "pcbnew";
static const char fpedit[] = "fpedit";
static const char cvpcb[] = "cvpcb";
switch( GetFrameType() )
{
case FRAME_PCB_EDITOR:
case FRAME_PCB_DISPLAY3D:
default:
return Pgm().GetSettingsManager().GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" );
return Pgm().GetSettingsManager().GetAppSettings<PCBNEW_SETTINGS>( pcbnew );
case FRAME_FOOTPRINT_EDITOR:
case FRAME_FOOTPRINT_WIZARD:
return Pgm().GetSettingsManager().GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( "fpedit" );
return Pgm().GetSettingsManager().GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( fpedit );
case FRAME_FOOTPRINT_VIEWER:
case FRAME_FOOTPRINT_CHOOSER:
case FRAME_FOOTPRINT_PREVIEW:
case FRAME_CVPCB:
case FRAME_CVPCB_DISPLAY:
return Pgm().GetSettingsManager().GetAppSettings<CVPCB_SETTINGS>( "cvpcb" );
return Pgm().GetSettingsManager().GetAppSettings<CVPCB_SETTINGS>( cvpcb );
}
}

View File

@ -464,7 +464,8 @@ void PCB_DRAW_PANEL_GAL::UpdateColors()
}
else
{
auto* app = Pgm().GetSettingsManager().GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" );
static const char pcbnew[] = "pcbnew";
PCBNEW_SETTINGS* app = Pgm().GetSettingsManager().GetAppSettings<PCBNEW_SETTINGS>( pcbnew );
if( app )
cs = Pgm().GetSettingsManager().GetColorSettings( app->m_ColorTheme );

View File

@ -83,23 +83,27 @@ PCBNEW_SETTINGS* pcbconfig()
// returns the viewer options existing to Cvpcb and Pcbnew
PCB_VIEWERS_SETTINGS_BASE* PCB_PAINTER::viewer_settings()
{
static const char pcbnew[] = "pcbnew";
static const char fpedit[] = "fpedit";
static const char cvpcb[] = "cvpcb";
switch( m_frameType )
{
case FRAME_PCB_EDITOR:
case FRAME_PCB_DISPLAY3D:
default:
return Pgm().GetSettingsManager().GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" );
return Pgm().GetSettingsManager().GetAppSettings<PCBNEW_SETTINGS>( pcbnew );
case FRAME_FOOTPRINT_EDITOR:
case FRAME_FOOTPRINT_WIZARD:
return Pgm().GetSettingsManager().GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( "fpedit" );
return Pgm().GetSettingsManager().GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( fpedit );
case FRAME_FOOTPRINT_VIEWER:
case FRAME_FOOTPRINT_CHOOSER:
case FRAME_FOOTPRINT_PREVIEW:
case FRAME_CVPCB:
case FRAME_CVPCB_DISPLAY:
return Pgm().GetSettingsManager().GetAppSettings<CVPCB_SETTINGS>( "cvpcb" );
return Pgm().GetSettingsManager().GetAppSettings<CVPCB_SETTINGS>( cvpcb );
}
}
@ -1230,10 +1234,8 @@ void PCB_PAINTER::draw( const PCB_VIA* aVia, int aLayer )
void PCB_PAINTER::draw( const PAD* aPad, int aLayer )
{
COLOR4D color = m_pcbSettings.GetColor( aPad, aLayer );
const int copperLayer = IsPadCopperLayer( aLayer ) ? aLayer - LAYER_PAD_COPPER_START : aLayer;
const PCB_LAYER_ID& pcbLayer = static_cast<PCB_LAYER_ID>( copperLayer );
PCB_LAYER_ID pcbLayer = static_cast<PCB_LAYER_ID>( copperLayer );
if( IsNetnameLayer( aLayer ) )
{