Skip to main content
summaryrefslogtreecommitdiffstats
path: root/debug
diff options
context:
space:
mode:
authorWarren Paul2008-04-24 20:46:22 +0000
committerWarren Paul2008-04-24 20:46:22 +0000
commit0aa67427b4d5001c20a5c8219e73eac63c9292a9 (patch)
treea2150aec519a715b3450c3776442cc3f517b3d05 /debug
parent2044602e4b29d8f4734acd802e7c9d6b79c362ce (diff)
downloadorg.eclipse.cdt-0aa67427b4d5001c20a5c8219e73eac63c9292a9.tar.gz
org.eclipse.cdt-0aa67427b4d5001c20a5c8219e73eac63c9292a9.tar.xz
org.eclipse.cdt-0aa67427b4d5001c20a5c8219e73eac63c9292a9.zip
synchronize the building of the exe's list.
Diffstat (limited to 'debug')
-rw-r--r--debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/executables/ExecutablesManager.java32
-rw-r--r--debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/executables/StandardExecutableProvider.java63
2 files changed, 50 insertions, 45 deletions
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/executables/ExecutablesManager.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/executables/ExecutablesManager.java
index e0df32632bf..bccdd61886e 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/executables/ExecutablesManager.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/executables/ExecutablesManager.java
@@ -100,24 +100,28 @@ public class ExecutablesManager extends PlatformObject {
if (tempDisableRefresh) {
return Status.OK_STATUS;
}
-
- ArrayList<Executable> oldList = executables;
- executables = new ArrayList<Executable>();
- synchronized (executableProviders) {
- monitor.beginTask("Refresh Executables", executableProviders.size());
- for (IExecutableProvider provider : executableProviders) {
- executables.addAll(provider.getExecutables(new SubProgressMonitor(monitor, 1)));
+
+ synchronized (executables) {
+ ArrayList<Executable> oldList = new ArrayList<Executable>(executables);
+ executables.clear();
+
+ synchronized (executableProviders) {
+ monitor.beginTask("Refresh Executables", executableProviders.size());
+ for (IExecutableProvider provider : executableProviders) {
+ executables.addAll(provider.getExecutables(new SubProgressMonitor(monitor, 1)));
+ }
+ monitor.done();
}
- monitor.done();
- }
- refreshNeeded = false;
+ refreshNeeded = false;
- synchronized (changeListeners) {
- for (IExecutablesChangeListener listener : changeListeners) {
- listener.executablesChanged(new ExecutablesChangeEvent(oldList, executables) {
- });
+ synchronized (changeListeners) {
+ for (IExecutablesChangeListener listener : changeListeners) {
+ listener.executablesChanged(new ExecutablesChangeEvent(oldList, executables) {
+ });
+ }
}
}
+
return monitor.isCanceled() ? Status.CANCEL_STATUS : Status.OK_STATUS;
}
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/executables/StandardExecutableProvider.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/executables/StandardExecutableProvider.java
index cdb81086350..457250812a7 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/executables/StandardExecutableProvider.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/executables/StandardExecutableProvider.java
@@ -123,43 +123,44 @@ public class StandardExecutableProvider implements IResourceChangeListener, ICPr
}
public Collection<Executable> getExecutables(IProgressMonitor monitor) {
- executables.clear();
-
- IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
- IProject[] projects = root.getProjects();
-
- monitor.beginTask("Checking C/C++ Projects", projects.length);
-
- for (IProject project : projects) {
-
- if (monitor.isCanceled())
- break;
-
- try {
- if (CoreModel.hasCNature(project)) {
- CModelManager manager = CModelManager.getDefault();
- ICProject cproject = manager.create(project);
- try {
- IBinary[] binaries = cproject.getBinaryContainer().getBinaries();
- for (IBinary binary : binaries) {
- if (binary.isExecutable() || binary.isSharedLib()) {
- IPath exePath = binary.getResource().getLocation();
- if (exePath == null)
- exePath = binary.getPath();
- Executable exe = new Executable(exePath, project, binary.getResource());
- executables.add(exe);
+ synchronized (executables) {
+ executables.clear();
+
+ IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
+ IProject[] projects = root.getProjects();
+
+ monitor.beginTask("Checking C/C++ Projects", projects.length);
+
+ for (IProject project : projects) {
+
+ if (monitor.isCanceled())
+ break;
+
+ try {
+ if (CoreModel.hasCNature(project)) {
+ CModelManager manager = CModelManager.getDefault();
+ ICProject cproject = manager.create(project);
+ try {
+ IBinary[] binaries = cproject.getBinaryContainer().getBinaries();
+ for (IBinary binary : binaries) {
+ if (binary.isExecutable() || binary.isSharedLib()) {
+ IPath exePath = binary.getResource().getLocation();
+ if (exePath == null)
+ exePath = binary.getPath();
+ Executable exe = new Executable(exePath, project, binary.getResource());
+ executables.add(exe);
+ }
}
+ } catch (CModelException e) {
}
- } catch (CModelException e) {
}
+ } catch (Exception e) {
+ e.printStackTrace();
}
- } catch (Exception e) {
- e.printStackTrace();
+ monitor.worked(1);
}
- monitor.worked(1);
+ monitor.done();
}
- monitor.done();
-
return executables;
}

Back to the top