Skip to content

Commit

Permalink
Only rescan libraries folders when really needed
Browse files Browse the repository at this point in the history
Scanning libraries is an heavy task if the sketchbook becomes huge;
This patch targets two points:

- remove the rescan() after setLibrariesFolders(), which already performs a rescan
- call setLibrariesFolders() only when the folder list has changed
  - This ensures that no scan is performed when changing board in the same architecture

Could mitigate #6350
  • Loading branch information
facchinm committed Jun 23, 2017
1 parent 1dfd4a2 commit 0c3b340
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ public class LibrariesIndexer {
private LibrariesIndex index;
private final LibraryList installedLibraries = new LibraryList();
private final LibraryList installedLibrariesWithDuplicates = new LibraryList();
private List<File> librariesFolders;
private ArrayList<File> librariesFolders;
private final File indexFile;
private final File stagingFolder;
private File sketchbookLibrariesFolder;
Expand Down Expand Up @@ -101,11 +101,15 @@ private void parseIndex(File file) throws IOException {
}
}

public void setLibrariesFolders(List<File> _librariesFolders) {
public void setLibrariesFolders(ArrayList<File> _librariesFolders) {
librariesFolders = _librariesFolders;
rescanLibraries();
}

public ArrayList<File> getLibrariesFolders() {
return librariesFolders;
}

public void rescanLibraries() {
// Clear all installed flags
installedLibraries.clear();
Expand Down
7 changes: 4 additions & 3 deletions arduino-core/src/processing/app/BaseNoGui.java
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ public class BaseNoGui {
public static Map<String, LibraryList> importToLibraryTable;

// XXX: Remove this field
static private List<File> librariesFolders;
static private ArrayList<File> librariesFolders;

static UserNotifier notifier = new BasicUserNotifier();

Expand Down Expand Up @@ -679,8 +679,9 @@ static public void onBoardOrPortChange() {
// Libraries located in the latest folders on the list can override
// other libraries with the same name.
librariesIndexer.setSketchbookLibrariesFolder(getSketchbookLibrariesFolder());
librariesIndexer.setLibrariesFolders(librariesFolders);
librariesIndexer.rescanLibraries();
if (librariesIndexer.getLibrariesFolders() == null || !librariesIndexer.getLibrariesFolders().equals(librariesFolders)) {
librariesIndexer.setLibrariesFolders(librariesFolders);
}

populateImportToLibraryTable();
}
Expand Down

0 comments on commit 0c3b340

Please sign in to comment.