show only one progress while indexing at a time
diff --git a/core/plugins/org.eclipse.dltk.core/index/org/eclipse/dltk/internal/core/index2/ProgressJob.java b/core/plugins/org.eclipse.dltk.core/index/org/eclipse/dltk/internal/core/index2/ProgressJob.java
index 21992fd..839c8e8 100644
--- a/core/plugins/org.eclipse.dltk.core/index/org/eclipse/dltk/internal/core/index2/ProgressJob.java
+++ b/core/plugins/org.eclipse.dltk.core/index/org/eclipse/dltk/internal/core/index2/ProgressJob.java
@@ -20,6 +20,7 @@
class ProgressJob extends Job {
+ private static transient boolean running;
private JobManager jobManager;
private IProgressMonitor monitor;
@@ -29,19 +30,29 @@
}
protected IStatus run(IProgressMonitor monitor) {
- this.monitor = monitor;
- monitor.beginTask(Messages.manager_indexingTask,
- IProgressMonitor.UNKNOWN);
-
- while (!monitor.isCanceled() && (jobManager.awaitingJobsCount()) > 0) {
- try {
- Thread.sleep(50);
- } catch (InterruptedException e) {
- // ignore
- }
+ if (running) {
+ // Allow only one progress job
+ return Status.CANCEL_STATUS;
}
- monitor.done();
- return Status.OK_STATUS;
+ running = true;
+ try {
+ this.monitor = monitor;
+ monitor.beginTask(Messages.manager_indexingTask,
+ IProgressMonitor.UNKNOWN);
+
+ while (!monitor.isCanceled()
+ && (jobManager.awaitingJobsCount()) > 0) {
+ try {
+ Thread.sleep(50);
+ } catch (InterruptedException e) {
+ // ignore
+ }
+ }
+ monitor.done();
+ return Status.OK_STATUS;
+ } finally {
+ running = false;
+ }
}
public void subTask(String message) {