Fix thread-safety issue with some global wxStrings.
These cause intermittent crashes in footprint loading. See
comments in code.
(cherry picked from commit 5e8e2570ba
)
This commit is contained in:
parent
9d241ba812
commit
9230189f62
|
@ -68,40 +68,40 @@ static wxString FormatWildcardExt( const wxString& aWildcard )
|
|||
}
|
||||
|
||||
|
||||
const wxString SchematicSymbolFileExtension( "sym" );
|
||||
const wxString SchematicLibraryFileExtension( "lib" );
|
||||
const wxString SchematicBackupFileExtension( "bak" );
|
||||
const std::string SchematicSymbolFileExtension( "sym" );
|
||||
const std::string SchematicLibraryFileExtension( "lib" );
|
||||
const std::string SchematicBackupFileExtension( "bak" );
|
||||
|
||||
const wxString VrmlFileExtension( "wrl" );
|
||||
const std::string VrmlFileExtension( "wrl" );
|
||||
|
||||
const wxString ProjectFileExtension( "pro" );
|
||||
const wxString SchematicFileExtension( "sch" );
|
||||
const wxString NetlistFileExtension( "net" );
|
||||
const wxString ComponentFileExtension( "cmp" );
|
||||
const wxString GerberFileExtension( "gbr" );
|
||||
const wxString GerberJobFileExtension( "gbrjob" );
|
||||
const wxString HtmlFileExtension( wxT( "html" ) );
|
||||
const std::string ProjectFileExtension( "pro" );
|
||||
const std::string SchematicFileExtension( "sch" );
|
||||
const std::string NetlistFileExtension( "net" );
|
||||
const std::string ComponentFileExtension( "cmp" );
|
||||
const std::string GerberFileExtension( "gbr" );
|
||||
const std::string GerberJobFileExtension( "gbrjob" );
|
||||
const std::string HtmlFileExtension( "html" );
|
||||
|
||||
const wxString LegacyPcbFileExtension( "brd" );
|
||||
const wxString KiCadPcbFileExtension( "kicad_pcb" );
|
||||
const wxString PageLayoutDescrFileExtension( "kicad_wks" );
|
||||
const std::string LegacyPcbFileExtension( "brd" );
|
||||
const std::string KiCadPcbFileExtension( "kicad_pcb" );
|
||||
const std::string PageLayoutDescrFileExtension( "kicad_wks" );
|
||||
|
||||
const wxString PdfFileExtension( "pdf" );
|
||||
const wxString MacrosFileExtension( "mcr" );
|
||||
const wxString DrillFileExtension( "drl" );
|
||||
const wxString SVGFileExtension( "svg" );
|
||||
const wxString ReportFileExtension( "rpt" );
|
||||
const wxString FootprintPlaceFileExtension( "pos" );
|
||||
const wxString KiCadLib3DShapesPathExtension( "3dshapes" ); ///< 3D shapes default libpath
|
||||
const std::string PdfFileExtension( "pdf" );
|
||||
const std::string MacrosFileExtension( "mcr" );
|
||||
const std::string DrillFileExtension( "drl" );
|
||||
const std::string SVGFileExtension( "svg" );
|
||||
const std::string ReportFileExtension( "rpt" );
|
||||
const std::string FootprintPlaceFileExtension( "pos" );
|
||||
const std::string KiCadLib3DShapesPathExtension( "3dshapes" ); ///< 3D shapes default libpath
|
||||
|
||||
const wxString KiCadFootprintLibPathExtension( "pretty" ); ///< KICAD PLUGIN libpath
|
||||
const wxString LegacyFootprintLibPathExtension( "mod" );
|
||||
const wxString EagleFootprintLibPathExtension( "lbr" );
|
||||
const std::string KiCadFootprintLibPathExtension( "pretty" ); ///< KICAD PLUGIN libpath
|
||||
const std::string LegacyFootprintLibPathExtension( "mod" );
|
||||
const std::string EagleFootprintLibPathExtension( "lbr" );
|
||||
|
||||
const wxString KiCadFootprintFileExtension( "kicad_mod" );
|
||||
const wxString GedaPcbFootprintLibFileExtension( "fp" );
|
||||
const wxString SpecctraDsnFileExtension( "dsn" );
|
||||
const wxString IpcD356FileExtension( "d356" );
|
||||
const std::string KiCadFootprintFileExtension( "kicad_mod" );
|
||||
const std::string GedaPcbFootprintLibFileExtension( "fp" );
|
||||
const std::string SpecctraDsnFileExtension( "dsn" );
|
||||
const std::string IpcD356FileExtension( "d356" );
|
||||
|
||||
|
||||
const wxString AllFilesWildcard( _( "All files (*)|*" ) );
|
||||
|
|
|
@ -46,42 +46,44 @@
|
|||
* @{
|
||||
*/
|
||||
|
||||
extern const wxString AllFilesWildcard;
|
||||
// Do NOT use wxString for these. wxStrings are not thread-safe, even when const. (For the
|
||||
// curious the UTF8 cacheing strategy puts iterators in a linked list. Insertion and removal
|
||||
// from the linked list is not thread-safe.)
|
||||
|
||||
extern const wxString SchematicSymbolFileExtension;
|
||||
extern const wxString SchematicLibraryFileExtension;
|
||||
extern const wxString SchematicBackupFileExtension;
|
||||
extern const std::string SchematicSymbolFileExtension;
|
||||
extern const std::string SchematicLibraryFileExtension;
|
||||
extern const std::string SchematicBackupFileExtension;
|
||||
|
||||
extern const wxString VrmlFileExtension;
|
||||
extern const wxString ProjectFileExtension;
|
||||
extern const wxString SchematicFileExtension;
|
||||
extern const wxString NetlistFileExtension;
|
||||
extern const wxString GerberFileExtension;
|
||||
extern const wxString GerberJobFileExtension;
|
||||
extern const wxString HtmlFileExtension;
|
||||
extern const std::string VrmlFileExtension;
|
||||
extern const std::string ProjectFileExtension;
|
||||
extern const std::string SchematicFileExtension;
|
||||
extern const std::string NetlistFileExtension;
|
||||
extern const std::string GerberFileExtension;
|
||||
extern const std::string GerberJobFileExtension;
|
||||
extern const std::string HtmlFileExtension;
|
||||
|
||||
extern const wxString LegacyPcbFileExtension;
|
||||
extern const wxString KiCadPcbFileExtension;
|
||||
extern const std::string LegacyPcbFileExtension;
|
||||
extern const std::string KiCadPcbFileExtension;
|
||||
#define PcbFileExtension KiCadPcbFileExtension // symlink choice
|
||||
extern const wxString PageLayoutDescrFileExtension;
|
||||
extern const std::string PageLayoutDescrFileExtension;
|
||||
|
||||
extern const wxString LegacyFootprintLibPathExtension;
|
||||
extern const wxString PdfFileExtension;
|
||||
extern const wxString MacrosFileExtension;
|
||||
extern const wxString ComponentFileExtension;
|
||||
extern const wxString DrillFileExtension;
|
||||
extern const wxString SVGFileExtension;
|
||||
extern const wxString ReportFileExtension;
|
||||
extern const wxString FootprintPlaceFileExtension;
|
||||
extern const wxString KiCadFootprintFileExtension;
|
||||
extern const wxString KiCadFootprintLibPathExtension;
|
||||
extern const wxString GedaPcbFootprintLibFileExtension;
|
||||
extern const wxString EagleFootprintLibPathExtension;
|
||||
extern const wxString ComponentFileExtension;
|
||||
extern const wxString PageLayoutDescrFileExtension;
|
||||
extern const wxString KiCadLib3DShapesPathExtension;
|
||||
extern const wxString SpecctraDsnFileExtension;
|
||||
extern const wxString IpcD356FileExtension;
|
||||
extern const std::string LegacyFootprintLibPathExtension;
|
||||
extern const std::string PdfFileExtension;
|
||||
extern const std::string MacrosFileExtension;
|
||||
extern const std::string ComponentFileExtension;
|
||||
extern const std::string DrillFileExtension;
|
||||
extern const std::string SVGFileExtension;
|
||||
extern const std::string ReportFileExtension;
|
||||
extern const std::string FootprintPlaceFileExtension;
|
||||
extern const std::string KiCadFootprintFileExtension;
|
||||
extern const std::string KiCadFootprintLibPathExtension;
|
||||
extern const std::string GedaPcbFootprintLibFileExtension;
|
||||
extern const std::string EagleFootprintLibPathExtension;
|
||||
extern const std::string ComponentFileExtension;
|
||||
extern const std::string PageLayoutDescrFileExtension;
|
||||
extern const std::string KiCadLib3DShapesPathExtension;
|
||||
extern const std::string SpecctraDsnFileExtension;
|
||||
extern const std::string IpcD356FileExtension;
|
||||
|
||||
/**
|
||||
* @}
|
||||
|
@ -98,6 +100,8 @@ extern const wxString IpcD356FileExtension;
|
|||
* @{
|
||||
*/
|
||||
|
||||
extern const wxString AllFilesWildcard;
|
||||
|
||||
extern wxString ComponentFileWildcard();
|
||||
extern wxString PageLayoutDescrFileWildcard();
|
||||
extern wxString SchematicSymbolFileWildcard();
|
||||
|
|
Loading…
Reference in New Issue