1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-23 14:42:11 +02:00

Bug 411605: Improved fix for regression in ResourceLookup, such that

project description is loaded less often.
This commit is contained in:
Markus Schorn 2013-08-26 14:59:43 +02:00
parent 11c76639db
commit ecdbe69720

View file

@ -115,31 +115,29 @@ public class ResourceLookup {
* reaching the next for-loop - that loop is expensive as it might cause the loading of unnecessary
* project-descriptions.
*/
int filesInPreferredProject= 0;
if (preferredProject != null) {
for (IFile file : files) {
if (file.getProject().equals(preferredProject) && file.isAccessible()) {
if (best != null) {
// At least two accessible files in preferred project.
best = null;
break;
}
filesInPreferredProject++;
best= file;
}
}
}
// One accessible file in preferred project.
if(best != null)
if (filesInPreferredProject == 1)
return best;
int bestRelevance= -1;
for (IFile file : files) {
int relevance= FileRelevance.getRelevance(file, preferredProject, PathCanonicalizationStrategy.resolvesSymbolicLinks(), originalLocation);
if (best == null || relevance > bestRelevance ||
(relevance == bestRelevance &&
best.getFullPath().toString().compareTo(file.getFullPath().toString()) > 0)) {
bestRelevance= relevance;
best= file;
if (filesInPreferredProject==0 || file.getProject().equals(preferredProject)) {
int relevance= FileRelevance.getRelevance(file, preferredProject, PathCanonicalizationStrategy.resolvesSymbolicLinks(), originalLocation);
if (best == null || relevance > bestRelevance ||
(relevance == bestRelevance &&
best.getFullPath().toString().compareTo(file.getFullPath().toString()) > 0)) {
bestRelevance= relevance;
best= file;
}
}
}
return best;