diff --git a/core/org.eclipse.cdt.core/ChangeLog b/core/org.eclipse.cdt.core/ChangeLog index 48caf8ea3f0..e3770feb872 100644 --- a/core/org.eclipse.cdt.core/ChangeLog +++ b/core/org.eclipse.cdt.core/ChangeLog @@ -1,3 +1,6 @@ +2004-06-18 Andrew Niefer + - DeltaProcessor.updateIndexRemoveResource() : discard if removing a project, discard index jobs for that project. + 2004-06-15 Hoda Amer Fix for PR 63207: ITranslationUnit.getElementAtOffset(i) does not factor in multiple namespace decl diff --git a/core/org.eclipse.cdt.core/index/ChangeLog b/core/org.eclipse.cdt.core/index/ChangeLog index 44b116fd378..6813ea9510a 100644 --- a/core/org.eclipse.cdt.core/index/ChangeLog +++ b/core/org.eclipse.cdt.core/index/ChangeLog @@ -1,3 +1,9 @@ +2004-06-18 Andrew Niefer + - call InderManager.jobFinishedNotification( this ) from IndexRequest.cancel() so that the IndexManager's jobSet doesn't + become stale. + - in JobManager.discardJobs, move getting the old enabledState into the synchronized block so that we can be sure its + reset correctly + 2004-06-16 Bogdan Gheorghe - Removed reporting index failed messages from log diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/IndexRequest.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/IndexRequest.java index 8a5197b5adc..c1cc0a221f7 100644 --- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/IndexRequest.java +++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/IndexRequest.java @@ -34,13 +34,14 @@ public abstract class IndexRequest implements IJob { } public void cancel() { + this.manager.jobFinishedNotification( this ); this.manager.jobWasCancelled(this.indexPath); this.isCancelled = true; } public boolean isReadyToRun() { IProject project = CCorePlugin.getWorkspace().getRoot().getProject(indexPath.segment(0)); - if ( !this.manager.isIndexEnabled( project ) ) + if ( !project.isAccessible() || !this.manager.isIndexEnabled( project ) ) return false; // tag the index as inconsistent diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/DeltaProcessor.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/DeltaProcessor.java index 34863f257b8..85a67d5c5f6 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/DeltaProcessor.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/DeltaProcessor.java @@ -584,7 +584,10 @@ public class DeltaProcessor { switch (element.getElementType()) { case ICElement.C_PROJECT : - indexManager.removeIndexFamily(element.getCProject().getProject().getFullPath()); + IPath fullPath = element.getCProject().getProject().getFullPath(); + if( delta.getKind() == IResourceDelta.CHANGED ) + indexManager.discardJobs(fullPath.segment(0)); + indexManager.removeIndexFamily(fullPath); // NB: Discarding index jobs belonging to this project was done during PRE_DELETE break; // NB: Update of index if project is opened, closed, or its c nature is added or removed diff --git a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/processing/JobManager.java b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/processing/JobManager.java index b57e25ca61f..39b53ffca55 100644 --- a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/processing/JobManager.java +++ b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/processing/JobManager.java @@ -112,12 +112,13 @@ public abstract class JobManager implements Runnable { if (VERBOSE) JobManager.verbose("DISCARD background job family - " + jobFamily); //$NON-NLS-1$ - int oldEnabledState = enabledState(); + int oldEnabledState = 0; try { IJob currentJob; // cancel current job if it belongs to the given family synchronized(this){ currentJob = this.currentJob(); + oldEnabledState = enabledState(); disable(); } if (currentJob != null